zoukankan      html  css  js  c++  java
  • [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,回到了 移动进攻 状态。

    退出当前状态;状态机堆栈:【移动攻击】【空闲】

  • 相关阅读:
    Python中 sys.argv[]的用法简明解释
    Python--文件操作和集合
    Python--各种参数类型
    Python-- 字符串格式化 (%操作符)
    Python--绝对路径和相对路径
    Python3.x和Python2.x的区别
    关于ArrayList使用中的注意点
    Sun公司建议的Java类定义模板
    SWT组件之Table浅析
    mysql的相关命令整理(二)
  • 原文地址:https://www.cnblogs.com/dingxiaowei/p/3589475.html
Copyright © 2011-2022 走看看