【Unity 题型】脚本开发

知识涉及:Unity

脚本生命周期 要点


以下关于密封类的说法,正确的是

A. 密封类可以用做基类
B. 密封类可以使抽象类
C. 密封类永远不会有任何派生类
D. 密封类或密封方法可以重写或继承

答案解析:

  • sealed关键字密封该类,不可派生或继承该类。

关于MonoBehavior.LateUpdate函数描述错误的是

A. 当 MonoBehaviour类 被启用后,每帧调用一次
B. 常被用于处理 Rigidbody 的更新
C. 在所有 Update函数执行后才能被调用
D. 常被用于实现跟随相机效果,且目标物体的位置已经在Update函数中被更新

答案解析:

  • LateUpdate常用于处理摄像机的跟随
  • FixedUpdate常用于处理物理更新

若要使一个物体在被销毁时触发一个动作,可以放在____系统方法中?

A. OnDestroy
B. OnDisable
C. OnApplicationQuit
D. OnTriggerExit

答案解析:

  • OnDestroy:脚本被销毁时调用
  • OnDisable:组件被禁用时调用
  • OnApplicationQuit:在进行退出操作时调用,如退出游戏
  • OnTriggerExit:在触发结束时调用

物体与脚本对象在启用状态下,OnEnable,Awake,Start执行顺序是

A. Awake -> OnEnable -> Start
B. OnEnable -> Awake -> Start
C. Awake -> Start -> OnEnable
D. Start -> Awake -> OnEnable

答案解析:

  • Unity生命周期:
    Awake -> OnEnable -> Start -> FixedUpdate -> Update -> LateUpdate -> OnGUI -> OnDisable -> OnDestroy -> OnApplicationQuit

移动相机动作在___函数里
A. Awake
B. LateUpdate
C. Update
D. OnMouseButton

答案解析:

  • LateUpdate中执行,在Update之后执行,防止出现一帧未显示物体对象的情况。

Component 要点


如何为新创建的物体添加一个脚本?

A. gameObject.AddComponent<T>
B. AddComponentMenu
C. RequireComponent<T>
D. Component.GetComponent<T>

答案解析:

  • AddComponentMenu:通过Unity菜单栏下 Component -> Scripts 中添加脚本
  • RequireComponent:需求指定脚本,若当前对象上不存在该脚本,控制台会报错提示该对象缺少该脚本或组件。
  • D项不存在

Unity的C#脚本中下列哪个方法能够获取一个物体所有的子物体元素集合?

A. GetComponentInChildren<T>()
B. GetComponentsInChildren<T>()
C. GetComponent<T>()
D. GetComponents<T>()

答案解析:

  • GetComponentInChildren:返回查到的子对象群中第一个组件或脚本
  • GetComponentsInChildren:返回查到子对象群中所有的关于这个脚本或组件(数组)
  • GetComponent/GetComponents同上,不过仅从该脚本所挂载物体上查找。

某 GameObject 有一名为 MyScript 脚本,该脚本内有一名为 DoSomething()函数,则如何在该 GameObject 的另一个脚本中调用该函数?

A. GetComponent<MyScripts>().DoSomething()
B. GetComponent<Script>().DoSomething()
C. GetComponent<MyScript>.Call("DoSomething")
D. GetComponent<Script>.Call("DoSomething")

答案解析

  • 在同一物体上获取脚本:GetComponent<T>()
  • 在不同物体上获取脚本:XXX.GetComponent<T>()

Transform 要点


以下选项中,哪个可以将游戏对象绕z轴逆时针旋转90度?

A. transform.rotation = Quaternion.Euler(0, 0, 90);
B. transform.rotation = Quaternion.Angle(0, 0, 90);
C. transform.Rotate(new Vector3(0, 0, 90));
D. transform.Rotate(new Vector3(90, 0, 0));

GameObject 要点


如何通过脚本来删除其自身对应的 GameObject?

A. Destory(gameObejct);
B. this.Destroy();
C. Destroy(this);
D. 上述三项均可以

答案解析:

  • Destroy(gameObject)效果=this.Destroy(gameObject),可省略this
  • B项缺少指明销毁对象
  • Destroy(this):指销毁该脚本

如何销毁一个UnityEngine.Object及其子类?

A. 使用Destroy()方法
B. 使用Delete()方法
C. 使用Destruction()方法
D. 使用Dispose()方法

答案解析:

  • 暂无

(多选题)下列对Transform.Find()和GameObject.Find() 方法描述正确的是

A. Transform.Find()GameObject.Find()都不能找到未被启用的物体
B. Transform.Find()GameObject.Find()找到的都是物体的 Transform组件
C. Transform.Find()GameObject.Find()都是用物体名称来查找
D. Transform.Find()GameObject.Find()都支持路径查找

答案解析:

  • Transform.Find():可找到未被启用物体的 Transform组件
上一篇:k8s认证及ServiceAccount


下一篇:引擎入门 | 创建双杆射击游戏(组件 1)