资源描述
1、、什么是协同程序?
在主线程运营时同时启动另一段逻辑解决,来协助当前程序的执行。换句话说,启动协程就是启动一个线程。可以用来控制运动、序列以及对象的行为。
2、 你用过哪些插件?具体功能?
3、u3d中碰撞器和触发器的区别?
答:触发器只是碰撞器身上的一个属性,碰撞器是触发器的载体。
碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;
触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。
4、使用unity3d实现2D游戏,有几种方式?
1.使用自身的GUI;
2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;
3.使用2d插件,如:2DToolKit;
5、物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。
6、CharacterController和Rigidbody的区别?
CharacterController自带胶囊碰撞器,里面包具有刚体的属性;
Rigidbody就是刚体,使物体带有刚体的特性。
7、.Unity3d的物理引擎中,有几种施加力的方式,分别描述出来
a)爆炸力(AddExplosionForce(force : float, forcePos : Vector3,radius : float, upwards : float, mode : ForceMode)),应用一个力到刚体来模拟爆炸效果,就是在爆炸力中心坐标position,搜索在radius范围内的刚体,对其释放力作用,超过radius范围的刚体不受力作用,爆炸力将随着刚体的距离线性减弱。
b)力AddForce(force : Vector3, mode : ForceMode),重要施力给一个刚体,使其移动。
c)位置力AddForceAtPosition(force : Vector3, position : Vector3, mode : ForceMode), 在position施加一个力,施力的主体将会受到一个力和力矩。
d)相对力AddRelativeForce(force : Vector3, mode : ForceMode),类似于AddForce
8、物体自身旋转使用的函数?
Transform.Rotate()
9、Unity3d提供了几种光源类型,分别是哪几种?
四种。
平行光:Directional Light 点光源:Point Light
聚光灯:Spot Light 区域光源:Area Light
10、unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>
Reset——>OnDisable——>OnDestroy
11、物理更新一般放在哪个系统函数里?
FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,假如你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较合用于物理引擎的计算,由于是跟每帧渲染有关。
Update就比较适合做控制。
12、移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?
LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令
脚本的执行。官网上例子是摄像机的跟随,都是在所有Update操作完才跟进摄像机,不然
就有也许出现摄像机已经推动了,但是视角里尚未有角色的空帧出现。
13、当游戏中需要频繁创建一个物体时,我们需要如何做可以节省内存?
使用预制物体对象Prefab,然后复制创建。
14、在场景中放置多个Camera并同时处在活动状态会发生什么?
游戏界面可以看到很多摄像机的混合。
15、如何销毁一个UnityEngine.Object及其子类?
使用Destroy()方法;
16、请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?
1.可以把assets目录和Library目录一起迁移
2.导出包
3.用Unity带的assets Server功能
17、请描述为什么Unity3d中会发生在组件上出现数据丢失的情况
一般是组件上绑定的物体对象被删除了
18、alpha blend工作原理
Alpha Blend 实现透明效果,但是只能针对某块区域进行alpha操作,透明度可设。
19、Lod是什么,优缺陷是什么?
LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要限度决定物体渲染的资源分派,减少非重要物体的面数和细节度,从而获得高效率的渲染运算。
20、MipMap是什么,作用?
MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被解决成由一系列被预先计算和优化过的图片组成的文献,这样的贴图被称为MipMap。
21、获取、增长、删除组件的命令分别是什么?
获取:GetComponent
增长:AddComponent
删除:Destroy
22、Application.loadLevel命令为:(A)
A.加载关卡 B.异步加载关卡 C.加载动作
23、调试记录到控制台的命令是什么?
Debug.Log();
24、localPosition与Position的使用区别?
localPosition:自身位置,相对于父级的变换的位置。
Position:在世界坐标transform的位置
25、localPosition与Position的使用区别?
localPosition:自身位置,相对于父级的变换的位置。
Position:在世界坐标transform的位置
26、在物体发生碰撞的整个过程中,有几个阶段,分别列出相应的函数
三个阶段
1.OnCollisionEnter
2.OnCollisionStay
3.OnCollisionExit
27、请描述游戏动画有哪几种,以及其原理?
重要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。
关节动画:把角色提成若干独立部分,一个部分相应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;
骨骼动画:广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;
单一网格模型动画:由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
28、写出光照计算中的diffuse的计算公式
diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,假如结果小于等于0,则漫反射为0。
29、物体绕某点旋转使用函数叫什么
答:transform.RotateAround(point : Vector3, axis : Vector3, angles : float)
30、什么是渲染管道?
是指在显示器上为了显示出图像而通过的一系列必要操作。 渲染管道中的很多环节,都要将几何物体从一个坐标系中变换到另一个坐标系中去。 重要环节有: 本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化.
31、如何优化内存?
有很多种方式,例如 1.压缩自带类库; 2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉; 3.释放AssetBundle占用的资源;4.减少模型的片面数,减少模型的骨骼数量,减少贴图的大小; 5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)
32、动态加载资源的方式?
(有时候也问区别,具体请百度)
1. Resources.Load();
2. AssetBundle
33、使用原生GUI创建一个可以拖动的窗口命令是什么?
GUI.DragWindow();
34、C#中所有引用类型的基类是什么
答:
引用类型的基类是System.Object 值类型的基类是System.ValueType
同时,值类型也隐式继承自System.Object
35、请简述ArrayList和List<Int>的重要区别
答:
ArrayList存在不安全类型‘(ArrayList会把所有插入其中的数据都当做Object来解决)
装箱拆箱的操作(费时)
List是接口,ArrayList是一个实现了该接口的类,可以被实例化。
36、请简述GC(垃圾回收)产生的因素,并描述如何避免
答:GC回收堆上的内存
避免:1)减少new产生对象的次数
2)使用公用的对象(静态成员)
3)将String换为StringBuilder
37、请简述private,public,protected,internal的区别
答:
public:对任何类和成员都公开,无限制访问
private:仅对该类公开
protected:对该类和其派生类公开
internal:只能在包含该类的程序集中访问该类
protected internal:protected + internal
38、简述四元数的作用,四元数对欧拉角的优点?
答:四元数用于表达旋转
相对欧拉角的优点:
1)能进行增量旋转
2)避免万向锁
3)给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
39、为什么大家都在移动设备上寻求U3D原生GUI的替代方案
不美观,OnGUI很花费时间,使用不方便
40、请简述如何在不同分辨率下保持UI的一致性
NGUI很好的解决了这一点,屏幕分辨率的自适应性,原理就是计算出屏幕的宽高比跟本来的预设的屏幕分辨率求出一个对比值,然后修改摄像机的size。
41、 U3D经验中描述你做过的最佳的UI及相关功能模块,及对这部分的理解
42、 C#的委托和事件的原理和优缺陷
43、 NGUI和GUI的区别和特点
44、 Time.deltaTime和Time.tmeScale各是什么意思?什么情况下用到?
45、 如何获取当前屏幕的宽度和高度?
46、 GameObject的Tag和Layer有什么用?怎么设立?
47、 已知游戏物体PlayerGameObject上绑定脚本Player,怎么在其他脚本上获取该脚本?
48、 interface和abstract class的区别?
49、 override和overload的区别?
1、 方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖规定参数列表相同;重载规定参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对像相应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
50、 GC是什么? 为什么要有GC?
答:GC是垃圾收集器。程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
51、sleep() 和 wait() 有什么区别?
答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是由于在那个时刻,其它线程也许正在运营并且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运营的线程由于其它因素而阻塞。
wait()是线程交互时,假如线程对一个同步对像x 发出一个wait()调用,该线程会暂停执行,被调对像进入等待状态,直到被唤醒或等待时间到。
52、 error和exception有什么区别?
答:error 表达恢复不是不也许但很困难的情况下的一种严重问题。比如说内存溢出。不也许指望程序能解决这样的情况。
exception 表达一种设计或实现问题。也就是说,它表达假如程序运营正常,从不会发生的情况。
53、static 有什么用途?(请至少说明两种)
1.限制变量的作用域
2.设立变量的存储域
54、
展开阅读全文