Unity 實作全域遊戲管理器 Game Manager
分類
建立時間: 2023年3月20日 12:30
更新時間: 2023年3月20日 12:30
說明
起初我設計的遊戲管理器是建立一個遊戲物件,在遊戲物件加上自訂的遊戲管理器腳本,然後將遊戲物件預製,接著在每個場景中加入這個預製。
最近在學習 Unity 中,看到一個不錯的設計遊戲管理器的方法,只需一個遊戲物件作為遊戲管理器,不用再預製了,這個物件不會不見,當然腳本的資料會一直存在,不會初始化,如果這種情境符合你的需求,不妨來瞧瞧此篇的作法。
實作
作法如下
- 新增一個 Global 場景
- 新增一個 GameManager 遊戲物件
- 在 Assets/Scripts 新增 GameManager.cs 腳本,並加載到 GameManager 遊戲物件
備註: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
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!