Unity随手记

过年11天假期,带娃带了7天,吃吃喝喝。也看了点书,《射雕英雄传》(书)看了一半,还有就是在看《unity官方案例精讲》这本。

随手记一些自觉有价值或者有意思的点。

 

1. 对脚本中变量设定range

1 [Range(0.0f, 10.0f)]
2 public float speed = 0.0f;

 

2. 交叉数组(Jagged Array)

 (1)声明交叉数组可以指定数组的行数,但不能指定列数

 (2)交叉数组的长度(Length)等于行数

 (3)交叉数组的每一行元素都是一个一维数组

 1 void TestJaggedArray()
 2 {
 3     int[][] mArr1 = new int[3][]; //声明一个3行的交叉数组
 4     mArr1[0] = new int[7] { 1, 2, 3, 4, 5, 6, 7}; //为交叉数组mArr1一行元素赋值
 5     print(mArr1.Length); //输出3
 6 
 7     int[][] mArr2 = new int[3][] { new int[3] { 1, 2, 3 }, new int[5] { 4, 5, 6, 7, 8}, new int[4] { 3, 4, 5, 6 } }; //声明并初始化一个3行的交叉数组
 8     print(mArr2.Length); //输出3
 9 
10     int[][] mArr3 = new int[][] { new int[] { 1, 2}, new int[] {3, 4, 5}, new int[] { 6, 7, 8, 9}, new int[] { 10, 20, 30, 40, 50, 60}}; // 声明一个4行的交叉数组,行数未指定,由编译器根据初始值推断
11 
12     int[][] mArr4; // 声明一个交叉数组,未初始化,未指定行数
13         
14     foreach(var a in mArr2)
15     {
16         print(a.Length); //输出每一行中元素的个数
17         foreach(var b in a)
18             print(b); //输出每一行上的元素
19     }
20 }

  对比下普通二维数组:

 1 void Test2DArray()
 2 {
 3     int[,] arr1 = new int[3, 4]; //声明一个3x4的二维数组arr1
 4     arr1[0,0] = 10;
 5     arr1[0,1] = 20;
 6     print(arr1.Length); //输出12
 7 
 8     int[,] arr2 = new int[2, 3] { {1, 2, 3}, {4, 5, 6}}; //声明并初始化一个2x3的二维数组arr2
 9     print(arr2.Length); //输出6
10         
11     //遍历二维数组中的元素
12     for(int i = 0; i < 2; ++i)
13         for(int j = 0; j < 3; ++j)
14             print(arr2[i,j]); //输出1 2 3 4 5 6
15 }

 

3.Net Reflector

.NET Reflector,是一个可以将以.NET Framework为基础开发出来的的DLL或EXE文件,反编译为原始程序的工具软件。

装了下这软件(然后破解了= =),然后把C:\Program Files\Unity\Editor\Data\Managed(我的路径)下的UnityEngine.dll和UnityEditor.dll拖进去:

 mscorlib是CLR的library,上面这个么就慢慢翻看了。。。

 

4. Script Execution Order

 之前组内分享的时候说同一个对象下的script,无法指定哪个先执行哪个后执行。确实:

 “默认情况下,不同的脚本的Awake,OnEnable,Update函数根据脚本的加载顺序来依次调用(脚本的加载顺序是不确定的)。”

 在Edit/Project Settings/Script Execution Order里可以指定顺序:

可以把脚本拖进去,然后上下交换位置,在上面的先执行。

posted on 2017-02-04 19:32  pandawuwyj  阅读(248)  评论(0编辑  收藏  举报

导航