私有/公共字段
这是示例
这就是我定义变量的方式:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using UnityEditor;
public class Myscript : GridLayoutGroup
{
[SerializeField] private bool ishhh;
}
答案 0 :(得分:1)
大多数Unity内置组件都有一个[CustomEditor]
覆盖默认的Inspector。
具体来说,GridLayoutGroup
有一个名为GridLayoutGroupEditor
的自定义检查器,它将覆盖从GridLayoutGroup
派生的任何类的检查器。
→您必须继承它才能为从GridLayoutGroup
派生的类创建自定义编辑器。
为了使其他字段可见,您可以执行类似
的操作using UnityEditor;
...
[CustomEditor(typeof(Myscript))]
public class MyScriptEditor : GridLayoutGroupEditor
{
private SerializedProperty ishhh;
// Called when the Inspector is loaded
// Usually when the according GameObject gets selected in the hierarchy
private void OnEnable ()
{
// "Link" the SerializedProperty to a real serialized field
// (public fields are serialized automatically)
ishhh = serializedObject.FindProperty("ishhh");
}
// Kind of the Inspector's Update method
public override void OnInpectorGUI ()
{
// Draw the default inspector
// base.OnInspectorGUI();
// Fetch current values into the serialized properties
serializedObject.Update();
// Automatically uses the correct field drawer according to the property type
EditorGUILayout.PropertyField(ishhh);
// Write back changed values to the real component
serializedObject.ApplyModifiedProperties();
}
}
重要提示::将此脚本放置在名为Editor
的文件夹中,以便在构建中将其删除,以避免与UnityEditor
名称空间有关的内部错误。
或者(因为我可以看到示例代码中已经有一个using UnityEditor
),可以将其保留在同一脚本中,但是随后您必须手动使用#if Pre-Processors
才能剥离所有代码-blocks / -line off使用UnityEditor
名称空间中的内容,例如
#if UNITY_EDITOR
using UnityEditor;
#endif
...
#if UNITY_EDITOR
// any code using UnityEditor
#endif
否则,由于UnityEditor
仅存在于Unity Editor本身,并且已完全剥离用于构建,因此您将无法构建应用。
注意:在智能手机上键入内容,因此没有保修,但我希望这个主意会清楚