首頁 > 後端開發 > C++ > 為什麼我的 Unity 遊戲管理器腳本只運行一次,如何修復?

為什麼我的 Unity 遊戲管理器腳本只運行一次,如何修復?

Patricia Arquette
發布: 2025-01-14 07:28:43
原創
592 人瀏覽過

Why Does My Unity Game Manager Script Only Run Once, and How Can I Fix It?

Unity 遊戲管理器:腳本異常行為

在您的 Unity 專案中,您建立了一個旨在跨所有場景存取的遊戲管理器腳本。但是,您遇到了一個問題,即腳本的功能在模擬啟動後只執行一次,儘管承載腳本的物件在場景轉換中持續存在。

理解預先載入場景的概念

要解決此問題,您必須在專案中建立預先載入場景。這是 Unity 文件中經常被忽略的關鍵步驟。

建立預先載入場景的步驟:

  1. 建立一個名為「preload」的場景:此場景必須在建置管理員中指定為場景 0。
  2. 新增一個名為「__app」的遊戲對象:在名為「__app」的預先載入場景中放置一個空的遊戲對象,並向其附加 DontDestroyOnLoad 組件。這確保了物件在場景之間持續存在。
  3. 附加通用行為:將任何對遊戲整體功能至關重要的腳本或組件(例如聲音效果、評分和通用管理)放置在「__app」物件上。這些組件在整個專案中都可存取。

在其他腳本中定位通用行為:

要從跨場景的其他腳本存取這些通用行為,請使用 Object.FindObjectOfType 方法:

<code class="language-c#">Sound sound = Object.FindObjectOfType<Sound>();
Game game = Object.FindObjectOfType<Game>();</code>
登入後複製

其他技巧:

  • 始終從預先載入場景啟動您的遊戲:這確保了「__app」物件及其附加元件已載入。
  • 考慮使用全域存取類別:為了更簡化的方案,建立一個靜態類,直接存取這些通用行為,從而無需重複呼叫 Object.FindObjectOfType

結論:

透過實現預先載入場景並正確管理通用行為的持久性,您可以確保您的遊戲管理器腳本在 Unity 專案的所有場景中都能按預期工作。

以上是為什麼我的 Unity 遊戲管理器腳本只運行一次,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板