普通脚本中定义
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public string _name;
public int _age;
public GameObject _gameObject;
}
将此脚本拖到物体上(此脚本不在Editor文件夹中)
扩展
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//定义自定义编辑器类可以编辑的对象类型。告诉编辑器类它是用于哪个运行时类型的编辑器。
//此编辑器类TestEditor与类Test关联
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
public override void OnInspectorGUI()
{
var target = (Test)(serializedObject.targetObject);
target._name = EditorGUILayout.TextField("姓名","");
target._age = EditorGUILayout.IntSlider("年龄", target._age, 0, 100);
target._gameObject = (GameObject)EditorGUILayout.ObjectField("物体", target._gameObject,typeof(GameObject), true);
}
}
此脚本放在Editor文件夹中
也可以通过SerializedObject的SerializedProperty完成相同效果。
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
SerializedProperty theName;
SerializedProperty theAge;
SerializedProperty theGameObject;
void OnEnable()
{
theName = serializedObject.FindProperty("_name");
theAge = serializedObject.FindProperty("_age");
theGameObject = serializedObject.FindProperty("_gameObject");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.TextField("姓名","");
EditorGUILayout.IntSlider(theAge, 0, 100, new GUIContent("年龄"));
EditorGUILayout.ObjectField(theGameObject,typeof(GameObject));
serializedObject.ApplyModifiedProperties();
}
}
此时姓名一栏无法更改,留作以后处理。