簡體   English   中英

如何在另一個腳本上運行一個方法? [統一 3D] C#

[英]How can I run a method on one script from another? [UNITY 3D] C#

我有 2 個腳本:WeaponAttack 和一個 AnimationEventManager。

這是 WeaponAttack 的兩種方法

public void EnableCollider()
    {
        
        Debug.Log("collider enabled");
        isAttacking = true;
    }
    
    public void DisableCollider()
    {
        
        Debug.Log("collider disabled");
        isAttacking = false;
    }

這兩個方法來自 AnimationEventEditor

public void StartAttackCollider()
    {
        
        weaponAttack.EnableCollider();
         
    }

    public void StopAttackCollider()
    {
        
        weaponAttack.DisableCollider();
        
    }

我想使用動畫事件來使用 Wea​​ponAttack 內部的 Enable 和 Disable Collider 方法打開和關閉盒子碰撞器,但是根據我目前編寫的內容,我得到一個對象引用錯誤,即 WeaponAttack 未設置為對象的實例。 我一整天都在摸不着頭腦,不知道該怎么辦,哈哈,如果你知道我怎么能解決這個問題,請 lmk! 謝謝!

這意味着變量 WeaponAttack 沒有值,這意味着那里沒有寫入任何內容。 您需要讓 AnimationEventEditor 知道武器攻擊是什么。

兩種簡單的方法:

  1. 將武器攻擊設為公共變量並在編輯器中設置。

在 AnimationEventEditor 中,編寫:

public WeaponAttack weaponAttack;

然后,在統一編輯器中找到腳本(附加到游戲對象),並將正確的 WeaponAttack 腳本拖到標記為 WeaponAttack 的框中。 (如果您的 WeaponAttack 是不同游戲對象的一部分,請拖動它附加到的游戲對象)

  1. 使用 GetComponent 這要求兩個腳本都是同一個 GameObject 的組件。 如果是,您可以像這樣設置武器攻擊:

    武器攻擊 = GetComponent<武器攻擊>()

這會將武器攻擊設置為附加到同一游戲對象的 WeaponAttack 腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM