※ ※ ※ [Header] 标头属性
在代码中声明:
[Header("名称")]
public string roleName;//人名
public string desc;//人物介绍
[Header("角色属性")]
public float hp;//血量
public float mp;//法力值
public float speed;//移动速度
public float atk;//攻击力
public float def;//防御力
编辑器中出现的效果:
※ ※ ※ [Tooltip] 提示信息
在代码中声明:
[Header("名称")]
[Tooltip("该角色在游戏中的名称")]
public string roleName;//人名
[Tooltip("角色的描述信息")]
public string desc;//人物介绍
把鼠标长时间放在变量名上 会 出现的效果:
※ ※ ※ [Space] 添加空行
在代码中声明:
[Header("名称")]
[Space]
[Tooltip("该角色在游戏中的名称")]
public string roleName;//人名
public string nickName;//昵称
[Space]
[Tooltip("角色的描述信息")]
public string desc;//人物介绍
※ ※ ※ [Range()] 规定范围
在代码中声明:
[Header("角色属性")]
[Space]
[Range(0,10000)]//hp的取值范围是0~10000
public float hp;//血量
public float mp;//法力值
public float speed;//移动速度
public float atk;//攻击力
public float def;//防御力
※ ※ ※ [SerializeField] 序列化字段
下面代码中的level字段是私有的。添加此标签可在inspecter面板中显示
[Header("角色属性")]
[Space]
[Range(0,10000)]//hp的取值范围是0~10000
public float hp;//血量
public float mp;//法力值
public float speed;//移动速度
public float atk;//攻击力
public float def;//防御力
[SerializeField]//序列化字段
private int level;//等级
编辑器中的效果:
※ ※ ※ [HideInInspector] 隐藏字段
下面代码中的exp字段是公开的。添加此标签可在inspecter面板中隐藏
[Header("角色属性")]
[Space]
[Range(0,10000)]//hp的取值范围是0~10000
public float hp;//血量
public float mp;//法力值
public float speed;//移动速度
public float atk;//攻击力
public float def;//防御力
[SerializeField]//序列化字段
private int level;//等级
[HideInInspector]//隐藏exp字段
public int exp;//经验
编辑器中的效果:
※ ※ ※ [TextArea] 设置文本区域
在 string 变量上添加此标签,可编辑写入区域的大小
如下代码中在desc变量上添加了此标签后
[Header("名称")]
[Space]
[Tooltip("该角色在游戏中的名称")]
public string roleName;//人名
[Tooltip("该角色的昵称")]
public string nickName;//昵称
[Space]
[TextArea(2,30)]//默认显示2行,最多显示30行,再多用滚动条显示
public string desc;//人物介绍
※ ※ ※ OnValidate() 验证数据的函数(贼实用)
在一个类中声明一些变量,想要对这些变量进行验证的时候可以使用。(之后对类的变量做出修改的才会调用该函数)示例代码如下
public class Role : MonoBehaviour
{
public List nums;
public int hp;
private void OnValidate()
{
while (nums.Count > 2)
{
nums.RemoveAt(nums.Count - 1);
}
if (hp > 100) hp = 100;
if (hp < 0) hp = 0;
}
}
在代码中:规定的nums集合的长度和hp的赋值范围。
在编辑器中改变nums时,他的长度最多为2;给hp赋值时,value如果大于100那么hp就是100,value如果小于0,那么hp就是0.
按下回车键之后
※ ※ ※ [ContextMenuItem]
该标签声明在变量上面,给此变量添加右键菜单
public class MyTest : MonoBehaviour
{
///
/// 给一个变量添加右键菜单
/// 第一个参数是菜单的名称
/// 第二个参数是右键点击的回调函数
///
[ContextMenuItem("MenuButton", "ClickMenuButtonCallbak")]
public string menuItem;
private void ClickMenuButtonCallbak()
{
Debug.Log("111");
}
}
效果:Inspector面板上,鼠标右击变量,点击MenuButton按钮
※ ※ ※ [Multiline(int)]
修饰string字段,显示x行输入框
public class MyTest : MonoBehaviour
{
[Multiline(3)]
public string multiline;
}
※ ※ ※ [RequireComponent()]
该标签声明在类上面,与某个类关联使用,如下所示,挂在MyTest.cs时也需要挂载Image组件
[RequireComponent(typeof(Image))]
public class MyTest : MonoBehaviour
{
private void Awake()
{
}
}
※ ※ ※ [ExecuteInEditMode()]
声明在类上面,加上此属性后,不运行程序,也能执行脚本。
[ExecuteInEditMode]
public class MyTest : MonoBehaviour
{
private void Start()
{
Debug.Log("start");
}
private void Update()
{
Debug.Log("update");
}
}
※ ※ ※ [AddComponentMenu] 组件添加菜单中
该标签声明在类上面,把类添加到菜单路径中
[AddComponentMenu("MyScripte/Role")]
public class Role : MonoBehaviour
{
}
※ ※ ※ [RuntimeInitializeOnLoadMethod]
该标签声明在方法上面,表示游戏初始时先执行此函数
[RuntimeInitializeOnLoadMethod]
public static void GameInit()
{
Debug.Log("游戏初始时先运行此函数");
}
※ ※ ※ [ContextMenu]
该标签声明在方法上面,将函数添加到组件的上下文菜单中。
[ContextMenu("TestBtn")]
private void Test()
{
Debug.Log("111");
}
※ ※ ※ [MenuItem]
声明在静态函数上,在Unity菜单中出现选项栏,执行对应功能
[MenuItem("自定义菜单栏/第一级/Debug")]
private static void MyDebug()
{
Debug.Log(111);
}
※ ※ ※ 某脚本在Inspector面板上添加扩展按钮
public class MyTest : MonoBehaviour
{
}
[CustomEditor(typeof(MyTest))]
public class EditorTest : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("拓展按钮"))
{
Debug.LogError("111");
}
}
}