首先是定义一个工厂的接口
public abstract class ICharacterFactory
{
public Transform[] product;
protected int flag;
protected enum ENEMY : int
{
MianEnemy = 0,
PigEnemy = 1,
Boss = 2,
Xiaoguai2=3
}
public abstract void CreatEnemy(GameObject enemy);
}
然后是实现工厂的方法
public override void CreatEnemy(GameObject enemy)
{
ENEMY n =(ENEMY) int.Parse(enemy.name);
IEnmy BaseEnemy = null;
switch (n)
{
case ENEMY.MianEnemy:
BaseEnemy = new MianEnemy();
BaseEnemy.SetGameObject(product[0], enemy);
BaseEnemy.GetGameObject().AddComponent<SmallMo>();
break;
......
......
......
}
}
这是游戏设计模式进行的写法,所以将敌人的生产集中在了一起,然后通过传参数来进行选择,假如是有着不同种类的敌人,然后不同种类下面又划分了更多的分类的话,可以多实现几个工厂,再进行选择。
其中对人物属性的装配就统一写在了一个脚本里面,这样在进行工厂模式生产的时候,可以简化很多代码,更改的时候也只要在一个专门的脚本里面进行更改就可以。
然后是测试类,也就是生产:
public class CharacterSystem : MonoBehaviour
{
ICharacterFactory factory = new CharacterFactory();
public Transform[] pro;
public GameObject[] mastor;
public bool kaiguan = true;
private void Start()
{
factory.product = pro;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.U))
{
factory.CreatEnemy(mastor[0]);
}
}
}
效果就差不多啦。