首頁 >後端開發 >C++ >如何確保我的 Unity 遊戲管理器腳本僅執行一次並在場景中持續存在?

如何確保我的 Unity 遊戲管理器腳本僅執行一次並在場景中持續存在?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-14 09:23:44775瀏覽

How Can I Ensure My Unity Game Manager Script Executes Only Once and Persists Across Scenes?

確保 Unity 遊戲管理器腳本跨場景的單次執行和持久性

挑戰:

許多 Unity 開發人員遇到一個常見問題:他們的遊戲管理器腳本旨在跨場景持續存在,儘管包含在每個場景中,但僅執行一次。

解決方案:預先載入場景

解決這個問題的關鍵是預先載入場景,這是 Unity 專案設定中一個至關重要但經常被忽略的元素。

建立預先載入場景:

  1. 建立一個新場景:將其命名為「preload」並確保在「建置設定」中將其設定為場景索引 0。
  2. 新增一個空的遊戲物件:在「預先載入」場景中,建立一個名為「__app」的空遊戲物件。
  3. 附加DontDestroyOnLoad:DontDestroyOnLoad腳本附加到「__app」遊戲物件。

組織遊戲行為:

所有全域遊戲行為(資料庫連線、聲音管理器、記分等)都應該獨佔預先載入場景中的「__app」遊戲物件。 這確保了它們在所有場景中的可用性。

簡化的場景載入:

為了簡化流程,請考慮新增一個腳本,在預先載入場景尚未啟動時自動載入該腳本。

替代方案:全域變數(更簡單的情況)

對於不太複雜的項目,使用全域變數可以提供更簡單的解決方案。 使用一行程式碼存取這些變數:

<code class="language-csharp">public static Sound sound = Object.FindObjectOfType<Sound>();</code>

總結:

透過實現預先載入場景並遵循這些最佳實踐,您的遊戲管理器腳本將僅執行一次,在所有場景中持續存在,並提供對基本遊戲功能的一致存取。

以上是如何確保我的 Unity 遊戲管理器腳本僅執行一次並在場景中持續存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn