В Unity, как найти тип отсутствующего скрипта? - PullRequest
0 голосов
/ 28 сентября 2019

некоторые из моих объектов теперь имеют «отсутствующие» сценарии, и я не могу вспомнить, какими они были когда-то.

Я не могу просто удалить их, потому что не хочу терять их поля.Я не знаю почему, но согласно моему опыту, недопустимые сценарии могут все еще помнить его значения открытого поля.Если я найду правильный тип сценария, поля вернутся.

Я нахожу статью об этом, но все еще не понимаю:

Как программно найти имя пропавшегоscript?

Он использует Component.GetType(), но отсутствуют скрипты null.Я не могу использовать GetType() из null, не так ли?Но кто-то говорит, что статья решает проблему.Я уверен, что что-то пропустил.

Я действительно надеюсь найти их типы или, по крайней мере, некоторые подсказки, такие как открытые поля.

1 Ответ

1 голос
/ 30 сентября 2019

Параметры импорта GameObject в сцене должны храниться в файле сцены.Просто найдите имя GameObject в метафайле, и вы должны увидеть все параметры импорта, включая сериализованные значения и компоненты.

Например, вот усеченная версия MainCamera GameObject (вместе с дополнительнымикомпоненты объекта), извлеченные из файла .unity (сцена):

--- !u!1 &1834266099
GameObject:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  serializedVersion: 5
  m_Component:
  - component: {fileID: 1834266104}
  - component: {fileID: 1834266103}
  - component: {fileID: 1834266102}
  - component: {fileID: 1834266101}
  - component: {fileID: 1834266100}
  - component: {fileID: 1834266105}
  - component: {fileID: 1834266106}
  m_Layer: 0
  m_Name: Main Camera
  m_TagString: MainCamera
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!81 &1834266100
...
--- !u!114 &1834266105
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 1834266099}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: ff26db721962cdf4a8edcdfa9a767d2a, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  profile: {fileID: 11400000, guid: b7a430b0531a4cc44b388f7e3bf10d06, type: 2}
--- !u!114 &1834266106

Как видите, здесь хранятся имя объекта и его свойства.Дается GUID сценария MonoBehaviour, который можно легко сопоставить с метафайлами сценариев C #, чтобы определить, к какому сценарию относится этот GUID.В качестве альтернативы вы можете попытаться определить путь к ресурсу из GUID, используя метод AssetDatabase.GUIDToAssetPath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...