Unity3D。使用自定义检查器实例化和显示枚举对象

时间:2019-03-08 10:55:51

标签: c# unity3d

我的脚本从父对象中提取所有子对象。我需要分别将材料分配给子对象或将材料通过父对象分配给所有对象。

当前,当我更改子材质时,所有其他子对象材质也将更改。

How it looks in Unity when I change a child material

这是我的代码

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 个答案:

答案 0 :(得分:1)

似乎在for循环的每次迭代中都引用相同的序列化对象。因此,在每次迭代中只有一个值被读取并分配给它,这解释了您所看到的行为。 我不清楚您的要求是什么,但也许您需要该序列化对象的多个实例,每个Geometry子对象一个?