Unity面试题

1. 什么是协同程序?

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

2.Unity3D中碰撞器和触发器的区别

碰撞器和触发器的根本为同一个组件,Collider。表现区别为触发器不会产生物理效果而碰撞器可以。
组件属性角度为,当组件Trigger为false时为碰撞器,反之为触发器。
代码方面,碰撞器使用Unity内置接口OnCollisionEnter/OnCollisionStay/OnCollisionExit。
触发器使用,OnTriggerEnter/OnTriggerStay/OnTriggerExit。

3.物体发生碰撞的必要条件

两个物体都必须带有碰撞器,其中需要检测碰撞的物体必须带有Rigidbody组件才可以进行检测。前提是物理层级Layers具有交互效果。

4.ArrayList和list的区别

ArrayList存在不安全类型(Arraylist中的所有数据都会被当作Object来处理)
,所有会进行装箱拆箱的操作。而List是一个接口,ArrayList是一个实现了该类接口的类,可以被实例化。

5.如何安全的在不同工程间迁移Asset

将Assets目录和library一起迁移;导出Package;使用unity自带的Assets Server功能

6.OnEnable,Awake,Start的生命周期

Awake->OnEnable->Start,OnEnable可以在同一周期中反复发生。 

7.MeshRender中material和ShaderMaterial区别

修改ShaderMaterial改变工程里的材质设置和所有物体使用这个材质的外观。如果修改渲染器材质,使用material.

8.光源有哪些

点光源 Point Light
聚光灯 Spot Light
区域灯  Area Light
平行光 Direction Light

9.对象池

存放需要被反复调用资源的一个空间。当一个对象会大量产生的时候,如果每次都是销毁创建,会浪费很多的空间以及时间,通过对象池我们可以把暂时不用的对象放在池子中,当需要使用的时候去进行调用,不需要的时候进行隐藏,长时间不用在销毁。
大概的逻辑就是,调用对象,对象池中查找,如果存在,直接使用,然后再进行信息的初始化。如果不存在则创建,并且存入池子。最常见的就是,子弹,敌人,粒子特效。
对象池也是优化的基本手段。

10.CharacterController和Rigdbady的区别

Rigdbady具有完全真实的物理特性,是Unity中物理系统最基本的一个组件,包含了常用的物理特性。而CharacterController受限于Rigdbady,具有一定的物理效果,但是不完全真实,为了FPS封装的一个第一人称视角的角色控制器。

11.Prefab的用处

在游戏运行实例化,Prefab相当于一个模板,便于修改。对已有的素材数据,脚本做一个默认的配置,便于修改以及复用。可以打包导出

12.sealed

密封类关键,声明类不可被继承,声明方法不可以被重写

13.访问修饰符

Public:公开的,无限制访问
Protected:受保护的,只对该类和派生类公开
Private:私密,只对该类公开
internal:只能在包含该类的程序集中访问该类

14.Unity 实现2D游戏方法

使用UGUI
使用NGUI,2DToolKit等插件
将相机的Projection改为正交投影,不考虑深度

15.物体发生碰撞生命周期分为什么

OnCollisonEntert ->  OnCollisionStay -> OnCollisionExit

16.Unity中物理施加力的方式

Rigdbady.AddFarce
Rigdbady.AddFarceAtPosition

17.链条关节

Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。

18.旋转函数

Transform.Rotate

19.保存,读取数据的类PLayerPrefs

PlayerPrefs.SetInt();保存
PlayerPrefs.GetInt();读取

20.Unity中脚本的生命周期

Awake->OnEnable->Start->Update->FixedUpdate->LateUpdate->OnGUI->OnDisable->OnDestory

21.在场景中放多个相机并同时处于活动状态会发生什么?

游戏场景中可以看到相机的混合画面(当然相机的depth不在同一场景),如果处在同一个层级,则会覆盖。

22.如何销毁一个UnityEngine.Object及子类

使用Destory()方法

23.物理更新一般放在什么函数中?

FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedeUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降,FixedUpate比较适合用于物理引擎计算,因为是跟每帧渲染有关,Update就比较适合做控制。

24.LOD是什么?优缺点是什么?

LOD,多层次细节,是常用的游戏优化技术。他按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染计算,缺点是增加了内存。

25.MipMap有什么作用?

MipMap是计算机图形的贴图渲染中常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件

26.什么是LightMap?

Light就是指在三维软件里实现打灯光,然后通过渲染把场景各表面的光照输出到贴图上,最后又通过unity贴到场景中,这样就使物体有了光照的感觉。

27. 接口和抽象类之间的不同

抽象类表示该类中可能已经有一些方法的具体定义,但接口就是公共只能定义各个方法的界面,不能具体的实现代码。类是子类用来继承的。当父类已经有实际功能的方法时,子类可以不必实现,直接引用父类的方法,子类也可以重新该父类的方法。

28. .Net和Mono的关系

mono是.net的开源跨平台工具。就类似java虚拟机,java本身不是跨平台语音,但运行在虚拟机上就能够实现跨平台。.net只能在windows下运行,mono可以实现跨平台运行。

29.Unity中用于记录节点空间几何信息的组件是什么?其父类是什么?

Transform,父类是Compoent

30.点乘,叉乘,归一化

点乘:表述了两个向量间的相似度,结果越大两向量越相似,还可以表示投影
叉乘:叉乘得到的值垂直于原先的两个向量。
归一化:标准化的向量,只有方向,没有大小。
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值