设计模式
1.原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 自己理解。定义好一个原型也就是初始对象类。根据这个去复制 大量的与原型一样或者属性类似。
public class CSDproto : MonoBehaviour {
//怪物模型原型类
public abstract class Enemy
{
public string Name;
public int Heath;
public abstract Enemy Clone();
public abstract void Attack();
}
//普通僵尸怪
public class zombieE : Enemy
{
private int speed;
public override void Attack()
{
Debug.Log( Name+"开始攻击" + "Heath:" + Heath +"speed:"+speed);
}
public override Enemy Clone()
{
zombieE prototype = new zombieE();
prototype.speed = 1;
prototype.Name = "普通僵尸";
prototype.Heath = 1000;
return prototype;
}
}
//炸弹僵尸
public class BomzombieE : Enemy
{
public override void Attack()
{
Debug.Log(Name + "开始攻击炸弹");
}
public override Enemy Clone()
{
BomzombieE bz = new BomzombieE();
bz.Name = "炸弹僵尸";
bz.Heath = 1000;
return bz;
}
}
//----------创建僵尸
zombieE zb;//普通僵尸
BomzombieE bz;//炸弹僵尸
void Start()
{
//先创建一个僵尸原型
zb = new zombieE();
bz = new BomzombieE();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
Enemy TEMP = zb.Clone();
TEMP.Attack();
}
else if (Input.GetKeyDown(KeyCode.S))
{
Enemy TEMP = bz.Clone();
TEMP.Attack();
}
}
}
//怪物模型原型类
public abstract class Enemy
{
public string Name;
public int Heath;
public abstract Enemy Clone();
public abstract void Attack();
}
//普通僵尸怪
public class zombieE : Enemy
{
private int speed;
public override void Attack()
{
Debug.Log( Name+"开始攻击" + "Heath:" + Heath +"speed:"+speed);
}
public override Enemy Clone()
{
zombieE prototype = new zombieE();
prototype.speed = 1;
prototype.Name = "普通僵尸";
prototype.Heath = 1000;
return prototype;
}
}
//炸弹僵尸
public class BomzombieE : Enemy
{
public override void Attack()
{
Debug.Log(Name + "开始攻击炸弹");
}
public override Enemy Clone()
{
BomzombieE bz = new BomzombieE();
bz.Name = "炸弹僵尸";
bz.Heath = 1000;
return bz;
}
}
//----------创建僵尸
zombieE zb;//普通僵尸
BomzombieE bz;//炸弹僵尸
void Start()
{
//先创建一个僵尸原型
zb = new zombieE();
bz = new BomzombieE();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
Enemy TEMP = zb.Clone();
TEMP.Attack();
}
else if (Input.GetKeyDown(KeyCode.S))
{
Enemy TEMP = bz.Clone();
TEMP.Attack();
}
}
}
解释:
游戏制作会创建大量角色。怪物,技能,武器等。 这时候可以使用原型模式。配合对象池。后面我在研究。
以上用怪物为基本原型。
不同僵尸类继承公用属性和实现自己不同属性。方法。每个clone会创建一个对象。后期可以保存在对象池里去随时遍历。