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