Unity 问题:
1.gameobject.CompareTag是不是比直接用gameObject.tag=="xxx"要好? |
---|
答:tag确实比CompareTag 更耗时间,因为tag是属性,会在内部循环调用对象分配的标签属性并分配额外的内存! |
测试结果: |
2.Scene面板中提供了几种绘制模式,都有什么作用? | |
---|---|
Shaded | 开启阴影和表明纹理显示 |
Wireframe | 开启线框显示 |
Shaded Wireframe | 开启阴影和表面纹理以及线框显示 |
Shadow Cascades | 开启平行光阴影图联级(不知道做什么的) |
Render Paths | 显示渲染路径,蓝色表示延迟渲染,绿色表示延迟灯光,黄色表示向前渲染,红色表示顶点渲染 |
Alpha Channel | 用Alpha渲染颜色 |
Overdraw | 将对象作为透明的“剪影渲染”。透明颜色累加,这样就可以找出一个对象绘制在另一个对象的位置上 |
Mipmaps | 使用颜色代码显示理想的纹理尺寸,红色表示纹理大于所需尺寸,蓝色表示纹理可以更大。理想的纹理尺寸取决于游戏运行时的分辨率及相机可以离特定表明多近 |
3.相机中Clear Flags和CullingMask 的区别和作用? |
---|
答:Clear Flags :清楚标记,使用多个相机时,每个相机都会在缓存区存储各自的颜色和深度信息,并在渲染是积累更多的数据,当场景中的任何相机渲染视图时,可以设置清楚标记以清楚缓存区信息中不同的收集数据。CullingMask:剔除遮蔽图,添加或删除相机渲染的对象层 |
4.NGUI中UIGrid组件和UITable组件的区别? |
---|
答:UIGrid 限制子物体大小,进行统一化,设置的间距是固定的。而Table是根据排列的组件的大小,自动进行排列。 |
5.怎么停止Unity中的协程? |
---|
答:使用MonoBehaviour.StopCoroutine或者MonoBehaviour.StopAllCoroutines,来停止Coroutine。当MonoBehavirour销毁时,协同程序也会停止,但是禁用MonoBehavirour时,协程不会停止 |
C#问答:
1.C#中 string和StringBuilder的区别? |
---|
答:string在声明之后再内存中的大小是不可修改,每次对对象进行操作时,都会为该该对象分配新的空间。StringBuilder可以自由扩展对象大小,只要操作不会超过指定大小,是不会为自己从新分配空间,如果超过大小,系统会根据当前大小进行倍增 |
2.==和Equals以及Object.ReferenceEquals(obj1,obj2) 的作用是什么? |
---|
答:==:值类型和string类型比较的是对象的值是否相等,除string类型意外得引用类型比较的是在栈中存储的地址是否相等。Equals:值类型和string类型比较的是对象的值是否相等,除string类型外的引用类型比较的是是否同意引用对象,Object.ReferenceEquals(obj1,obj2) 比较的是内存地址是否相等 |
3.JIT和AOT都是什么意思? |
---|
JIT,即just-in-time,动态(及时)编译,边运行边编译 |
AOT,Ahead Of Time,指运行前编译。 |
4.Func和Action的作用是什么,有什么区别? |
---|
答:Func和Action都是.Net内置委托。Func和Action的区别是Func有有参数和返回值,而Action只有参数 |