Unity5 Roll A Ball專案筆記
阿新 • • 發佈:2018-12-15
Scenes
Unity開發的遊戲是由一個個場景組成的。
Prefabs預製件
預製件的相當於一個模板,利用Prefab創造的物件,可以進行統一的配置和編碼。
GameObject
GameObject
是Unity中所以實體的基類。同樣的,該型別可以向任何子類目標進行轉換。
MonoBehaviour
所有使用Unity指令碼(C#)的類,都需要顯示的繼承這個類。該型別有幾個關於生命週期的函式:
Awake()
:該函式在載入指令碼時進行呼叫。僅僅會呼叫一次,而且是在所用的Object都初始化完畢後進行呼叫的,所以可以使用該函式呼叫所有的物件。Start()
:函式在指令碼被允許使用的第一幀開始呼叫。它和Awake
Update()
:如果一個MonoBehaviour被允許,該函式在每一幀進行呼叫,用於重新整理。FixedUpdate()
:固定幀數進行呼叫,如果使用了RigidBody
進行物理模擬,那麼需要重新整理的內容因該放在該函式中。LateUpdate()
:每一幀進行更新,不過是在其他所有更新函式呼叫完成之後,最後進行更新,一般用於跟隨攝像機的操作
transform
每一個Unity的實體都有一個transform物件,用於儲存、操作位置、旋轉和尺寸等。
Collider
用於碰撞檢測的,每個實體的外側的那一層包圍線就是,有一些子類,比如:BoxCollider, SphereCollider, CapsuleCollider, MeshCollider, PhysicMaterial, Rigidbody.。用於檢測碰撞等。如果需要檢測碰撞等的事件,需要在isTrigger
RigidBody
如果一個物件添加了該元件,那麼該物件的控制權交給物理引擎,並自動新增一些物理屬性。使用了RigiBody的物件,需要使用FixedUpdate
函式進行更新,因為物理引引擎是根據時間步長計算的,Update
是根據時間計算的。RigidBody有時會有慢動作現象,因為物理引擎假設的距離是現時世界的一米,如果物體非常大,而在實際中假設的很小,就會出現這種現象。所以要控制與現實中的比例。
獲取一個物件的RigidBody的方式:
public Rigidbody rb;
rb = GetComponent<Rigidbody>();
AddFore()
Destory()
:移除一個物件。isKinematic()
:用於控制RigidBody是否受物理影響。如果不受影響,那麼一般的物理操作,比如碰撞等,不會影響該物體。OnTriggerEnter(Collider)
:用於檢測Collider的碰撞,如果是有效的Collider過來,那麼會觸發這個函式,傳入的引數是觸發該函式的Collider物件,獲取碰撞的一般方式:
需要用到tag進行標記private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Pick Up")) { other.gameObject.SetActive(false); // 碰撞後無效了 } }
Vector3
表示一個3維向量和一個點。
獲取輸入
float moveVertical = Input.GetAxis("Vertical");
float moveHorizontal = Input.GetAxis("Horizontal");
關於Unity編輯器中的槽
指令碼類的public物件直接顯示在外部,需要拖入需要關聯的物件。