Unity 實作全域遊戲管理器 Game Manager


建立時間: 2023年3月20日 12:30
更新時間: 2023年3月20日 12:30

說明

起初我設計的遊戲管理器是建立一個遊戲物件,在遊戲物件加上自訂的遊戲管理器腳本,然後將遊戲物件預製,接著在每個場景中加入這個預製。

最近在學習 Unity 中,看到一個不錯的設計遊戲管理器的方法,只需一個遊戲物件作為遊戲管理器,不用再預製了,這個物件不會不見,當然腳本的資料會一直存在,不會初始化,如果這種情境符合你的需求,不妨來瞧瞧此篇的作法。

實作

作法如下

  1. 新增一個 Global 場景
  2. 新增一個 GameManager 遊戲物件
  3. 在 Assets/Scripts 新增 GameManager.cs 腳本,並加載到 GameManager 遊戲物件

preview

備註:Level, Lives, Score 是我自訂的資料,可忽略,不影響核心功能。

GameManager.cs

腳本主要程式如下

GameManager.cs

using UnityEngine;

public class GameManager : MonoBehaviour
{
    private void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}

DontDestroyOnLoad() 就是載入新場景時不要催毀物件。最主要的程式如上,接著就可以客製化自己所需的程式。

使用說明

Global 場景不一定要當作第一個場景,也許跑過場動畫場景不需要遊戲管理器,在你需要遊戲管理器時,載入 Global 場景,接著再載入其他場景,也許是主選單場景,或者是遊戲場景,所以 Global 場景可以什麼都不做,馬上載入下一個場景,當然如果你想要在 Global 場景做任何事情也都是可以的。

Global 場景什麼都不做,帶了3條命載入 Game 場景範例。

GameManager.cs

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    /// <summary>
    /// 生命
    /// </summary>
    public int lives = 3;

    private void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }

    // Start is called before the first frame update
    private void Start()
    {
        SceneManager.LoadScene("Game");
    }
}

參考

觀看次數: 3137
gameglobalmanagersceneunity
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!