知识涉及: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组件