一.[HideInInspector] :解析是就会将inspector中的对应的调整框隐藏

比如:原本声明一个字段:当用是public时,unity的自动会在inspector显示该变量。还会有一个修改框
public int showInt = 0;

unity 签名怎么设置_unity 签名怎么设置

这样很方便可以管理一些变量,但是呢:比如有一些变量,咱们需要把它公开(比如别的类需要用到),但是又不想在inspector显示怎么办?
那么[HideInInspector]很好的解决了这个问题:
下面的代码:showInt和hideInt 两个变量都是Public公开的,但是hideInt用[HideInInspector]修饰了。

public int showInt = 0;
[HideInInspector]
public int hideInt = 1;

结果:没错还是这个。 但是发现hideInt是被隐藏的。

unity 签名怎么设置_unity 签名怎么设置_02

一般来说:Public的变量。不添加[HideInInspector]默认会在inspector窗口中生成调整窗口。需要隐藏,则在Public修饰前加[HideInInspector]即可。

二.[header]: inspector中显示对应变量的名字或者介绍

有这么个例子:程序猿甲写了个方便的工具给程序猿B用;由于工具很灵活,需要程序猿B自己设置参数,其中呢有个脚本是这样的:

unity 签名怎么设置_unity3d_03

额~ 程序猿B疯了: 你写的是什么鬼啊 ,让我怎么设置!
程序猿A:这不是很清楚么?
程序猿B:????

这样时候如果程序猿A ,在变量上加这么个标签:[header];

[Header("敌人标准速度")]
public float speed;
[Header("玩家移动速度")]
public float moveSpeed;
[Header("玩家角速度")]
public float AngleSpeed;
[Header("敌人暴走速度")]
public float speed2;

那么程序猿B看到就是这样的:

unity 签名怎么设置_ide_04

这样是不是非常舒服了。

三.【Range】:限定变量的范围

还是刚才的例子:程序猿B在设置speed的时候,设置的speed速度太大了:speed=1000。
游戏直接出了BUG。

原来:speed的范围是0——100的。程序猿A想了下:这样吧,我给你限定下好了。

[Header("敌人标准速度"),Range(0, 100)]
public float speed;
[Header("玩家移动速度"),Range(0, 200)]
public float moveSpeed;
[Header("玩家角速度"), Range(0, 500)]
public float AngleSpeed;
[Header("敌人暴走速度"),Range(0,200)]
public float speed2;

[Range(min,max)]: min是最小值,max是最大值。设置后会在面板上显示滑动条。

于是inspector窗口是这样显示的:

unity 签名怎么设置_unity3d_05


这样好清楚了,避免出现一些不要必要错误了。

小结:【Range】:可以限定变量的范围,比如一些需要在inspector面板设置的参数,而且有大小限制的。最好加上【Range】。

四。【SerializeField】:强制unity去序列化一个私有域。
当我们需要定义一些变量的时候。一般如果不是非常必要。一般是不会公开的,为了保护这些变量会用private修饰。表示该变量只会在该脚本内部使用。

但是有时候,咱们会怀念,bublic修饰带来的inspector面板上可编辑方便了。 【SerializeField】就是为了将私有的变量可以在inspector编辑的功能;
[SerializeField]
private GameObject obj;

是不是很方便?

五.[System.Serializable]:序列化一个类

直接上代码:下面是这样的:SrializeObj 是一个普通的类。它被【Serializeable】修饰了,其中成员里:私有的成员Obj1被【SerializeField】修饰了。showInt,和 hideFloat是Public的。其中:hideFloat是被【HideInInspector】修饰。

然后Test_SerializeField 类有一个成员是srializeObj,被【Serializeable】修饰。 大家猜猜inspector面板会怎么显示?

[System.Serializable]
public class SrializeObj {
    [SerializeField]
    private GameObject obj1;
    public int showInt;
    [HideInInspector]
    public float hideFloat;
}

public class Test_SerializeField : MonoBehaviour {
    [SerializeField]
    private GameObject obj;
    [SerializeField]
    private SrializeObj srializeObj;
}

解释下哦:[System.Serializable]的作用呢。可以让一个类也序列化。就是说有[System.Serializable] 属性的类,可以当做普通变量一样在inspector面板显示编辑了。当然不同的是显示和修改的是该类的成员。 比如SrializeObj 这个类:有三个成员,其中showInt是Public的。当然可以显示在inspector面板上,obj1虽然是私有的,但是被[SerializeField]修饰了,所以也可以。

unity 签名怎么设置_语言_06

工程文件下载:链接:https://pan.baidu.com/s/1hrSKYfq 密码:xbwq