我已经在Unity中编程超过三年了,我一直都被公共变量填充我的检查器屏幕的问题所困扰。经过几个小时的互联网搜索,我遇到了许多深入的编辑器GUI教程和演示,但他们从未解释过如何做我想做的事情,那就是将我的所有变量组织成列表。
示例:我想创建一个公共bool变量,当在编辑器中启用该变量时,会打开一个程序员/艺术家可以与之交互的新变量列表。可以把它想象成一个父对象,它有一堆只在父对象启用时出现的子对象。
最近,我听说过只有在编辑器启用且游戏没有运行时才运行的功能,这可能就是解决问题的方法。现在我不知道在哪里寻找答案。
答案 0 :(得分:0)
您所描述的是Unity完全支持的自定义检查器。
这是一个很好的入门指南:Building a Custom Inspector
下面的答案提供了here
[CustomEditor(typeof(YourScript))]
public class YourScriptEditor : Editor
{
private bool AToggle = false;
private YourScript _evCtrl = null;
void OnEnable()
{
_evCtrl = (YourScript)target;
}
public override void OnInspectorGUI()
{
//blablabla
GUILayout.BeginHorizontal();
GUILayout.Label("A Features", GUILayout.Width(70));
AToggle = EditorGUILayout.Toggle(AToggle);
GUILayout.EndHorizontal();
if (AToggle)
{
GUILayout.Space(5);
GUILayout.BeginHorizontal();
GUILayout.Label("This Var", GUILayout.Width(70));
_evCtrl.ThisVar = EditorGUILayout.TextField(_evCtrl.ThisVar);
GUILayout.EndHorizontal();
GUILayout.Space(5);
GUILayout.BeginHorizontal();
GUILayout.Label("And This One", GUILayout.Width(70));
_evCtrl.AndThisOne = EditorGUILayout.TextField(_evCtrl.AndThisOne);
GUILayout.EndHorizontal();
GUILayout.Space(5);
GUILayout.BeginHorizontal();
GUILayout.Label("And This Can Be Slider", GUILayout.Width(70));
_evCtrl.AndThisCanBeSlider = EditorGUILayout.Slider(_evCtrl.AndThisCanBeSlider, 0f, 100f);
GUILayout.EndHorizontal();
}
//blablabla
}
}