【发布时间】:2022-07-07 21:43:29
【问题描述】:
问题是我遍历对象数组。 objects 是选择游戏对象的数组。
当我遍历它并创建切换时,当我选中/取消选中单个切换框时,它会选中/取消选中所有切换。我怎样才能让它只切换一个?
我检查的那个我只希望他启用真/假。
循环部分:
for (int i = 0; i < objects.Length; i++)
{
EditorGUIUtility.labelWidth = 50;
EditorGUILayout.BeginHorizontal();
{
GUILayoutOption[] options = { GUILayout.MaxWidth(300.0f), GUILayout.MinWidth(300.0f) };
objects[i] = (GameObject)EditorGUILayout.ObjectField(i.ToString(), objects[i], typeof(GameObject), true, options);
EditorGUIUtility.labelWidth = 112;
include1 = EditorGUILayout.Toggle("Include Children", include1, GUILayout.ExpandWidth(true));
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndScrollView();
EditorGUI.indentLevel--;
}
include1 是我希望能够启用真/假个人的切换。
其余代码:
public void OnGUI()
{
GUILayout.Space(10);
childrenPrefix = EditorGUILayout.TextField("Rename prefix", childrenPrefix);
startIndex = EditorGUILayout.IntField("Start index", startIndex);
includeChildren = EditorGUILayout.Toggle("Include Children", includeChildren);
if (objects.Length == 0)
{
showPosition = false;
}
GUILayout.Space(20);
EditorGUI.BeginChangeCheck();
EditorGUILayout.GetControlRect(true, 16f, EditorStyles.foldout);
Rect foldRect = GUILayoutUtility.GetLastRect();
if (Event.current.type == EventType.MouseUp && foldRect.Contains(Event.current.mousePosition))
{
showPosition = !showPosition;
GUI.changed = true;
Event.current.Use();
}
showPosition = EditorGUI.Foldout(foldRect, showPosition, "Objects");
GUILayout.Space(2);
if (showPosition)
{
EditorGUI.indentLevel++;
scrollPos =
EditorGUILayout.BeginScrollView(scrollPos);
for (int i = 0; i < objects.Length; i++)
{
EditorGUIUtility.labelWidth = 50;
EditorGUILayout.BeginHorizontal();
{
GUILayoutOption[] options = { GUILayout.MaxWidth(300.0f), GUILayout.MinWidth(300.0f) };
objects[i] = (GameObject)EditorGUILayout.ObjectField(i.ToString(), objects[i], typeof(GameObject), true, options);
EditorGUIUtility.labelWidth = 112;
include1 = EditorGUILayout.Toggle("Include Children", include1, GUILayout.ExpandWidth(true));
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndScrollView();
EditorGUI.indentLevel--;
}
GUILayout.FlexibleSpace();
if (GUILayout.Button("Rename Objects"))
{
}
Repaint();
}
【问题讨论】: