典型的一些如手写排序算法、一些基本数学问题,在此就不列举了。以下整理出一些代表性的、有参考价值的题,真实面试题,附有本人的解答,欢迎讨论。

题1.指出下列哪些属于值类型?

int  System.Object  string  UnityEngine.MonoBehaviour  UnityEngine.Object  struct  enum  Vector3

说明:System.Object是所有类型的基类,其本身是引用类型。

题2.获取、增加、删除组建的命令分别是什么?

获取:   GetComponent()     增加:   AddComponent()     删除:   RemoveComponent()

题3.简述你使用过哪些第三方插件?

Skyshop做IBL和PBR,Shatter Toolkit做模型物理破碎,Final IK插件做反向运动学计算。

说明:IBL是基于图像的渲染,PBR是基于物理的渲染。

题4.简述一下对象池原理。什么情况下使用?

对象池可以将对象存储在一块预先划出的内存区域中,当需要时可以取出使用,而不需要每次都要实例化新的对象。一般在需要循环获取一个对象但是不关心对象的创造时机时的情况下可以使用。

说明:对象池在很多语言中都有实现。所以回答不必拘泥于某种具体的语言,说出它的思想即可。

题5.使用mipmap有什么好处和坏处?什么情况下使用?

答:使用mipmap可以降低现存带宽占用,提升渲染性能,还能减少远处因为分辨率较大的纹理因过分缩小而产生的失真。坏处是会使内存占用变大,某些情况下会导致远处贴图模糊。

说明:mipmap是一种纹理技术, 在三维世界中,显示一张图的大小与摄象机的位置有关,近的地方,图片实际象素就大一些,远的地方图片实际象素就会小一些,就要进行一些压缩,例如一张64*64的图,在近处,显示出来可能是50*50,在远处可能显示出来是20*20.如果只限于简单的去除某些像素,将会使缩小后的图片损失很多细节,图片变得很粗糙,因此,图形学有很多复杂的方法来处理缩小图片的问题,使得缩小后的图片依然清晰.

Mipmap纹理技术是目前解决纹理分辨率与视点距离关系的最有效途径,它会先将图片压缩成很多逐渐缩小的图片,例如一张64*64的图片,会产生64*64,32*32,16*16,8*8,4*4,2*2,1*1的7张图片,当屏幕上需要绘制像素点为20*20 时,程序只是利用 32*32 和 16*16 这两张图片来计算出即将显示为 20*20 大小的一个图片,这比单独利用 32*32 的那张原始片计算出来的图片效果要好得多,速度也更快.

当然你不需要回答这些原理,简单描述一下即可。

题6.叙述一下unity3D中的drawcall合并。

答:Unity中使用两种方法进行drawcall合并:静态和动态。勾选static选项的物体系统强制进行静态合并;对于非static的物体,在材质相同的情况下系统会自动进行动态合并。

说明:就如同D3D的Render()一样,Unity每次在准备数据并通知GPU渲染的过程称为一次Draw Call。注意本题不是要你解释"Drawcall"而是解释"Drawcall合并"。

题7.简述兰彻斯特方程在游戏开发中的用途α[M^2- m(t)^2]=β[N^2- n(t)^2]和α[M-m(t)]=β[N-n(t)]

答:式中α、β分别为交战双方在单位时间内毁伤对方战斗单位数,m(t)、n(t)表示在战斗开始后t时刻双方在战斗中尚存的作

战单位数,假设交战开始时刻双方的初始战斗单位数为m(0)=M,n(0)=N,在交战过程中双方战斗单位数符合下列状态方程:

α[M^2- m(t)^2]=β[N^2- n(t)^2]

或者

α[M - m(t)]=β[N - n(t)]。

说明:基本上答到意思就行 。

题8.

int[] a = new int[128];foreach (int aa in a)
{  foreach(int bb in a)  {   foreach(int cc in a)   {    cc = 0;   }  }
}

上述C#编写的代码片段有什么问题?

答:首先,在foreach中对临时变量cc赋值本身语法就是错误的,编译器通不过编译。其次,这种嵌套多次使用foreach循环的方式是不妥的,因为foreach语句会产生少量的内存损耗,在性能上也不佳。

说明:(1)要说出语法错误; (2)说出foreach内存和性能损耗,或者不如for语句等缺点。

题9.

public class Dialog{}
{public static GameObject m_NPC;public static void ShowDialog(){m_NPC=Object.Instanciate(Resource.Load("npc") as GameObject);SaySomething(m_NPC);}
}void static SaySomething(GameObject npc)
{...
}

假定以上使用C#编写的类没有语法错误,且能在Unity3D引擎中正常使用。问该类存在哪些问题或隐患?

答:以上Dialog类在实际中会多次调用,而每次调用都要重新载入同样的资源和实例化,这是一种损耗性能的做法。

说明:这道题根据题目描述可以推测是取自实际项目中的,那么肯定是存在一定的不妥才拿出来出题的。各位如果还有什么好的建议可以留言。

题10.

 1 public struct FallCacheInfo
 2 {
 3     public Transform parent;
 4 }
 5
 6 public class LevelManager
 7 {
 8     Transform transform;
 9     Dictionary<int,FallCacheInfo> m_FallInfo = new Dictionary<int,FallCacheInfo>();
10
11     void Fall(int id)
12     {
13         FallCacheInfo fci;
14         fci.parent = null;
15         m_FallInfo[id] = fci;
16
17         fci.parent = GameObject.findChild("POS");
18     }
19 }
20
21 void OnWaitFallActorLoaded(int id)
22 {
23     FallCacheInfo fci;
24     if(m_FallInfo.TryGetValue(id,out fci))
25     {
26         transform.parent = fci.parent;
27     }
28 }

上述代码,假定场景中存在名为"POS"的对象,transform也为存在的对象,Fall和OnWaitFallActorLoaded函数依次被执行,请问transform最终被挂到哪个物体(或节点)下?

答:最终被挂在根节点下。

说明:请读者思考。

转载于:https://www.cnblogs.com/sitonmoon/p/5510617.html

Unity游戏程序员面试题及解答相关推荐

  1. 程序员面试题精选算法58题加答案

    这篇文章总结的非常好,以防以后找不到,在此转载. 程序员面试题精选(01)-把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点 ...

  2. 2008年上半年程序员考试试题分析

    文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功   让系分来得更猛烈 ...

  3. 计算机水平考试 初级,计算机水平考试-初级程序员下午试题模拟38

    计算机水平考试-初级程序员下午试题模拟38 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 初级程序员下午试题模拟38试题一阅读以下说明 ...

  4. 程序员面试题精选100题

    程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向. 比如将二元查找树   ...

  5. 全国计算机软件水平考试试题,全国计算机软件水平考试初级程序员模拟试题.docx...

    1 真理惟一可靠的标准就是永远自相符合 全国计算机软件水平考试初级程序员模拟试题 全国计算机软件水平考试初级程序员模拟试题 上午试卷本试卷的试题中共有 40 个空格,需要全部解答,每个空格 1.875 ...

  6. 史上最强女游戏程序员

    也许你听说过John Carmack 和Tim Sweeney等大牛的名字,而向来游戏工业都是阳盛阴衰,适逢国际妇女节,今天我为大家介绍游戏业界一位史上最强女游戏程序员:Corrinne Yu. 简历 ...

  7. java 用程序代码解释继承_关于初级java程序员笔试题

    关于初级java程序员笔试题 Sun 认证Java程序员考试内容涉及Java所有相关知识.编程概念及applet开发技巧.下面是小编整理的关于初级java程序员笔试题,欢迎大家参考! 第一题:判断题 ...

  8. 2006上半年程序员级试题答案

    2006上半年程序员级试题答案 上午(每空1分) (1) A (16) C (31) A (46) D (61) C (2) D (17) C (32) C (47) B (62) A (3) D ( ...

  9. 游戏程序员的学习资料

    为什么80%的码农都做不了架构师?>>>    三维图形学:  搞三维图形学首先还是要扎扎实实的先看解析几何.线性代数.计算几何的教材,后面的习题一个都不能少.国内数学书还是蛮好的. ...

最新文章

  1. 我开发的代码,如何申请版权_代码简介:我花了3个月时间申请开发人员职位。 这是我学到的。...
  2. android 启动速度优化终极方案
  3. 加盟依图科技后,颜水成首篇顶会论文提出“高效多人体姿态检测SPM”
  4. vue 报错./lib/html5-entities.js, this relative module was not found
  5. crontab、chkconfig、systemd、unit、targ
  6. header(Content-Type:text/html;charset=utf-8);
  7. 概率统计笔记:高斯分布的等高线
  8. 接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
  9. C/C++语言函数学习(4)字符串处理函数
  10. 【Java】转置String的各种方法分析
  11. PHP特级课视频教程_第二十七集 Coreseek安装与测试_李强强
  12. 2017.9.6 礼物 思考记录
  13. php英文书籍在线,php英语四级在线练习系统
  14. 【转】程序员:如何写出杀手级简历
  15. 暗黑破坏神(DIABLOII 1.11B)BOT 及源代码公开下载
  16. YUV和RGB格式分析
  17. css margin 塌陷 经典bug
  18. uniapp打包安卓APP生成自有证书的教程,简单实用
  19. Kafka之Controller(Broker的领导者)
  20. Mad Scientist[USACO]

热门文章

  1. POJ 7834:分成互质组
  2. P2V过程中问题解决方法小结
  3. 服务器被突然入侵的处理经验分享
  4. 精读《async/await 是把双刃剑》 存在的问题和解决方法
  5. 根据CSDN大数据进行涨粉的方法探讨
  6. mysql密码忘了怎么办?/mysql修改密码
  7. 15分钟实战机器学习:验证码(CAPTCHA)识别
  8. 如何降低期货交易成本有什么办法(期货投资如何降低风险)
  9. Mysql安装(全网最清晰直观)
  10. C++笔记 命名空间 namespace,全局作用域符::的使用