1.Unity3D的协程和C#线程之间的区别是什么?
协程:在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行。在每帧结束之后去检测yield的条件是否满足,任一指定时刻只有一个协程在运行,并且这个正在运行的协同程序只在必要时才被挂起。
多线程程序同时运行多个线程 ,除主线程之外的线程无法访问Unity3D的对象、组件、方法,缺点:协同程序并非真线程,协程也失去了标准线程使用多CPU的能力。可能会发生堵塞。
2.动态加载资源的方式?
1.Resources.Load();
2.AssetBundle
通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。
2.通过bundle的形式:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object。
3.如何安全的在不同工程间地迁移asset数据?三种方法
1.将Assets目录和Library目录一起迁移
2.导出包,export Package
3.用unity自带的assets Server功能
4.Unity提供了几种光源,分别是什么
四种。
平行光:Directional Light
点光源:Point Light
聚光灯:Spot Light
区域光源:Area Light
5.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
Awake——>OnEnable–>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy