unity3d面试问题集锦(史上最全Unity面试试题)
转:https://blog.csdn.net/Sindywangkeai/article/details/77649471?locationNum=9&fps=1
十:MeshRender中material和sharedmaterial的区别?
修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质,使用material替代。
十一:Unity提供了几种光源,分别是什么
四种。
平行光:Directional Light
点光源:Point Light
聚光灯:Spot Light
区域光源:Area Light
十二:简述一下对象池,你觉得在FPS里哪些东西适合使用对象池
对象池就存放需要被反复调用资源的一个空间,当一个对象回大量生成的时候如果每次都销毁创建会很费时间,通过对象池把暂时不用的对象放到一个池中(也就是一个集合),当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创建,如果池中没有可用的对象,才需要重新创建,利用空间换时间来达到游戏的高速运行效果,在FPS游戏中要常被大量复制的对象包括子弹,敌人,粒子等
41.写出一个C类ip地址(192.168.1.105),该ip地址一个合法的网格掩码是(255.255.255.224).
42.c/c 程序运行时有堆内存与栈内存之分,请写一个语句在堆中分配一个整数:(int a = new int(4)),在栈内存中分配一个整数:(int a = 5)。
43.简述从C/C 源代码生成可执行文件所经历的几个过程和每个过程中所做的事情。
预编译-》编译-》链接-》执行
44.简述TCP建立连接的过程,最好能画出时序图。
三次握手;
45.有一个c语言函数
- unsigned int getN(unsigned int v){
- v--;
- v |= v >> 1;
- v |= v >> 2;
- v |= v >> 4;
- v |= v >> 8;
- v |= v >> 16;
- v ;
- return v;
- }
请问这个函数的功能是什么?
返回的结果是v 或者 2 ^ 跟下v次方 1(比如125返回128,128返回的就是128)
46.列出c语言中static关键字的用法。
static 关键字至少有下列几个作用:
(1)函数体内static 变量的作用范围为该函数体,不同于auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)在模块内的static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的static 成员函数属于整个类所拥有,这个函数不接收this 指针,因而只能访问类的static 成员变量。
47.解释一下Unity3D中的协程(coroutine)是什么?并举例说明
在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。
48.物体自旋转使用的函数叫什么?物体绕某点旋转使用函数叫什么?
物体自旋转函数transform.Rotate,物体绕某点旋转函数:transform.RotateAround
49.使用prefab预制物体有什么好处?
1.Prefab一个重要的优势就是编辑prefab资源后,场景中所有使用Prefab克隆的游戏对象将全部使用新编辑的资源,无需一个一个的给场景中的对象赋值。
2.当游戏中需要频繁创建一个物体时,使用Prefab能够节省内存。
3.当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。
50.设有如下关系表R1和R2
R1(NO, NAME, SEX, AGE, CLASS)
R2(NO, SUBJECT, SCORE)
主关键字是NO,其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号,SUBJECT为科目,SCORE为成绩。写出实现下列功能的SQL语句。查找学号为20的学生的姓名,科目,成绩。
SELECT NAME,SUBJECT,SCORE FORM R1 INNER JOIN R2 ON R1.NO=R2.NO WHERE R1.NO = 20
51.描述多人联网中位置的同步和聊天通讯的实现方法,并编程写出如何实现多人协同中交互操作。(交互操作例如,血值为100的两个角色人物可以相互射击双方,射击一次减去血值10,当血值为0的时候证明已经死亡)
#
52.当实例化一个prefab对象,prefab对象上面挂载了一个继承MonoBehaviour的脚本
1.请问这个脚本分别会按顺序调用哪些函数,并列出哪些函数是反复进去的
#
2.请问当这个实例化对象先调用了SetActive(false),然后又调用了SetActive(true),那么这个脚本依次会调用哪些函数方法?
#
3.如果在脚本的Awake()函数中,调用了this.gameObject.AddComponent()(PS:GameController为另一个继承Mono的脚本类),请问此时脚本函数的调用顺序是否发生变化?
53.if(go.CompareTag(“Enemy”))和if(go.tag == “Enemy”)两种判断方法哪种是合适的,为什么?
第一种合适,因为第二种会占用更多内存。
54.DestroyImmediate和Destroy的区别是?
DestroyImmeditate 销毁对象的时候,会立即释放资源。Destroy只是从该场景销毁,但是还在内存当中。
55.详细说明Unity中资源加载的方法,以及他们的区别?
1.通过Resources模块,调用它的load函数:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。
2.通过bundle的形式:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object。
56.从代码角度上如何进行内存优化?
#
57.分别写出Invoke和协程的几种用法?
#
58.以下函数的功能是计算斐波那契数列的第n项,请填空
- int func(int n)
- {
- if(n<=2) return 1;
- return n func(n-1);
- }
59.C语言中宏定义中若有多行,可以使用字符(\).
60.C语言中32位整数能表达的最小的数是-2^31~2^31-1.
61.使用(点乘)向量运算可以很方便地计算出三维空间中两个单位向量之间夹角的cos值。
62.类unix系统中某文件的权限为:drw-r–r–,用八进制数值形式表示该权限为(411),首位d代表目录(文件夹)
63.若有如下程序段,其中s,a,b,c均已定义为整型变量,且a,c均已赋值(c大于0)
- s = a;
- for(b = 1; b <= c; b )
- s = s 1;
则与上述程序段功能等价的赋值语句是(B)
A.s = a b B.s = a c C.s = s c D.s = b c
64.简述static和const关键字的作用
static 关键字至少有下列几个作用:
(1)函数体内static 变量的作用范围为该函数体,不同于auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)在模块内的static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的static 成员函数属于整个类所拥有,这个函数不接收this 指针,因而只能访问类的static 成员变量。
const 关键字至少有下列几个作用:
(1)欲阻止一个变量被改变,可以使用const 关键字。在定义该const 变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const 可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const 类型,则表明其是一个常函数,不能修改类的成员变量
;
(5)对于类的成员函数,有时候必须指定其返回值为const 类型,以使得其返回值不为“左值”。
65.用你熟悉的语言及你认为最简洁的方法书写计算 s = 1! 2! 3! … num!的代码。num为输入,s为输出。(!代表阶乘 3!= 1 * 2 * 3
66.用你熟悉的语言从一个字符串中去掉相连的重复字符,例如原字符串“adffjkljaalkjhl”变为“adfjkljalkjhl”
第三部分
1.哪种实时光源是Unity中没有的?(D)
A.点光源 B.方向光 C.聚光灯 D.日光灯
2.如何在Unity中创建地形系统?(D)
A.Terrain->Create Terrain B.Component->Create Terrain
C.Asset->Create Terrain D.Windows->Create Terrain
3.以下哪种操作步骤可以在场景中添加“Wind Zone”?(B)
A.Terrain->Wind Zone B.GameObject->Create other->Wind Zone
C.Component->Physics->Wind Zone D.Assets->Create->Wind Zone
4.在Unity编辑器中创建一个Directional Light,以下步骤正确的是?(B)
A.Edit->Rendering Setting->Directional Light
B.GameObject->Create Other->Directional Light
C.Component->Rendering->Directional Light
D.Assets->Directional Light
5.下列哪一项不属于Camera中的“Clear Flags”?(D)
A.Skybox B.Solid Color C.Depth Only D.Background
6.以下哪种脚本语言是Unity编辑器所不支持的?(D)
A.Javascript B.C# C.Boo D.Perl
7.对于Prefab,以下说法错误的是?(D)
A.Prefab资源可以在项目中多次重复使用
B.由Prefab实例出的GameObject,其在Hierarchy试图中表现为蓝色
C.Prefab上的组件信息一经改变,其实例出的GameObject也会自动改变
D.实例出的GameObject上的组件信息一经改变,其对应出的Prefab也会自动改变
8.下面哪种做法可以打开Unity的Asset Store?(A)
A.Windows->Asset Store
B.Edit->Asset Store
C.File->Asset Store
D.Assets->Asset Store
9.在哪个面板中可以修改物体的空间属性,如位置,朝向,大小等(B)
A.Project B.Inspector C.Hierarchy D.Toolbar
10.如何为一个Asset 资源设定一个Label,从而能够方便准确的搜索到?(D)
A.在Project窗口中选中一个Asset,右键->Create->Label
B.在Project窗口中选中一个Asset,右键->Add Label
C.在Project窗口中选中一个Asset,在Inspector窗口中点击添加Label的图标
D.在Project窗口中选中一个Asset,在Inspector窗口中点击按钮“Add Label”
11.Mecanim系统中,Body Mask的作用是?(D)
A指定身体的某一部分是否参与骨骼动画
B.指定身体的某一部分是否参与物理模拟
C.指定身体的某一部分是否可以输出骨骼信息
D.指定身体的某一部分是否参与渲染
12.以下哪种操作步骤可以打开Unity编辑器的Lightmapping视图?(C)
A.File->Lightmapping B.Assets->Lightmapping
C.Windows->Lightmapping D.Component->Lightmapping
13.下列关于光照贴图,说法错误的是?(C)
A.使用光照贴图比使用实时光源渲染要快
B.可以降低游戏内存消耗
C.可以增加场景真实感
D.多个物体可以使用同一张光照贴图
14.如何为物体添加光照贴图所使用的UV?(B)
A.不用添加,任何时候都会自动生成
B.更改物体导入设置,勾选“Generate Lighting UVs”
C.更改物体导入设置,勾选“Swap UVs”
D.更改物体导入设置,在UVs选项中选择“Use Lightmaps”
15.在哪个模块下可以修改Render Path?(A)
A.Camera B.Light C.Render Settings D.Project Setting->Quality
16.以下哪项技术下不是目前Unity所支持的Occlusion Culling技术?(D)
A.PVS only B.PVS and dynamic objets
C.Automatic Portal Generation D.Dynamic Only
17.关于Vector3的API,以下说法正确的是?(C)
A.Vector3.normalize可以获取一个三维向量的法线向量
B.Vector3.magnitude可以获取一个三维向量的长度
C.Vector3.forward与Vector3(0,0,1)是一样的
D.Vector3.Dot(向量A,向量B)是用来计算向量A与向量B的叉乘
18.下列那些选项不是网格层属性的固有选项?(B)
A.Default B.Walkable C.Not Walkable D.Jump
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com