佳诺明德教育Unity3D试题(三)
unity3d面试题与参考答案

unity3d⾯试题与参考答案1、C#程序题1 2 3 4 5 6 7 8 9 10 11private static void aaa(int x) { x = 10; } private static void bbb(ref int x) { x = 10; } static void Main(string[] args){int x = 0; aaa(x); //现在x的值是:___ bbb(ref x); //现在x的值是:___}答案:0,,10。
详细解答:⼀个是复制⼀份值过去,⼀个是把地址传过去2、英⽂翻译题(把下⾯⽂字翻译成中⽂)Transform.LocalPositionvar localPosition:Vector3;Description:Position of the transform relative to the parent transform.If the transform has no parent,it is the same as Transform.position.Note that the parent transform's world rotation and scale are applied to the local position when calculating the world position.This means that while 1 unit in Transform.position is always 1 unit in transform.localPosition will get scaled by the scale of all ancestors.描述:相对于⽗级的变换的位置。
如果该变换没有⽗级,那么等同于Transform.position。
注意当计算世界的位置时,⽗级变换的世界旋转和缩放被应⽤到⾃⾝的位置。
unity3d面试题及答案

unity3d面试题及答案2.alpha blend 工作原理3.写光照计算中的diffuse的计算公式4.lod是什么,优缺点是什么5.两种阴影判断的方法工作原理6.MipMap是什么?作用?7.用u3d实现2d游戏,有几种方式?答:一种用UI实现(GUI,NGUI...),一种是采纳3d实体对象(plane),绘制在3d对象上,调整摄像机,采纳平行投影模式或那么固定视角。
8.u3d中碰撞器和触发器的区分?答:触发器只是碰撞器身上的一个属性,碰撞器是触发器的载体。
9.物体发生碰撞的须要条件答:需要检测碰撞的物体身上存在刚体组件(或被检测物体),也要碰撞器collider10.CharacterController和Rigidbody的区分11.物体发生碰撞时,有几个阶段,分别对应的函数答:摒除触发,有3种,OnCollisionEnter(),OnCollisionStay(); OnCollisionE*it()12.u3d中,几种施加力的方式,描述出来。
答:a)爆炸力(AddE*plosionForce(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施加一个力,施力的主体将会受到一个力和力矩。
unity3d笔试题

Unity1. u3d用u3d实现2d游戏,有几种方式?1.利用引擎自带的GUI2.把摄像机设为Orthographic,用面片作为2d元素3.利用第三方插件:NGUI、2dToolkit2. u3d物体发生碰撞时,有几个阶段,分别对应的函数三个阶段,OnCollisionEnter/Stay/Exit()函数3.u3d提供了一个用于保存读取数据的类,(playerPrefs),请列出保存读取整形数据的函数PlayerPrefs.SetInt(string, int) 与 PlayerPrefs.GetInt(string)4.unity3d从唤醒到销毁有一段生命周期,请列出系统自己调用的几个重要方法(按执行顺序书写至少五个)。
Awake –>OnEnable –> Start –> Update –> FixedUpdate –> LateUpdate –> OnGUI –> OnDisable –> OnDestroy5.u3d下如何安全的在不同工程迁移asset数据方法1,可以把assets目录和Library目录一起迁移,方法2,导出包 Export Package方法3,用unity带的assets server功能或 meta功能Ngui1 NGUI:有两张图集Altas1和 Altas2,Altas1中有一张图Background, Altas2中有一张图叫Element,分别作出三个Sprite B1、E、B2,如何让这三个Sprite在镜头前显示顺序为B2盖住E且E盖住B1?(如下图所示)将B1和E放在在同一个Panel P1下,调整E的depth高于B1;将B2放在另一个Panel P2下,将P2所在的z轴调整为-1(或更小的数)2 NGUI:图集里有图A,使用哪种控件可以实现在场景中显示为图B:图A 图BSlicedSprite,设置这张图在图集中的Border的上下左右边框范围,再拉伸UISprite3 NGUI: Sprite有哪几种?分别有什么用途?Sprite(一张普通的图片)Sliced Sprite(一个含有9个切片的Sprite,创建固定边框的拉伸控件最佳选择)Tiled Sprite(一个Sprite缩放填充整个区域,即平铺)Filled Sprite(一个Sprite有一个参数来控制哪些是可见的,常被用来做进度条或者技能CD)4 NGUI:NGUI的控件A上脚本里的方法OnClick()、OnPressed()的触发原理是什么?控件有什么比较条件才能被触发这些方法?UICamera每帧从鼠标的位置向场景打射线,遇到有Collidier的控件后,根据鼠标的操作(悬浮、点击、按下、松开等)向控件A上调用gameObject.SendMessage(funcName)触发。
unity初级考试题库及答案

unity初级考试题库及答案1. Unity中,GameObject是什么?- A. 一个脚本文件- B. 一个场景文件- C. 一个游戏对象- D. Unity的编程语言- 答案:C2. 在Unity中,以下哪个组件用于控制游戏对象的移动? - A. 渲染器组件- B. 碰撞器组件- C. 刚体组件- D. 摄像机组件- 答案:C3. Unity中,如何创建一个新的游戏对象?- A. 通过点击“GameObject”菜单- B. 通过点击“Component”菜单- C. 通过点击“Assets”菜单- D. 通过点击“File”菜单- 答案:A4. 在Unity中,Prefab是什么?- A. 一个游戏场景- B. 一个游戏对象的模板- C. 一个Unity的插件- D. 一个Unity的资源文件- 答案:B5. Unity中,脚本编写通常使用哪种语言?- A. C#- B. C++- C. Java- D. Python- 答案:A6. 在Unity中,如何给游戏对象添加一个脚本?- A. 将脚本文件拖放到游戏对象上- B. 在游戏对象上点击右键,选择“Add Component” - C. 将游戏对象拖放到脚本文件上- D. 在游戏对象上点击右键,选择“Attach Script” - 答案:B7. Unity中,以下哪个是Unity的物理引擎?- A. PhysX- B. Havok- C. Bullet- D. NVIDIA FleX- 答案:A8. 在Unity中,如何修改游戏对象的属性?- A. 通过Inspector窗口- B. 通过Hierarchy窗口- C. 通过Project窗口- D. 通过Console窗口- 答案:A9. Unity中,以下哪个是用于创建UI元素的组件?- A. 按钮- B. 纹理- C. 摄像机- D. 灯光- 答案:A10. 在Unity中,如何保存当前场景?- A. 通过点击“File”菜单,选择“Save Scene”- B. 通过点击“File”菜单,选择“Save”- C. 通过点击“File”菜单,选择“Save As”- D. 通过点击“File”菜单,选择“Save All”- 答案:A11. Unity中,以下哪个是用于控制游戏对象朝向的组件?- A. 刚体组件- B. 碰撞器组件- C. 灯光组件- D. 朝向组件- 答案:A12. 在Unity中,如何创建一个新的材质?- A. 在Project窗口中右键点击,选择“Create”然后选择“Material”- B. 在Hierarchy窗口中右键点击,选择“Create”然后选择“Material”- C. 在Inspector窗口中右键点击,选择“Create”然后选择“Material”- D. 在Console窗口中右键点击,选择“Create”然后选择“Material”- 答案:A13. Unity中,以下哪个是用于控制游戏对象的缩放的属性?- A. Position- B. Scale- C. Rotation- D. Transform- 答案:B14. 在Unity中,如何实现游戏对象的旋转?- A. 使用Transform组件的Rotation属性- B. 使用Transform组件的Position属性- C. 使用Transform组件的Scale属性- D. 使用刚体组件的AngularVelocity属性- 答案:A15. Unity中,以下哪个是用于控制游戏对象的透明度的属性? - A. Alpha- B. Opacity- C. Transparency- D. Color- 答案:D。
unity3d笔试题

Unity1. u3d用u3d实现2d游戏,有几种方式1.利用引擎自带的GUI2.把摄像机设为Orthographic,用面片作为2d元素3.利用第三方插件:NGUI、2dToolkit2. u3d物体发生碰撞时,有几个阶段,分别对应的函数三个阶段,OnCollisionEnter/Stay/Exit()函数提供了一个用于保存读取数据的类,(playerPrefs),请列出保存读取整形数据的函数(string, int) 与(string)从唤醒到销毁有一段生命周期,请列出系统自己调用的几个重要方法(按执行顺序书写至少五个)。
Awake –>OnEnable –> Start –> Update –> FixedUpdate –> LateUpdate –> OnGUI –> OnDisable –> OnDestroy下如何安全的在不同工程迁移asset数据方法1,可以把assets目录和Library目录一起迁移,方法2,导出包Export Package方法3,用unity带的assets server功能或meta功能Ngui1 NGUI:有两张图集Altas1和Altas2,Altas1中有一张图Background,Altas2中有一张图叫Element,分别作出三个Sprite B1、E、B2,如何让这三个Sprite在镜头前显示顺序为B2盖住E且E盖住B1(如下图所示)将B1和E放在在同一个Panel P1下,调整E的depth高于B1;将B2放在另一个Panel P2下,将P2所在的z轴调整为-1(或更小的数)2 NGUI:图集里有图A,使用哪种控件可以实现在场景中显示为图B:图A 图BSlicedSprite,设置这张图在图集中的Border的上下左右边框范围,再拉伸UISprite3 NGUI: Sprite有哪几种分别有什么用途Sprite(一张普通的图片)Sliced Sprite(一个含有9个切片的Sprite,创建固定边框的拉伸控件最佳选择)Tiled Sprite(一个Sprite缩放填充整个区域,即平铺)Filled Sprite(一个Sprite有一个参数来控制哪些是可见的,常被用来做进度条或者技能CD)4 NGUI:NGUI的控件A上脚本里的方法OnClick()、OnPressed()的触发原理是什么控件有什么比较条件才能被触发这些方法UICamera每帧从鼠标的位置向场景打射线,遇到有Collidier的控件后,根据鼠标的操作(悬浮、点击、按下、松开等)向控件A上调用(funcName)触发。
Unity3D笔试题

炫彩互动Unity3D工程师笔试题一:值类型和引用类型有何区别?(6分)
二:C#中所有引用类型的基类是什么?(4分)
三:结构体和类有何区别?(5分)
四:请描述Interface与抽象类之间的不同(5分)
五:请简述GC(垃圾回收)产生的原因,并描述如何避免?(5分)
六:Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
(5分)
七:OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?(5分)
八:物理更新一般放在哪个系统函数里?(5分)
九:CharacterController和Rigidbody的区别?(5分)
十:MeshRender中material和sharedmaterial的区别?(5分)
十一:什么是协同程序?(5分)
十二:什么是渲染管道?(5分)
十三:.Net与Mono的关系?(4分)
十四:向量的点乘、叉乘以及归一化的意义?(6分)十五:Heap与Stack有何区别?(5分)
十六:概述序列化:(5分)
十七.如何优化内存?(10分)
十八:N个元素取出最大(小)的K个元素,请说明思路及算法?(10分)。
(完整word版)Unity3D客户端笔试题

1.请写出一个函数, 使用递归, 查找出一个GameObject下
的任意层级的指定名称的物体.
2.简述OnAnimatorMove()的意义和实际用处
3.简述Animator.MatchTarget的意义和实际用处
4.请用一段代码来说明四肢部分的IK在Unity中的实际用法
5.在手机上, 假如当玩家正在进行游戏的时候接听了一个电话或者按下home键暂时离开游戏, 然后重新回到游戏中的时候, 这时我们希望在脚本中知道玩家离开游戏并且重新回
来了, 应该如何实现?
6.简述为rigidBody.velocity赋值或者使用rigidBody.AddForce()函数, 两者在改变物体运动速度时的
不同特点.
7.简述LateUpdate的用场以及原理
8.分别简述Resources文件夹以及StreamingAssets文件夹
的意义, 以及他们的不同之处.
9.简述游戏运行时的主要性能消耗点,以及对应的优化方法。
10.简述Vector3.MoveTowards, Vector3.RotateTowards ,
Vector3.Lerp 以及Vector3.SmoothDamp的区别.。
佳诺明德教育Unity3D试题(八)

佳诺明德教育Unity3D试题一、什么叫动态合批?跟静态合批有什么区别?答:如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。
动态批处理操作是自动完成的,并不需要你进行额外的操作。
区别:动态批处理一切都是自动的,不需要做任何操作,而且物体是可以移动的,但是限制很多。
静态批处理:自由度很高,限制很少,缺点可能会占用更多的内存,而且经过静态批处理后的所有物体都不可以再移动了。
参考二、简述StringBuilder和String的区别?答:String是字符串常量。
StringBuffer是字符串变量,线程安全。
StringBuilder是字符串变量,线程不安全。
String类型是个不可变的对象,当每次对String进行改变时都需要生成一个新的String 对象,然后将指针指向一个新的对象,如果在一个循环里面,不断的改变一个对象,就要不断的生成新的对象,所以效率很低,建议在不断更改String对象的地方不要使用String 类型。
StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。
这一点我们平时使用中也许都知道,连接操作频繁的时候,使用StringBuilder对象。
三、Unity3D Shader分哪几种,有什么区别?答:表面着色器的抽象层次比较高,它可以轻松地以简洁方式实现复杂着色。
表面着色器可同时在前向渲染及延迟渲染模式下正常工作。
顶点片段着色器可以非常灵活地实现需要的效果,但是需要编写更多的代码,并且很难与Unity的渲染管线完美集成。
固定功能管线着色器可以作为前两种着色器的备用选择,当硬件无法运行那些酷炫Shader 的时,还可以通过固定功能管线着色器来绘制出一些基本的内容。
四、已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
佳诺明德Unity3D试题
1、请简述值类型与引用类型的区别。
答:值类型传递的是值本身,引用类型传递的是地址。
2、C#中所有引用类型的基类是什么?
答:object
3、请简述ArrayList和List<int>之间的主要区别。
答:LIST是接口类,ArrayList类实现了这个接口,可以这样用:List a=new ArrayList();
4、请简述GC(垃圾收集)产生的原因,并描述如何避免。
答:GC一般是回收在堆上的内存,所以一般new的话只new在栈上就好了,适当的做些objectpool,也会减轻gc的压力。
5、下列代码在运行中,会产生几个临时对象?
答:
6、下列代码在运行中会发生什么问题?如何避免?
答:
foreach会产生大量临时对象直接 Is.Clear()多好
7、请简述sealed关键字用在类声明时与函数声明时的作用。
答:作为类别的时候不能有子类作为函数的修饰符的时候在子类里不能重写函数
8、请简述private,public,protected,internal的区别。
答:private:私有成员,在类的内部才可以访问。
public:公共成员,完全公开,没有访问限制。
protected:保护成员,该类内部和继承中可以访问。
internal:当前程序集内可以访问。
9、请简述反射的实现原理。
答:审查元数据并收集关于它的类型信息的能力。
10、请简述.Net与Mono之间的关系。
答:mono是.net的一个工具,.net只能在windows平台下跑,mono可以跨平台,可以运行于Linux,FreeBSD,Unix,OS X和Solaris
11、请简述Unity3D支持的3种脚本语言的名称。
答:C#、JS、BOO
12、Unity3D是否支持写成多线程程序?如果支持的话要注意什么?
答:支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。
注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象
13、Unity3D中的协程(coroutine)和C#线程之间的区别是什么?
答:Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)
和LoadLevelAsync(异步加载关卡)后台加载场景的方法。
StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield 语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。
而LoadLevelAsync 则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜asynchronous[e ɪˈs ɪŋkr ən əs] .synchronous同步。
14、请说出Unity3D中勇于记录节点空间几何信息的组件名称,及其父类名称。
答:Transform,父类component
15、请简述四元数的作用以及四元数相对欧拉角的优点。
答:四元数用于表示旋转
相对欧拉角的优点:
(1)能进行增量旋转
(2)避免万向锁
(3)给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
17、请简述向量的点乘,向量的叉乘以及向量归一化的意义。
答:(1)点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影
(2)叉乘得到的向量垂直于原来的两个向量
(3)标准化向量:用在只关系方向,不关心大小的时候
18、请简述Unity3D下如何安全的在不同工程间迁移asset数据,请举出三种方法。
答:(1)可以把assets目录和Library目录一起迁移
(2)导出包
(3)用Unity带的assets Server功能
19、请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调方法的意义。
答:当renderer(渲染器)在任何相机上都不可见时调用:OnBecameInvisible
当renderer(渲染器)在任何相机上可见时调用:OnBecameVisible
20、Unity3d中的碰撞器和触发器的区别?
答:碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。
当Is Trigger=false 时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。