Как я могу определить, является ли объект сборным активом или экземпляром этого сборного? - PullRequest
0 голосов
/ 18 февраля 2019

Как я могу определить, является ли игровой объект префаб-активом или экземпляром префаба в моей сцене?

Я попытался создать собственный редактор и выполнить

public override void OnInspectorGUI()
{
   if (EditorUtility.IsPersistent(this.target))
   {
      Debug.Log("is persisent");
   }
   else
   {
      Debug.Log("is not persistent");
   }
}

Но независимо от того, выбираю ли я сборный актив в представлении «Проект» или я выбираю готовый экземпляр в моей сцене, оба сценария печати «не являютсяpersistent "

Причина, по которой я это делаю, заключается в том, что я хочу иметь MonoBehaviour с полем Guid, и MonoBehaviour должен генерировать уникальный GUID для себя, если он является частью игрового объекта в сцене, но оно должно оставить поле Guid пустым, если оно входит в состав сборного ресурса (чтобы каждый экземпляр того же сборного объекта получал уникальный GUID).

1 Ответ

0 голосов
/ 23 февраля 2019

Я нашел решение, хотя не думаю, что оно идеальное.

public override void OnInspectorGUI()
{
   var component = this.target as MyScript;

   if (component.gameObject.scene.name.Equals(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name))
   {
      Debug.Log("editing the prefab instance in the scene");          
   }
   else
   {
      Debug.Log("editing the prefab asset");       
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...