[英]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();
}
我想使用動畫事件來使用 WeaponAttack 內部的 Enable 和 Disable Collider 方法打開和關閉盒子碰撞器,但是根據我目前編寫的內容,我得到一個對象引用錯誤,即 WeaponAttack 未設置為對象的實例。 我一整天都在摸不着頭腦,不知道該怎么辦,哈哈,如果你知道我怎么能解決這個問題,請 lmk! 謝謝!
這意味着變量 WeaponAttack 沒有值,這意味着那里沒有寫入任何內容。 您需要讓 AnimationEventEditor 知道武器攻擊是什么。
兩種簡單的方法:
在 AnimationEventEditor 中,編寫:
public WeaponAttack weaponAttack;
然后,在統一編輯器中找到腳本(附加到游戲對象),並將正確的 WeaponAttack 腳本拖到標記為 WeaponAttack 的框中。 (如果您的 WeaponAttack 是不同游戲對象的一部分,請拖動它附加到的游戲對象)
使用 GetComponent 這要求兩個腳本都是同一個 GameObject 的組件。 如果是,您可以像這樣設置武器攻擊:
武器攻擊 = GetComponent<武器攻擊>()
這會將武器攻擊設置為附加到同一游戲對象的 WeaponAttack 腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.