通过inspector窗口来初始化一些成员变量,弥补了继承MonoBehaviour类不能使用new方法初始化操作。
1.默认私有和保护无法显示编辑
private int i1;
protected String str1;
2.让私有得和保护得也可以被显示
加上强制序列化特性
[SerializeField]
序列化:把一个对象保存到一个文件或者数据库字段中
[SerializeField]
private int privateInt;
[SerializeField]
protected String protectedStr;
3.公共的可显示编辑
public int publicInt = 10;
public bool pubulicBool = false;
4.公共的也不让其显示编辑
在变量前添加特性[HideInInspector]
[hideInInspector]
public int publicInt2 = 50;
5.大部分类型都能显示编辑
public Enum E_TestEnum
{
Normal,
Player,
Monster
}
//结构体
public struct MyStruct
{
public int age;
public bool sex;
}
public class MyClass
{
public int age;
public bool sex;
}
//一个脚本里面只能有一个继承MonoBehaviour类
public class Lesson2 : MonoBehaviour
{
public int[] array;
public List<int> list;
public E_TestEnum type;
public GameObject gameObj;
//自定义,字典不能被Inspector窗口显示
public Dictionary<int,String> doc;
//自定义类型变量
public MyStruct myStruct;
public MyClass;
}
6.让自定义类可以被访问
//加上序列化特性[System.Serializable]
//字典怎么都不得行
public Enum E_TestEnum
{
Normal,
Player,
Monster
}
//结构体
[System.Serializeble]
public struct MyStruct
{
public int age;
public bool sex;
}
[System.Serializeble]
public class MyClass
{
public int age;
public bool sex;
}
//一个脚本里面只能有一个继承MonoBehaviour类
public class Lesson2 : MonoBehaviour
{
public int[] array;
public List<int> list;
public E_TestEnum type;
public GameObject gameObj;
//自定义,字典不能被Inspector窗口显示
public Dictionary<int,String> doc;
//自定义类型变量
public MyStruct myStruct;
public MyClass;
}
注意:前六个知识点非常重要,非常常用
7.一些辅助特性
(1).分组说明特性Header
写法:[Header("分组说明")]
[Header("基础属性")]
public int age;
public bool sex;
[Header("战斗属性")]
public int atk;
public int def;
(2).悬停注释Tooltip
写法:[Tooltip("说明内容")]
[Tooltip("闪避")]
public int miss;
(3).间隔特性 Space()
写法:[Space()]
[Space()]
public int crit;
(4).修饰数值的滑条范围Range
写法:[Range(最小值,最大值)]
[Range(0,10)]
public float luck;
可以用拖动跳改变值
(5).多行显示字符串,默认不写3行写参数就是对应行
写法:[Multiline(4)]
[Multiline()]
public string tips;
(6).滚动条显示字符串
默认不写参数就是超过3行显示滚动条
写法:[TextArea(3,4)]//最少显示3行,最多4行,超过4行就显示滚动条
(7).为变量添加快捷方法 ContextMenuItem
//参数1 显示按钮名
//参数2 方法名 不能有参数
写法:[ContextMenuItem("显示按钮名","方法名")]
[ContextMenuItem("重置钱","Test")]
public int money;
//方法无返回值,无参数
public void Test()
{
money = 99;
}
在money处点击右键
执行结果
(8) 为方法添加特性能够在Inspector中执行
写法:[ContextMenu("测试函数")]
用来测试
[ContextMenu("哈哈哈哈")]
prviate void TestFun()
{
print("测试方法");
}
结果