[Unity3D]上海某大型游戏公司的基础面试题
一个小老乡跟我聊到去上海某大公司的基础面试题,面试结果不尽如人意,但还是分享了下面试的试题,刚刚第一次录制视频,给某人讲课,我感觉讲的还算比较耐心,但发现一些新手入门学习的弊端,可能是很普遍的现象,这也验证了我之前所说的,看视频学习的效果有时候并不是很好,锻炼少,看着老师写感觉我“懂”了,但实际并没有真真掌握,这里不是特指批评某人,希望某人不要介意!1、容易满足,易浮躁,所谓“满瓶不动,半瓶摇”,我讲的时候,在演示操作的时候,她总是说我知道了,我懂了,不要重复了,但轮到自己写的时候却不会了!学习的时候,还是要保持一颗谦逊的心,虚心求学!2、粗心大意,当我听到她说她懂了,她会了的时候我就出道题目测试下是否真的掌握了,然后开心的一会就写好,我一看,感觉不对,我叫她“翻译”自己写的东西,然后一看跟自己想的不一致,有时候考试也是这样,粗心大意,走出考场感觉信心满满,但直到成绩后却觉得不可思议,相信觉得是老师改错试卷了!其实不然,我想说的就是粗心要不得!
说出这么一个现象之后,接下来进入主题,分享上海某大型游戏公司的一个基础测试题!
1.Unity中碰撞器(Collider)和触发器(Trigger)的区别?
碰撞器(Collider)有碰撞效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数
触发器(Trigger)没有碰撞效果,isTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数
2.物体发生碰撞的必要条件?
必须带有collider碰撞器和rigibody刚体属性或者人物控制器,其实人物控制器就包含了前两者,另外一个物体也要必须带有Collider,Collider分类:网格碰撞器,盒子碰撞器,胶囊碰撞器,球型碰撞器,地形碰撞器!
3.CharacterController和Rigidbody的区别?
Rigidbody具有完全真实物理的特性,而CharacterController可以说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的。
4.物体发生碰撞时,有几个阶段,分别对应的函数?
三个阶段,OnCollisionEnter/Stay/Exit函数
5.物体发生碰撞时,几种施加压力的方式,描述出来?
rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成员函数
6.Unity3d提供了几种光源,分别是什么?
共4种,DirectionalLight、PointLight、SpotLight、AreaLight(用于烘焙)
7.物理更新一般在哪个系统函数里?
FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染帧效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适合用于物理引擎的计算,因为是跟每帧的渲染有关。Update就比较适合做控制。
8.移动相机动作在哪个函数里,为什么在这个函数里。
LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
9.简述一下Prefab的用处?
在游戏运行时实例化,prefab相当于一个模板,对你已经有的素材、脚本、参数做一个默认的配置,以便于以后的修改,同事prefab打包的内容简化了导出的操作,便于团队的交流。
10.简述一下对象池,你觉得在FPS游戏里哪些东西适合使用对象池?
对象池就存放需要被反复调用资源的一个空间,比如游戏中要常被大量复制的对象,子弹,敌人,以及任何重复出现的对象。
11.最后一题就不详细说了,时间也不早了,该洗洗睡了,可以参考这个来模仿:
1. 机枪兵在平时站立时,处于 空闲 状态;
初始化状态机,并将 空闲 状态作为初始状态放入状态机堆栈中;状态机堆栈:【空闲】
2. 机枪兵发现敌人,并且敌人在射程范围内,机枪兵开始攻击敌人;此时,机枪兵进入 攻击 状态;
进入 攻击 状态;状态机堆栈:【攻击】【空闲】
3. 敌人死亡,机枪兵停止攻击;此时,机枪兵回到 空闲 状态;
退出当前状态;状态机堆栈:【空闲】
4. 此时玩家发出进攻命令,此进攻命令是用A键点了远处的一个地面 place1 ,也就是没有具体目标的进攻;此时,机枪兵进入 移动进攻 状态;
进入 移动进攻 状态;状态机堆栈:【移动进攻】【空闲】
5. 在移动过程中,机枪兵发现了敌人,所以他要脱离原来的路径,走向发现的敌人;此时,机枪兵进入 追击 状态;
进入 追击 状态;状态机堆栈:【追击】【移动进攻】【空闲】
6. 机枪兵和敌人的距离小于了自己的射程之后,机枪兵停下来,并且攻击敌人;此时,机枪兵进入了 攻击 状态;
切换到 攻击 状态;状态机堆栈:【攻击】【移动进攻】【空闲】
7. 敌人死亡后,机枪兵重新寻路到place1,继续前进;此时机枪兵回到步骤4,回到了 移动进攻 状态。
退出当前状态;状态机堆栈:【移动攻击】【空闲】
[Unity3D]上海某大型游戏公司的基础面试题的更多相关文章
- MMORPG大型游戏设计与开发(服务器 游戏场景 核心详述)
核心这个词来的是多么的高深,可能我们也因为这个字眼望而却步,也就很难去掌握这部分的知识.之所以将核心放在最前面讲解,也可以看出它真的很重要,希望朋友们不会错过这个一直以来让大家不熟悉的知识,同我一起进 ...
- MMORPG大型游戏设计与开发(UI SYSTEM SHOW)
接下来一段时间,这些文件可能不再更新,期间我会学习和掌握一些前端知识.虽然我非常欣赏剑侠网络版叁和九阴真经的画面,但是那是一个庞大的游戏引擎,一般人是无法窥伺的,除非你是天才而且要拥有机器毫无中断的毅 ...
- 为上海莫大型重工企业提供基于TFS的软件研发流程管理培训
这周,和微软公司的朋友一起,受上海莫大型重工企业的要求,为企业软件部门一个60多人的软件团队提供了为其2天的全流程培训,培训基于微软Team Foundation Server 2017(TFS 20 ...
- MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)
我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...
- MMORPG大型游戏设计与开发(客户端架构 part15 of vegine)
一个接口需要统一的派生接口,这样做的好处在于能够统一的进行管理.我所知的脚本语言中,接口有多重接口,也还有所谓的虚基类,这些都是方便类的管理.在vengine(微引擎)中,统一的的接口管理为kerne ...
- MMORPG大型游戏设计与开发(概述)updated
1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...
- 【笔记】《DirectX 9.0 3D游戏开发编程基础》:Direct3D初始化
Direct3D初始化大概分为4个步骤: 1.获取接口IDirect3D9的指针.(Direct3DCreate9函数调用). 该接口用户获取系统中物理硬件设备的信息并创建接口IDirect3DDev ...
- 解决unity3d发布的网页游戏放到服务器上无法使用的问题
http://www.unity蛮牛.com/blog-2429-1226.html 第一次把unity3d发布的网页游戏放到服务器上(Win2003),发现无法使用.可以尝试以下办法. ...
- HTML5游戏开发技术基础整理
随着HTML5标准终于敲定.HTML5将有望成为游戏开发领域的的热门平台. HTML5游戏能够执行于包含iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是眼下跨平台应用开发的最佳实 ...
随机推荐
- neutron用linux_bridge部署provider网络
网卡配置: # The loopback network interface auto lo iface lo inet loopback # The primary network interfac ...
- Reorder array to construct the minimum number
Construct minimum number by reordering a given non-negative integer array. Arrange them such that th ...
- Factor Combinations
Factor Combinations Problem: Numbers can be regarded as product of its factors. For example, 8 = 2 x ...
- 小波变换C++实现(一)----单层小波变换
文章转自: http://www.cnblogs.com/IDoIUnderstand/archive/2013/03/30/3280724.html [小波变换]STL版 一维离散小波变换(DWT) ...
- sharepoint2010匿名访问
怎样在SharePoint 2010网站中启用匿名访问 SharePoint 2010的改动比较大,尤其是相对SharePoint Portal Server 2003来说.本文介绍在SharePoi ...
- C# 中的virtural和abstract
一. Virtual 方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual 的使用有两种情况: 1.在基类中定义了virtual方法,但是派生类中没有重写该虚方法,那么在对派生类 ...
- ACM/ICPC 之 最短路-SPFA+正逆邻接表(POJ1511(ZOJ2008))
求单源最短路到其余各点,然后返回源点的总最短路长,以构造邻接表的方法不同分为两种解法. POJ1511(ZOJ2008)-Invitation Cards 改变构造邻接表的方法后,分为两种解法 解法一 ...
- ajax删除数据后刷新页面
代码如图: 理解: 发送请求后删除name 属性为 name 的data;用rem .remove删除: 删除后找到页面上app的数量:定义page = len/12+1; 找到当前页是哪一页,如果l ...
- 【XLL API 函数】xlGetName
以字符串格式返回 DLL 文件的长文件名. 原型 Excel12(xlGetName, LPXLOPER12 pxRes, 0); 参数 这个函数没有参数 属性值和返回值 返回文件名和路径 实例 \S ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言
前端时间听一个技术朋友说 LayIM 2.0 发布了,听到这个消息抓紧去官网看了一下.(http://layim.layui.com/)哎呀呀,还要购买授权[大家支持一下哦],果断买了企业版,喜欢钻研 ...