[System.Serializable]
public class MyClass
{
public int id;
public string name;
}
public class Inspector : MonoBehaviour
{
//Inspector窗口中可编辑的就是脚本的成员变量
//私有和保护的成员变量在默认情况下不能被编辑和显示
private int a ;
protected string b ;
//让私有和保护的成员变量也能被显示和编辑
//加上强制序列化字段特性
//[SerializeField]
//序列化就是把一个对象保存到一个文件或数据库字段中去
[SerializeField]
private int priInt;
[SerializeField]
protected string priStr;
private void Start()
{
print(priInt);
print(priStr);
}
//公共的成员变量默认情况下可以显示和编辑
//让公共成员变量不能显示和编辑
//[HideInInspector]
[HideInInspector]
public int pubInt = 1;
//大部分类型都能显示编辑
//字典不能被显示
//一些自定义类型变量class和struct默认不能被显示
//让自定义类型也可以被显示和编辑
//[System.Serializable]
public MyClass myClass;
#region 辅助特性
//分组说明特性Header
//为成员分组
//[Header("说明")]
[Header("基础属性")]
public int age;
public bool gender;
//悬停注释Tooltip
//为变量添加说明
//[Tooltip("说明")]
[Tooltip("闪避")]
public int dodge;
//间隔特性space()
//让两个字段间出现间隔
//[space()]
[Space()]
public int Crit;
//修饰数值的滑条范围Range
//[Range(Min,Max)]
[Range(0f, 10f)]
public float luck;
#endregion
//多行显示字符串 默认不写参数显示3行
//写参数就是对应行
//[Multiline(4)]
[Multiline(5)]
public string tips;
//滚动条显示字符串
//默认不写参数就是超过3行显示滚动条
//[TextArea(3,4)]
//最少显示3行,最多4行,超过4行就显示滚动条
[TextArea(3,4)]
public string tipsStr;
//为变量添加快捷方法 ContextMenuItem
//参数1 显示按钮名
//参数2 方法名 ,该方法不能有参数和返回值
//[ContextMenuItem("显示按钮名","方法名")]
[ContextMenuItem("重置钱", "Test")]
public int money;
private void Test()
{
money = 99;
}
//为方法添加特性让其能够在Inspector中执行
//[ContextMenu("测试函数")]
[ContextMenu("测试内容")]
private void Test2()
{
print("Test2");
}
//Inspector窗口中的变量关联的就是对象的成员变量,运行时改变它们就是在改变成员变量
//脚本挂载在GameObj对象后,再改变脚本中的变量默认值不会影响Inspector中的值
//运行中修改的信息不会保存
}