[英]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.