2016-04-22 71 views
0

所以我開始學習Swift,但是我發現我想使用Unity3d,因爲它看起來很有趣學習,對於遊戲來說,它看起來比Xcode更好。這意味着我必須學習一種新的語言,但是,我開始學習C#。在我的項目中,我有兩個班。如何在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; 
    } 
} 

第二個類被命名爲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() 

然後我可以使用:

while livesDetract.currentLives > 0 { 
} 

似乎不是在C#中的工作,雖然。

回答

0

您正試圖訪問currentLives而不實例化對象。在使用Unity之前,您需要在Unity中找到對象。

+0

是不是實例化用於創建對象的克隆?我不想克隆對撞機。 – QuirkyCoder

+0

我並不是說你需要使用這種方法。如果這是一個遊戲對象,你可能需要先找到它。 http://docs.unity3d.com/ScriptReference/GameObject.Find.html – gabriel