2016-04-22 4 views
0

私は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 { 
} 

を。

答えて

0

オブジェクトをインスタンス化せずにcurrentLivesにアクセスしようとしています。あなたはそれを利用する前にUnityでオブジェクトを見つける必要があります。

+0

インスタンスのインスタンスをオブジェクトのクローンの作成に使用していませんか?私はコライダーをクローンしたくない。 – QuirkyCoder

+0

私はあなたがその方法を使う必要があるとは限りません。それがゲームオブジェクトなら、おそらく最初に見つけ出す必要があります。 http://docs.unity3d.com/ScriptReference/GameObject.Find.html – gabriel

関連する問題