Unity3D培训
美国上市Unity3D培训机构

400-111-8989

热门课程

Unity3D培训,U3D企业面试题指导第二篇

  • 时间:2017-01-11
  • 发布:Unity3D培训
  • 来源:3D面试题

第一部分

1.什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。

主要步骤有:

本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。

2.如何优化内存?

有很多种方式,例如

1.压缩自带类库;

2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;

3.释放AssetBundle占用的资源;

4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

3、动态加载资源的方式?(有时候也问区别,具体请百度)

1.Resources.Load();

2.AssetBundle

4、什么是协同程序?

在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。

5、你用过哪些插件?

(最好多熟悉几个插件,问的时候好回答)

第二部分

1.反向旋转动画的方法是什么?

2.碰撞检测需要物体具备什么属性?

3.用代码实现第三角色控制器

4.实现吊机吊物体的功能

5.获取、增加、删除组件的命令分别是什么?

获取:GetComponent

增加:AddComponent

删除:Destroy

6.Animation.CrossFade命令作用是:(C)

A.动画放大 B.动画转换 C.动画的淡入为其他动画

7.Application.loadLevel命令为:(A)

A.加载关卡 B.异步加载关卡 C.加载动作

8.调试记录到控制台的命令是什么?

Debug.Log();

9.编辑器类存放路径是什么?

工程目录下的Assets/Editor文件夹下。

10.使用原生GUI创建一个可以拖动的窗口命令是什么?

GUI.DragWindow();

11.localPosition与Position的使用区别?

localPosition:自身位置,相对于父级的变换的位置。 Position:在世界坐标transform的位置

12.意义连线

Mathf.Round 四舍五入

Mathf.Clamp 限制

Mathf.Lerp 插值

13.写一个计时器工具,从整点开始计时,格式为:00:00:00

14.写出Animation的五个方法

15.怎么拿到一个对象上脚本的方法

GameObject.GetComponent<>();

16.上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。

17.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义?

点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;

叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;参考:http://blog.sina.com.cn/s/blog_9283b6f601017hfw.html

第三部分

1,在类的构造函数前加上static会报什么错?为什么?

构造函数格式为 public+类名如果加上static会报错(静态构造函数不能有访问修饰符)

原因:静态构造函数不允许访问修饰符,也不接受任何参数;

无论创建多少类型的对象,静态构造函数只执行一次;

运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数;

静态构造函数执行先于任何实例级别的构造函数;

显然也就无法使用this和base来调用构造函数。

2,C# String类型比stringBuilder类型的优势是什么?

如果是处理字符串的话,用string中的方法每次都需要创建一个新的字符串对象并且分配新的内存地址,而stringBuilder是在原来的内存里对字符串进行修改,所以在字符串处理方面还是建议用stringBuilder这样比较节约内存。但是string 类的方法和功能仍然还是比stringBuilder类要强。

string类由于具有不可变性(即对一个string对象进行任何更改时,其实都是创建另外一个string类的对象),所以当需要频繁的对一个string类对象进行更改的时候,建议使用StringBuilder类,StringBuilder类的原理是首先在内存中开辟一定大小的内存空间,当对此StringBuilder类对象进行更改时,如果内存空间大小不够,会对此内存空间进行扩充,而不是重新创建一个对象,这样如果对一个字符串对象进行频繁操作的时候,不会造成过多的内存浪费,其实本质上并没有很大区别,都是用来存储和操作字符串的,唯一的区别就在于性能上。

String主要用于公共API,通用性好、用途广泛、读取性能高、占用内存小。

StringBuilder主要用于拼接String,修改性能好。

不过现在的编译器已经把 String 的 + 操作优化成 StringBuilder 了,所以一般用String就可以了

String是不可变的,所以天然线程同步。

StringBuilder可变,非线程同步。

http://zhidao.baidu.com/question/240364840.html?qbl=relate_question_0&word=String%C0%E0%D0%CD%B1%C8stringBuilder%C0%E0%D0%CD%B5%C4%D3%C5%CA%C6

3,C# 函数Func(string a, string b)用Lambda表达式怎么写?

答:https://msdn.microsoft.com/zh-cn/library/bb397687.aspx

4,数列1,1,2,3,5,8,13...第n位数是多少?用C#递归算法实现

通项公式应该是an = a(n-1) + a(n-2)

a3=2=1+1

a4=3=1+1+1

a5=1+1+1+2

a6=1+1+1+2+3

.........

an=1+1+1+2+3+...+(n-2)+(n-3)

=2+(n-2)(n-3)/2 (n>=3) 这是通项公式,至于递归?…

5,一个简单的游戏,怪物会走动\攻击\死亡,游戏角色会走动,跳跃\攻击\格挡\死亡,还会接受玩家从输入端输入的指令,NPC会走动,他们彼此之间可以互相通信.请画出以上三种角色的UML图示.

答:

6,NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么

OnClick()

主要是在UICamera脚本中用射线判断点击的物体并通过SendMessage调用OnClick() OnPress()等函数,可以说NGUI的按钮是通过发消息这个方式调用的。

7,怎么判断两个平面是否相交?不能用碰撞体,说出计算方法

答:

https://www.baidu.com/s?wd=怎么判断两个平面是否相交&rsv_spt=1&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&rsv_pq=abcac720000083b6&rsv_t=ecdctoXQNURcfX%2FVm8MQdPtiBLttYO4HqJrZ1yNsNcxUqDe6DM4ovlQT4HdHZJMh6guT&inputT=2590&oq=C%23%20lamb&rsv_n=2&bs=c%23%20lambda

8, <愤怒的小鸟>给予初速度以后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法.

Vector3 v代表初速度v'代表现在的速度,假设小鸟是沿的z轴也就是transform.forward方向运动的质量为1,那么v‘=v-new Vector3(0,g*t,f*t),transform.Translate(v')做的就是抛物线运动(g为重力加速度不要用现实中的需要自己调试,f为阻力也要自己调试设置,t为时间)

建议:本文以 问题题目 和 知识点 为重,至于答案的对与错和答案的完整性,自己斟酌哦,当然你有好的答案可以告我哦,谢谢!

unity3d培训转载自网络

上一篇:Unity3D培训U3D企业面试题指导第一篇
下一篇:Unity3D工程师高频面试题,向着高薪粗发

Unity3D培训,U3D企业面试题指导第二篇

选择城市和中心
贵州省

广西省

海南省