Unity 中 C# 的基础语法 以及 常用功能
来源:互联网 发布:时代光华网络商学院 编辑:程序博客网 时间:2024/06/16 00:39
1 [HideInInspector]和 [SerializeField]
变量的序列化:再次读取Unity时序列化的变量是有值的,不需要再次去复制,因为它已经被保存下来。
[HideInInspector] 表示原本已经在面板上显示的序列化值隐藏起来
[SerializeField] 表示将原本显示在面板上的序列化的私有变量可以序列化,在下次读取时就是上次赋值的值
1 [HideInIspector] public int x; 这样可以在程序中将代码复制,但是不能在面板中看到并手动设置赋值 2 [SerializeField] perivate int x; 在面板中可以看到并且赋值 3 如果a是私有的序列化变量,你想在面板中读取,但是不保存,那么用:-------------网上说可以,但是验证时会报错 [HideInInspector][SerializedField] private int a; public int b{ get{return a;} } 报错??: error CS0246: The type or namespace name `SerializedField' could not be found. Are you missing a using directive or an assembly reference? error CS0246: The type or namespace name `SerializedFieldAttribute' could not be found. Are you missing a using directive or an assembly reference? 4 如果a是私有序列化变量,你不想在面板中做任何操作(不想看到,也不想写),但是想要在程序中给它赋值,那么用。-------------网上说可以,但是验证时会报错 [HideInInspector] [SerializedField] private int a; public int b{ get { return a; } set { a = value; } } 报错同3
2 get set 方法
private int miX public int x{ set { miX = value; } get { return miX; }} 注意是public,也可以限定只读或者只能写入
3 传递引用 ref
class RefExample { static void Method(ref int i) { i = 44; } static void Main() { int val = 0;------------------------ref 需要在调用方法之前赋值 Method(ref val); // val is now 44 } }
4 传递引用 out
class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value;--------------------------out 不需要在调用方法之前赋值 Method(out value); // value is now 44 } }
5 ref 与 out 相同点
ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码: class Example { public void SampleMethod(out int i) { } public void SampleMethod(ref int i) { } } 但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示: class RefOutOverloadExample { public void SampleMethod(int i) { } public void SampleMethod(out int i) { } }
6 常用的脚本API
Trandform 游戏对象的位置、方向、缩放比例 Time 游戏时间 Random 随机数、随机点--球上点球内点。。。、旋转 Mathf 数学运算
7 协同程序
协同程序与多线程类似,但是在任一指定时刻都只会有一个协同程序在运行,别的协同程序则会挂起。 可以起到一段程序在等待一段时间后继续执行的效果 1 开启一个协同程序 使用MonoBehavior.StartCoroutine可以开启一个协同程序,所以该方法需要在继承Monobehaviour的类中调用 StartCoroutine(String methodName) startCoroutine(IEnumerator routine) a. 使用字符串作为参数可以开启线程并在线程结束之前终止线程,开启线程最多只能传递一个参数 b. 使用IEnumeraotor开启的的线程不能随时终止(除非使用StopAllCoroutines()方法),没有参数个数的限制 2 终止协同程序 a. Unity使用StopCoroutine(String methodName)来终止一个协同程序,使用StopAllCoroutine来终止所有协同程序,但是这两个方法都只能终止该MonoBehaviour中的协同程序 b. 将协同程序所在的gameObject的acitve属性设置为false,当再次设置active为true的时候,协同程序不会再开启,而设置enable和false则不会生效,因为协同程序开启后是以一个线程在运行的,它与MonoBehavior是互不干扰的模式在运行,此后除非代码调用,他们共同作用于同一个对象,只有当对象不可见的时候才能够同时终止这两个线程。
8 增加unity编辑器菜单
[MenuItem("new Menu/new/new new/new item")] public static void testMenu(){ Debug.Log("menu"); } 编译之后编辑器中就会出现 Menu 菜单
0 0
- Unity 中 C# 的基础语法 以及 常用功能
- 2.《Unity中C#脚本语法-常用变量类型》
- unity 开发中 C# 常用的方法总结(一)
- C#中的常用基础语法知识
- Hive基础三(查询中常用的语法)
- Unity 3d 的基础语法
- jdk的命令功能以及语法
- 关于C#中dataGridView常用的功能(一)
- unity基础开发----常用代码Unity中解析XML
- JavaScript中常用的函数以及基础写法汇总
- 初识markdown以及markdown的常用语法
- 【基础】unity:鼠标的常用事件
- 【基础】Unity:Application的常用方法
- Unity 基础常用的脚本(一)
- 常用功能/语法笔记
- JS中常用的语法
- LaTeX中常用的语法
- C#中问号“?”的语法
- WebViewJavascriptBridge使用
- mysql中文乱码问题
- keyboard监听、inputView、inputAccessoryView
- TCP连接状态详解及TIME_WAIT过多的解决方法
- js super
- Unity 中 C# 的基础语法 以及 常用功能
- 仿百度回到顶部纯js代码
- Android49_项目需求说明及可行性分析文档基本格式
- Object [object Object] has no method 'tree'
- 【游戏引擎】win7配置安装firefly【草稿尝试篇】
- Android初学习 - 全屏DialogFragment的实现
- 存储过程、动态sql、for、if
- 新的开始
- (二)、伪分布式环境搭建