2016-10-19 3 views
1

私はあるスクリプトが別のスクリプトからメソッドを呼び出す、C#で書いているスクリプトのペアを持っています。しかし、私は次のエラーを取得しています:私は、メソッドを呼び出すためにしようとしているところ別のスクリプトからの1つのスクリプトのメソッドへのアクセス

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

ここにあります:

私は存在を呼び出したいメソッドがどこ

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

はここです

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

両方のスクリプトが同じゲームオブジェクトにアタッチされています。

私は上記のエラーを修正する方法を教えてもらえますか、なぜ実際にエラーが発生しているのですか?私はいつも、あなたがアクセスしようとしているクラスを参照する必要があると思っていましたが、私が理解しているところから、このエラーは別の方法で言います。

+2

「static」修飾子を捨ててみませんか? 'public void Attack()' –

+0

はい - それだけです。静的メソッドであるため、インスタンス名の代わりに型名を使用します。 – pstrjds

+0

@CùĐứcHiếuあなたがコメントをしていて、それを修正したので、私はそうしました。あなたが望むなら、それを答えにして、それを受け入れたものとしてマークします。 – Robert

答えて

5

static修飾子を削除すると、コードが機能します。

public class PlayerActions:MonoBehaviour{ 
    public void Attack(){ 
     Debug.Log("Attacking"); 
    } 
} 
関連する問題