Rumah > pembangunan bahagian belakang > C++ > Mengapa Skrip Pengurus Permainan Perpaduan Saya Hanya Berjalan Sekali?

Mengapa Skrip Pengurus Permainan Perpaduan Saya Hanya Berjalan Sekali?

Patricia Arquette
Lepaskan: 2025-01-14 07:01:47
asal
951 orang telah melayarinya

Why Does My Unity Game Manager Script Only Run Once?

Menyelesaikan masalah Pengurus Permainan Perpaduan: Isu Pelaksanaan Tunggal

Gambaran Keseluruhan Masalah

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.

Punca Punca: Adegan Pramuat Hilang

Perpaduan tidak mempunyai mekanisme pramuat automatik. Tanpa adegan pramuat yang berdedikasi, permulaan pengurus permainan anda dan komponen penting tidak akan bertahan dalam peralihan adegan.

Penyelesaian: Melaksanakan Adegan Pramuat

Berikut ialah cara untuk membetulkannya:

  1. Buat Adegan Pramuat: Tambah adegan baharu (cth., "Pramuat") dan jadikannya adegan 0 dalam Tetapan Binaan anda.
  2. Tambahkan Objek Permainan: Dalam adegan "Pramuat", buat Objek Permainan kosong bernama "_app".
  3. Dayakan "Jangan Musnahkan Semasa Muatan": Dalam Pemeriksa untuk "_app", tandai kotak "Jangan Musnahkan Semasa Muatan".

Melampirkan Komponen Pengurus Permainan

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.

Mengakses Objek Permainan daripada Skrip Lain

Dua kaedah wujud untuk mengakses objek permainan daripada skrip lain:

Kaedah 1: FindObjectOfType

Gunakan ini dalam kaedah Awake() skrip anda:

1

2

<code class="language-C#">Sound sound = Object.FindObjectOfType<Sound>();

Game game = Object.FindObjectOfType<Game>();</code>

Salin selepas log masuk

Kaedah 2: Pembolehubah Global Statik (Lebih Cekap)

Pendekatan yang lebih diperkemas menggunakan pembolehubah global statik:

1

2

3

4

5

6

7

8

9

10

11

12

13

<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>

Salin selepas log masuk

Ringkasan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan