Unity 如何建構遊戲?
了解遊戲物件、組件和生命週期
該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。
Unity 是一個透過將必要的功能作為組件附加到遊戲物件來配置遊戲的引擎。 它更接近組合小功能而不是加深繼承結構。
GameObject 更像是一個空容器
場景中可見的角色、攝影機和燈光大多是遊戲物件。 但是,遊戲物件本身不會在螢幕上出現或移動。
Player GameObject
├─ Transform
├─ SpriteRenderer
├─ Rigidbody2D
└─ PlayerController
Transform有位置、旋轉和大小。 SpriteRenderer繪製影像,Rigidbody2D參與物理計算。 開發人員創建的 C# 腳本也成為元件。
MonoBehaviour 的生命週期
給定時間點的統一MonoBehaviour呼叫該函數。
using UnityEngine;
public class PlayerMover : MonoBehaviour
{
[SerializeField] private float speed = 5f;
private void Start()
{
Debug.Log("玩家已準備就緒");
}
private void Update()
{
float x = Input.GetAxisRaw("Horizontal");
transform.position += Vector3.right * x * speed * Time.deltaTime;
}
}
Awake當準備其初始狀態時,Start在第一幀之前連接到另一個物件時經常使用。 Update每個幀都會被調用,因此它有利於處理輸入和一般更新。
如果你施加物理力量,它就會以固定的時間間隔被召喚。FixedUpdate考慮。 所有程式碼Update您應該先檢查每個框架是否確實需要它,而不是將其放入 。
場景和預製件
場景是目前放置在螢幕上的一組物件。 Prefab 是一個可重複使用並儲存為資源的遊戲物件配置。
每次放置同一敵人多次時,可以複製預製件,而無需重置組件。 修改的內容也可以基於Prefab反映到多個實例中。
啟動 Unity 時,最好在一個場景中只建立玩家、地板和目標點,然後完成從輸入到碰撞的流程。 區分每個組件的職責比區分遊戲物件的職責更重要。