2016-10-19 6 views
1

У меня есть пара скриптов, которые я пишу на 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(); 
    } 
} 

Оба сценария прикреплены к одному и тому же игровому объекту.

Может ли кто-нибудь сказать мне, как исправить ошибку, о которой я упоминал выше, и почему я действительно получаю сообщение об ошибке? Я всегда думал, что вам нужно ссылаться на класс, к которому вы пытаетесь получить доступ, но из того, что я понимаю, эта ошибка указала иначе.

+2

Почему вы не пытаетесь выбрасывать «статический» модификатор? 'public void Attack()' –

+0

Да - сделайте то, что он говорит. Используйте имя типа вместо экземпляра, поскольку это статический метод. – pstrjds

+0

@ CùĐứcHiếu Я сделал это правильно, когда вы делали комментарий, и он исправил это. ЕСЛИ вы хотите, сделайте этот ответ, и я пометю его как принятый. – Robert

ответ

5

Удалить модификатор static, и ваш код будет работать!

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