原型模式 C#

来源:互联网 发布:mysql持久化 编辑:程序博客网 时间:2024/05/27 16:41
设计模式
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();
        }
    }
}

解释:
游戏制作会创建大量角色。怪物,技能,武器等。 这时候可以使用原型模式。配合对象池。后面我在研究。
以上用怪物为基本原型。
不同僵尸类继承公用属性和实现自己不同属性。方法。每个clone会创建一个对象。后期可以保存在对象池里去随时遍历。

0 0