如何从第三个类

时间:2017-02-07 19:54:36

标签: c# unity3d

我正在制作一个2D RPG,我有一个类" BaseEnemy"适用于游戏中的所有敌人。它包含他们的统计定义,所有敌人共享的基本功能等。每个敌人都获得他们自己的单独脚本,然后继承BaseEnemy类并使用BaseEnemy构造器设置它的统计数据,如此。

public class LesserSlime : MonoBehaviour {

public BaseEnemy myEnemy = new BaseEnemy(1, 5, 5, 5, 5, 5, 5, 5);
public EnemyHealthBar myHealthBar;

// Use this for initialization
void Start () {
    myEnemy.IsSelected = false;        
}

我的问题是我试图为转弯处理制作一个通用的战斗控制器,并确定选择了哪个敌人,在战斗开始时初始化时会使所有GameObjects的数组被标记为"敌人"在开始时:

public class BattleController : MonoBehaviour {

public GameObject[] Enemies;

我的问题是从那里我不知道如何访问" BaseEnemy"对于每个单独的敌人,因为他们可能有不同的敌人脚本(一个可能是一个粘液,一个可能是一个仙女等),但所有人都称他们自己的BaseEnemy类的实例。无论如何我可以从BattleController类中找到它们,或者我应该以不同的方式进行此操作?

1 个答案:

答案 0 :(得分:1)

选项#1

你创建了一个界面,如

public interface IEnemy {
    BaseEnemy GetBase();
}

然后让敌人类继承它

public class Slime : MonoBehaviour, IEnemy

然后你可以从战斗控制器

这样访问它
Enemies[x].GetComponent<IEnemy>().GetBase();

选项#2

你可以让BaseEnemy继承Monobehaviour

pubilc class BaseEnemy : MonoBehaviour

然后敌人继承了BaseEnemy

public class Slime : BaseEnemy

然后像这样访问它

 Enemies[x].GetComponent<BaseEnemy>()

选项#3

您创建了BaseUnityEnemy类

public class BaseUnityEnemy : MonoBehaviour {
     public BaseEnemy myEnemy;
     public EnemyHealthBar myHealthBar;
}

然后让你所有的敌人继承

public class LesserSlime : BaseUnityEnemy {

    // Use this for initialization
    void Start () {
        myEnemy = new BaseEnemy(1, 5, 5, 5, 5, 5, 5, 5);
        myEnemy.IsSelected = false;        
    }
}

你可以像这样访问它

Enemies[x].GetComponent<BaseUnityEnemy>().myEnemy