serializedObject FindProperty возвращает значение null - PullRequest
2 голосов
/ 10 июля 2019

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

public class GameManager : MonoBehaviour
{
   [SerializeField]
   public List<Bot<BotType1>> Bots = new List<BotCar<BotType1>>();
}

[CustomEditor(typeof(GameManager))]
GameManagerEditor : Editor
{
   private SerializedProperty botsProperty;

   void OnEnable()
   {
      botsProperty = serializedObject.FindProperty("Bots");
   }
}

Я получаю botsProperty как ноль.

1 Ответ

1 голос
/ 10 июля 2019

Unity может сериализовать только списки сериализуемого типа - от Вручную .

Ваш публичный список List<Bot<BotType1>> Bots происходит от Bot<T>, у которого есть универсальный параметр, это означает, что он не сериализуем. Это означает, что класс в вашем списке Bot<BotType1> нигде не установлен как Serializable.

Для достижения вашего результата вы должны установить его как Serializable.

[Serializable] public class BotOfType1 : Bot<BotType1>{}

Тогда ваш список станет:

public class GameManager : MonoBehaviour
{
   [SerializeField]
   public List<BotOfType1> Bots = new List<BotOfType1>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...