MIL9——模拟面试题

问题

Lua

  1. 请说出Lua中常用的数据类型(至少说出6种)
  2. Lua中 pairs​ 和 ipairs​ 的区别
  3. Lua中常用的元方法有哪些?至少说出3个元方法
  4. Lua中元表的作用
  5. Lua中 __index​ 和 __newindex​ 有什么作用

Unity

  1. Unity中判断两个2D矩形是否相交,有几种方式?(请至少说出两种方式)
  2. Unity中想要制作角色的连招功能,在制作状态机时我们一般如何处理?
  3. Unity中如果想要在动作的某一时刻进行伤害检测,我们应该怎么做?(请说出两种做法)
  4. Unity中想要制作自动寻路逻辑,我们应该怎么做?(请至少说出两种做法)
  5. 游戏编辑器(比如 角色编辑器、关卡编辑器、地图编辑器等工具)的本质是什么?

答案

Lua

  1. 请说出Lua中常用的数据类型(至少说出6种)

    答案:

    • nil
    • boolean
    • number
    • string
    • table
    • function
    • userdata
    • thread
  2. Lua中 pairs​ 和 ipairs​ 的区别

    答案:

    • pairs​ 可以遍历出表中的所有键值对信息,在遍历不规则表时,建议用它
    • ipairs​ 只能遍历出连续信息,对于不规则结构,可能会缺失
  3. Lua中常用的元方法有哪些?至少说出3个元方法

    答案:

    • __index
    • __newindex
    • __tostring
    • __call
    • __add​ 运算符 +
    • __sub​ 运算符 -
    • __mul​ 运算符 *
    • __div​ 运算符 /
    • __mod​ 运算符 %
    • __unm​ 运算符 -
    • __concat​ 运算符 ..
    • __eq​ 运算符 ==
    • __lt​ 运算符 <
    • __le​ 运算符 <=

  4. Lua中元表的作用

    答案: 为一个表设置元表后,允许该表的行为关联元方法

  5. Lua中 __index​ 和 __newindex​ 有什么作用

    答案:

    • __index​ 用于查找:如果访问不存在的数据,由 __index​ 提供最终结果
    • __newindex​ 用于更新:如果对不存在的数据赋值,由 __newindex​ 对数据进行赋值

Unity

  1. Unity中判断两个2D矩形是否相交,有几种方式?(请至少说出两种方式)

    答案:

    1. 使用Unity物理系统进行碰撞检测
    2. 使用Unity中范围检测相关API
    3. 自己写算法进行检测
  2. Unity中想要制作角色的连招功能,在制作状态机时我们一般如何处理?

    答案:

    1. 状态机条件可以添加一个 Trigger​ 类型和 Int​ 类型
      Trigger​ 条件主要用于触发动作,Int​ 条件主要用于连招计数判断
    2. 逻辑上,当攻击按键输入时,我们需要触发动作,并且进行攻击计数
      每次按键时都应该重新进行攻击计数延迟清零
  3. Unity中如果想要在动作的某一时刻进行伤害检测,我们应该怎么做?(请说出两种做法)

    答案:

    1. 添加动画事件
    2. 在切换动画一开始,进行延迟触发,延迟时间为想要触发伤害的时间(延迟可以用延迟函数,也可以用协同程序)
  4. Unity中想要制作自动寻路逻辑,我们应该怎么做?(请至少说出两种做法)

    答案:

    1. Unity自带的网格寻路系统
    2. 自定义寻路算法(比如 A星寻路算法)
  5. 游戏编辑器(比如 角色编辑器、关卡编辑器、地图编辑器等工具)的本质是什么?

    答案:数据的图形化编辑工具