Rumah >pembangunan bahagian belakang >C++ >Mengapa Skrip Pengurus Permainan Perpaduan Saya Hanya Berjalan Sekali?
Dalam pembangunan permainan Unity, pengurus permainan yang gigih merentas adegan adalah penting. Walau bagaimanapun, masalah biasa ialah skrip dilaksanakan sekali sahaja pada permulaan, walaupun terdapat dalam semua adegan.
Perpaduan tidak mempunyai mekanisme pramuat automatik. Tanpa adegan pramuat yang berdedikasi, permulaan pengurus permainan anda dan komponen penting tidak akan bertahan dalam peralihan adegan.
Berikut ialah cara untuk membetulkannya:
Semua kefungsian pengurus permainan teras anda (sambungan pangkalan data, pengurusan bunyi, penjejakan skor, dll.) hendaklah dilampirkan sebagai komponen kepada GameObject "_app" dalam adegan pramuat anda. Ini menjamin kegigihan mereka merentas semua adegan seterusnya.
Dua kaedah wujud untuk mengakses objek permainan daripada skrip lain:
Kaedah 1: FindObjectOfType
Gunakan ini dalam kaedah Awake()
skrip anda:
<code class="language-C#">Sound sound = Object.FindObjectOfType<Sound>(); Game game = Object.FindObjectOfType<Game>();</code>
Kaedah 2: Pembolehubah Global Statik (Lebih Cekap)
Pendekatan yang lebih diperkemas menggunakan pembolehubah global statik:
<code class="language-C#">public static class GameManager { public static Sound sound; public static Game game; static GameManager() { GameObject app = GameObject.Find("_app"); sound = app.GetComponent<Sound>(); game = app.GetComponent<Game>(); } }</code>
Dengan mencipta adegan pramuat dan melampirkan komponen pengurus permainan anda pada GameObject yang berterusan, anda memastikan pelaksanaan yang konsisten merentas semua adegan Unity anda. Pilih kaedah akses objek yang paling sesuai dengan gaya pengekodan anda.
Atas ialah kandungan terperinci Mengapa Skrip Pengurus Permainan Perpaduan Saya Hanya Berjalan Sekali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!