Unity3D.Создание и отображение объектов enum с помощью специального инспектора - PullRequest
0 голосов
/ 08 марта 2019

Мой скрипт извлекает все дочерние объекты из родительского объекта. Мне нужно назначить материалы индивидуально дочерним объектам или материал всем объектам через родительский объект.

В настоящее время, когда я меняю дочерний материал, все другие материалы дочернего объекта также меняются.

Как это выглядит в Unity, когда я меняю дочерний материал

Вот мой код

if (includeChildObj == true)
    {
        EditorGUILayout.Foldout(includeChildObj, "List of Child Objects", includeChildObj);
        for (int i = 0; i < Geometry.getChildNames().Count; i++) // loop through all child objects
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label(Geometry.getChildNames()[i]); // display object name
       EditorGUILayout.PropertyField(serializedObject.FindProperty("SelectMaterial")); // find an enum which allows the dropdown list
            GUILayout.EndHorizontal();
            serializedObject.ApplyModifiedProperties();
        }              
    }

Как видно, внутри цикла FOR для каждого объекта Geometry мне нужно создать новый объект соответствующего перечисления. Я не уверен, как это сделать, поскольку я использую CustomEditor, а не Monobehaviour.

Спасибо!

1 Ответ

1 голос
/ 08 марта 2019

Похоже, что вы ссылаетесь на один и тот же сериализованный объект в каждой итерации цикла for. Таким образом, в каждой итерации читается и присваивается только одно значение, которое объясняет поведение, которое вы видите. Мне не понятно, каковы ваши требования, но, возможно, вам нужно несколько экземпляров этого сериализованного объекта, по одному на каждого дочернего элемента Geometry?

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