Unity Inspector:当布尔检查时需要元素



我如何自动化检查器,如果你不点击一个序列化的布尔值,组件不显示,当你点击它,相应的组件自动显示(好像它是必需的)?

未检查掉落日志

你看,我没有检查布尔值,另一个组件确实没有显示。但当我点击布尔值时,我希望这个脚本自动出现在检查器上。是这样的:删除日志检查图像

我该怎么做?

您需要创建自定义编辑器。

官方文档

using UnityEngine;
public class MyScript : MonoBehaviour
{
public bool Checked = false;
public GameObject SomeField;
}

编辑脚本。

using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(MyScript))]
[CanEditMultipleObjects]
public class MyScriptEditor : Editor 
{
SerializedProperty Checked;
SerializedProperty SomeField;

void OnEnable()
{
Checked = serializedObject.FindProperty("Checked");
SomeField = serializedObject.FindProperty("SomeField");
}
public override void OnInspectorGUI()
{
var myScript = (MyScript)target;
serializedObject.Update();
EditorGUILayout.PropertyField(Checked);
if(myScript.Checked)
EditorGUILayout.PropertyField(SomeField);
serializedObject.ApplyModifiedProperties();
}
}

你可以使用属性ExecuteInEditMode,然后检查更新函数,如果布尔值为真,然后添加第二个脚本到基础组件这里我附加了一个简单的脚本,给你的想法

[ExecuteInEditMode]
public class TestScript : MonoBehaviour
{
public bool show = false;
void Update()
{
if (show)
{
base.gameObject.AddComponent<objectyouwanttoadd>();
}
}
}

你也可以实现逻辑,如果其他对象已经附加或没有,如果你取消勾选show bool,然后删除添加的对象,如果当前平台是unity Editor,那么只附加其他组件等…

相关内容

  • 没有找到相关文章

最新更新