这种以 [ ] 的写法其实在.NET Core Mvc框架里面很常见了,经常用于[约束],
最常见的是定义主键和外键,以便于ORM框架正确理解并生成对应的数据库。
在Unity中,这种写法也是为了让框架能够正确理解:
[SerializeField] 你想在面板序列化显示,但不想其它脚本访问它,通常和private连用
[HideInInspector] 你不想在面板中显示,但你想让其它脚本访问它,通常和public连用
注意点:
① [SerializeField]不可用于static变量。
② [SerializeField]private float m_xx 在Inspector中只会显示xx。
③ m_开头表示类的成员变量m为member的缩写,这是个习惯问题。
有一个命名规范:
1. 非公有的变量前面要加上小写m
2. 静态变量前面加上小写s
3. 其它变量以小写字母开头
4. 静态变量全大写
关于访问修饰符:
① 在一个类中,成员或方法前不加,默认就是 private;
② 类前不加,默认是internal,当前程序集能访问
→ 不是同命名空间,即使引用了命名空间也无法访问
→ 程序集,即CLR认为你在同一个集合里面
→ 默认是你在.NET Framework刚刚建立的控制台项目,算一个程序集;建立的一个类库,算另一个程序集。
具体例子参考 https://www.v2know.com/MainPage/PreView/195
朋友Assembly:我们可以说,控制台项目的【朋友Assembly】是那个类库。
我们可以发现,即使引入命名空间,被标记了internal的类是看不到的。
在Unity当中,不存在程序集的概念,每个.cs文件都是独立的脚本。(先这么理解)
参考文档:
[1] Why should I use SerializeField?
[2] 以m_开头的变量为什么在Insepector面板中不显示?
Today's comments have reached the limit. If you want to comment, please wait until tomorrow (UTC-Time).
There is 18h49m51s left until you can comment.