Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengakses Pembolehubah dan Fungsi daripada Komponen Perpaduan Berbeza?

Bagaimana untuk Mengakses Pembolehubah dan Fungsi daripada Komponen Perpaduan Berbeza?

Barbara Streisand
Lepaskan: 2025-01-18 06:12:14
asal
805 orang telah melayarinya

How to Access Variables and Functions from Different Unity Components?

Akses pembolehubah dan fungsi komponen berbeza dalam Unity

Dalam Unity, mengakses pembolehubah dan fungsi dalam skrip lain adalah keperluan yang sangat biasa. Secara lalai, pembolehubah dan fungsi dalam skrip adalah peribadi dan tidak boleh diakses dari luar skrip. Untuk membenarkan skrip lain mengaksesnya, ia perlu didedahkan kepada umum.

Sebagai contoh, pertimbangkan adegan yang mengandungi pemain dan musuh, masing-masing dengan skripnya sendiri (Statistik_Watak dan Statistik_Musuh). Dalam kes ini, mengakses pembolehubah Kesihatan skrip Enemy_Stats daripada skrip Character_Stats memerlukan penyelesaian, seperti yang ditunjukkan dalam kod berikut:

<code class="language-c#">void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.tag == "Enemy")
    {
        collision.gameObject.GetComponent<enemy_stats>().Health = 
            collision.gameObject.GetComponent<enemy_stats>().Health 
            - gameObject.GetComponent<character_stats>().AttackDamage;

        if (collision.gameObject.GetComponent<enemy_stats>().Health < 0)
        {
            Destroy(collision.gameObject);
        }
    }
}</code>
Salin selepas log masuk

Jadikan pembolehubah dan fungsi awam

Untuk mengelakkan penyelesaian ini, jadikan pembolehubah Kesihatan dan sebarang fungsi yang anda mahu akses daripada skrip lain awam. Begini cara melakukannya:

<code class="language-c#">public class Enemy_Stats : MonoBehaviour
{
    public float Health;

    void Start()
    {

    }

    public void TakeDamage(float damage)
    {
        Health -= damage;
    }
}</code>
Salin selepas log masuk

Akses pembolehubah dan fungsi awam

Anda kini boleh mengakses pembolehubah Kesihatan daripada skrip lain menggunakan fungsi Cari dan GetComponent dan memanggil fungsi TakeDamage:

<code class="language-c#">public class Character_Stats : MonoBehaviour
{
    GameObject enemyObj;
    Enemy_Stats enemyStats;

    void Start()
    {
        enemyObj = GameObject.Find("EnemyGameObject");
        enemyStats = enemyObj.GetComponent<Enemy_Stats>();
    }

    void AttackEnemy()
    {
        enemyStats.TakeDamage(AttackDamage);

        if (enemyStats.Health <= 0)
        {
            Destroy(enemyObj);
        }
    }
}</code>
Salin selepas log masuk

Dengan menjadikan pembolehubah dan fungsi awam, anda boleh mengakses dan memanipulasinya dengan mudah daripada skrip lain, menjimatkan masa dan usaha dalam projek Unity anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah dan Fungsi daripada Komponen Perpaduan Berbeza?. 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