【问题标题】:Accessing method in one script from another script [duplicate]从另一个脚本访问一个脚本中的方法[重复]
【发布时间】:2016-10-19 19:11:00
【问题描述】:

我有一对用 C# 编写的脚本,其中一个脚本调用另一个脚本的方法。但是,我收到以下错误:

Member 'PlayerActions.Attack()' cannot be accessed with an instance reference; qualify it with a type name instead

这是我要调用的方法所在的位置:

public class PlayerActions:MonoBehaviour{
    public static void Attack(){
        Debug.Log("Attacking");
    }
}

这是我试图调用该方法的地方:

public class Combat:MonoBehaviour{
    PlayerActions playerActions;
    void Start(){
        playerActions = GetComponent<PlayerActions>();
        playerActions.Attack();
    }
}

两个脚本都附加到同一个游戏对象。

谁能告诉我如何解决我上面提到的错误以及为什么我实际上得到了这个错误?我一直认为您需要引用您尝试访问的类,但据我了解,此错误说明并非如此。

【问题讨论】:

  • 你为什么不尝试扔掉static修饰符? public void Attack()
  • 是的 - 照它说的去做。使用类型名称而不是实例,因为它是静态方法。
  • @CùĐứcHiếu 我在您发表评论时做到了这一点,并修复了它。如果您愿意,请给出答案,我会将其标记为已接受。

标签: c# unity3d


【解决方案1】:

删除 static 修饰符,您的代码将正常工作!

public class PlayerActions:MonoBehaviour{
    public void Attack(){
        Debug.Log("Attacking");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    相关资源
    最近更新 更多