我正在制作一个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类中找到它们,或者我应该以不同的方式进行此操作?
答案 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