私はSwiftを学び始めましたが、Unity3dを使いたいと思ったのは、学ぶことが面白かったためで、ゲームにとってはXcodeよりも優れていたからです。しかし、私は新しい言語を学ばなければならなかったので、C#を学び始めました。私のプロジェクトでは2つのクラスがあります。Unity3d MonoDevelopでどのように継承を使用しますか?
私の最初のクラスはLivesDetractです。このクラスはエッジコライダーです。
public class LivesDetract : MonoBehavior {
public int currentLives; //set to 3 in Unity
private int livesDecrementAmnt = 1;
void OnTriggerEnter2D (Collider2D other) {
currentLives = currentLives - livesDecrementAmnt;
}
}
2番目のクラスの名前はGameControllerです。 GameControllerはゲームの流れを制御します。もともと私はLivesDetractをGameControllerの一部として持っていましたが、組織的な目的のために、私はそれが自分のクラスにあるべきだと思います。問題は、私はクラスLivesDetractを継承しようとしたとき、私は次のエラーを取得することです:
エラー:
「オブジェクト参照が非静的フィールド、メソッド、またはプロパティ 『LivesDetract.currentLives』のために必要です」public class GameController : MonoBehavior {
IEnumeratorSpawn() {
while(LivesDetract.currentLives > 0) { // This line is where the error occurs
//Game Actions Occur
}
}
}
十分な情報を提供していると思いますが、もっと必要な場合はお知らせください。スウィフトで は、私は、変数としての機能を設定することができました:
var livesDetract = LivesDetract()
は、私はその後、使用することもできます。しかしC#で動作していないよう
while livesDetract.currentLives > 0 {
}
を。
インスタンスのインスタンスをオブジェクトのクローンの作成に使用していませんか?私はコライダーをクローンしたくない。 – QuirkyCoder
私はあなたがその方法を使う必要があるとは限りません。それがゲームオブジェクトなら、おそらく最初に見つけ出す必要があります。 http://docs.unity3d.com/ScriptReference/GameObject.Find.html – gabriel