siki吧 关注:185贴子:1,934
  • 1回复贴,共1
求助

unity 面试基本问题

只看楼主收藏回复

一:什么是协同程序?
在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。
二:Unity3d中的碰撞器和触发器的区别?
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。
三:物体发生碰撞的必要条件?
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。
四:请简述ArrayList和List的主要区别?
ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理),装箱拆箱的操作(费时),List是泛型类,功能跟ArrayList相似,但不存在ArrayList所说的问题。
五:如何安全的在不同工程间安全地迁移asset数据?三种方法
1.将Assets目录和Library目录一起迁移2.导出Package包3.用unity自带的assets Server功能
六:OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生
Awake –>OnEnable->Start,OnEnable在同一周期中可以反复地发生。
七:MeshRender中material和sharedmaterial的区别?
修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质,使用material替代。
八:Unity提供了几种光源,分别是什么
四种。平行光:Directional Light点光源:Point Light聚光灯:Spot Light区域光源:Area Light
九:简述一下对象池,你觉得在FPS里哪些东西适合使用对象池
对象池就存放需要被反复调用资源的一个空间,当一个对象回大量生成的时候如果每次都销毁创建会很费时间,通过对象池把暂时不用的对象放到一个池中(也就是一个集合),当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创建,如果池中没有可用的对象,才需要重新创建,利用空间换时间来达到游戏的高速运行效果,在FPS游戏中要常被大量复制的对象包括子弹,敌人,粒子等。


IP属地:吉林来自Android客户端1楼2023-12-24 11:51回复
    问题十:简述一下对象池,你觉得在FPS里哪些东西适合使用对象池?
    答案(概括性):对象池是一种存储可重复利用的游戏对象的空间。当游戏需要大量生成和销毁物体时,频繁的创建与删除操作会影响性能。通过对象池,暂时不用的物体被保存到一个集合中。下次再需该类型的物件时,系统会先检查是否有现成的可用对象,如果有就直接复用;如果没有则重新创建一个新的实例。这种方式能节省内存并提高运行效率。在第一人称射击游戏中,许多物品如子弹、敌人角色或粒子效果等都可能成为对象池的使用者。


    3楼2023-12-25 10:55
    回复