【Unity】【面试题】

什么是协同程序?

在主线程运行的同时开启另一段逻辑处理来协助当前程序的执行,协同程序像多线程但不是多线程,协程在每帧结束之后检测yield条件是否满足。

协同函数在MonoBehavior哪一阶段执行?

碰撞器和触发器区别?

Is Trigger = true 时作为触发器,碰撞器被物理引擎忽略没有碰撞效果。

碰撞的必要条件?

至少一个为刚体,两者皆带有碰撞器。

ArrayList和List区别?

ArrayList会把所有插入的数据当作Object处理,装箱拆箱操作费时,List是泛型类,功能与ArrayList类似,可避免装箱拆箱操作。

工程间数据迁移?

1.Asset和Library目录一起迁移

2.导出Package

3.asset server 功能

CharacterController与Rigidbody区别?

CharacterController可理解为受限的Rigidbody,具有物理效果但不完全真实。

sealed关键字在类声明与函数声明时的作用?

sealed修饰的类为密封类,可防止其他类继承,修饰方法时可防止派生类重写此方法。

internal关键字的作用?

只能在包含该类的程序集中访问该类。

碰撞各阶段对应的函数?

OnCollisionEnter——OnCollisionStay——OnCollisionExit

脚本生命周期中主要方法?

Awake——OnEnable——Start——Update——FixedUpdate——LateUpdate——OnGUI——OnDisable——OnDistroy

场景中多个Camera处于活动状态会如何?

游戏界面可看到多相机混合结果。

Interface与抽象类的区别?

Interface只定义方法不实现细节,抽象类中可以有方法实现。Interface的子类必须实现接口的所有方法。

LightMap?

在三维软件中预先打好光,输出光照贴图,通过引擎贴至场景,使之有光照感。

类和结构体的区别?

类是引用类型,结构体是值类型。

ref和out有何区别?

效果相同,均为通过关键字找到定义在函数中变量的内存地址。区别为ref必须初始化,out必须在函数里赋值。ref参数是引用,out参数为输出参数。

委托原理及作用?

委托类似于一种安全的指针引用,在使用它时是当做类来看待而不是一个方法,相当于对一组方法的列表的引用。用处:使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。

排序方法?

快速排序、选择排序、冒泡排序、插入排序

反射的实现原理?

。。。。。。

四元数与欧拉角?

四元数可避免万向锁,进行增量旋转。

LateUpdate?

在Update后调用,常进行相机跟随等操作,用于避免相机已推进,但视角中未有角色的空帧出现。

渲染流水线?

【Unity】【面试题】_第1张图片

优化内存?

1.压缩自带类库

2.释放AssetBundle占用的资源

3.减低模型面数,降低骨骼数量,降低贴图大小

4.使用光照贴图,LOD,Prefab,Shader

5.减少临时变量

动态加载资源?

1.Resource.Load()

2.AssetBundle

漫反射兰伯特定律?

GC?

https://www.cnblogs.com/zblade/p/6445578.html

降低DrawCall?

对于OpenGL,绘制参数(状态值)的变更要比绘制大量顶点更耗费CPU。高速绘图即尽量在不改变状态值的情况下,一次DrawCall完成所有绘制。

Unity——PlayerSetting中:

Static Batching:将表明为Static的静态物体,如果相同材质球,Unity自动合并为Batch送往GPU。

Dynamic Batching:物体小于300面条件下,无论动静态物体,使用相同材质球,Unity会自动合并为Batch送往GPU。

若两物体材质仅纹理不同,可通过将纹理合并成大纹理,便可使用统一材质替代。

多角度优化?

CPU

DrawCall影响的是CPU效率,物理组件、GC、代码质量也会影响CPU。

每次DrawCall时CPU需要做很多准备工作,而对于GPU工作量是不变的,因此降低DrawCall就是解放CPU在调用图形接口上的开销。

1. DrawCall Batching

2.纹理打包成图集减少材质使用

3.减少反光、阴影等效果,其会导致物体多次渲染

GPU

1.减少顶点数量

2.压缩图片,以适应显存宽带

3.使用纹理图集

4.使用光照纹理而非实时光照

5.LOD

6.遮挡剔除

7.使用Mobile版shader

内存

1.Unity内部内存

2.Mono的托管内存,引用类型。

3.对象池

值类型:int、float、struct...

引用类型:类的实例

泛型优缺点?

值类型与引用类型?

事件与委托?

NGUI按钮的触发原理?

NGUI中Grid与Table的区别?

C#中基本类型占用字节数?

Unity中读取.txt的几种方法?

虚函数与抽象函数的区别?

如何解决UGUI/NGUI与粒子特效的遮挡问题?

Unity使用C#作为开发语言的优势?

DestroyImmediate与Destory的区别?

.mate文件的作用?

 

你可能感兴趣的:(Unity)