2016-04-22 67 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