前提・実現したいこと
punch1クラスで定義したdamagePowerをpunchmanagerクラスに渡したい
あるクラスのフィールドで定義した整数を持つ変数を、
そのクラス内のメゾッドの引数として他のクラスのメゾッドに受け渡したいです
言葉が間違ってるかと思います、すみません
発生している問題・エラーメッセージ
error CS0176: Member 'punch1.damagePower' cannot be accessed with an instance reference; qualify it with a type name instead もしくは
該当のソースコード
C#
1public class punch1 : MonoBehaviour 2{ 3 public static int damagePower= 1; //この数値 4 public void OnTriggerEnter2D(Collider2D collision) 5 { 6 if (collision.tag == "Enemy") 7 { 8 var dp = new punch1(); //ここらへんが問題 9 punchmanager.damagetrigger(dp.damagePower,collision);//punchmanagerクラスにdamagePowerを渡したい 10 } 11 } 12} 13 14 15 16public class punchmanager : MonoBehaviour 17{ 18 public void damagetrigger(int damagePower, Collider2D collision) 19 { 20 enemymanager enemy = collision.GetComponent<enemymanager>(); 21 enemy.OnDamage(damagePower); 22 } 23}
試したこと
staticで定義もしてみました
public static int damagePower=1; if (collision.tag == "Enemy") { punchmanager.damagetrigger(punch1.damagePower,collision);//punchmanagerクラスにdamagePowerを渡したい }
「staticで定義したとき」のコードを実行するとどのようなエラーが出るのでしょうか?(上と全く同じエラー?それとも「An object reference is required for the nonstatic field, method, or property 'member'」というようなエラー?)
またはエラーが出ないのでしょうか?
C#はobject oriented languageです。orientedは「指向」と訳されますが、日本語の意味では「志向」が正解です。
object は「何か」「オブジェクト」と訳される場合が多いですが、「目的」という意味もあります。「目的志向言語」、目的を考えてそれに至る方法をかんがえる(プログラミング)言語であると考えてください。
ということで、変数やメソッドそれぞれの目的はなんでしょうか。damagePowerは何を表す変数で、その値はクラスに属するのか、インスタンスごとに異なるのか。そういう事を考えてください。そうすると、クラスメンバーの整理ができます。
まず、クラスメンバーの整理が必要だと思いました。
回答2件
あなたの回答
tips
プレビュー