Unity3d之策略模式

接触了个叫unity3d东西,我表示很兴奋,于是开始捣鼓。但是从哪里开始呢?于是去网上找了个妹纸的模型,导入unity,如下:



这个妹纸离我比较远,近视眼表示看不清楚某沟,于是,代码出来了,如下:

public class Player1 : MonoBehaviour {
    GameObject currentGameObject;
    void Start()
    {
        currentGameObject = this.gameObject;
    }
    
    void Update()
    {
        currentGameObject.transform.Translate(Vector3.back * Time.deltaTime);
    }
}


不到一分钟,代码就出来了,真简单。

既然都让妹纸向我靠近了了,为什么不再让他旋转到某个特定的角度呢,说不定还能看到什么奇特的部位羡慕,继续改代码,如下:


public class Player1 : MonoBehaviour {
    GameObject currentGameObject;
    void Start()
    {
        currentGameObject = this.gameObject;
    }
    
    void Update()
    {
        currentGameObject.transform.Translate(Vector3.back * Time.deltaTime);
        currentGameObject.transform.Rotate(Vector3.back);
    }
}

真特么简单啊。

现在,我又有了个邪恶的想法,比如:让妹纸向我靠近的同时,某个部位放大....。代码如下:

public class Player1 : MonoBehaviour {
    GameObject currentGameObject;
    void Start()
    {
        currentGameObject = this.gameObject;
    }
    
    void Update()
    {
        currentGameObject.transform.Translate(Vector3.forward * Time.deltaTime * 10);
        currentGameObject.transform.localScale = currentGameObject.transform.localScale * 1.1f;
    }
}


搞定。

但是这里有个问题,如果我下次换一个模型,换成抠脚大汉怎么办?之前的代码是物体旋转+向我靠近,这不行,抠脚大汉应该要离我远点,于是我继续改代码,新加一个类,如下:

public class Player2 : MonoBehaviour {

    GameObject currentGameObject;
    void Start()
    {
        currentGameObject = this.gameObject;
    }

    void Update()
    {
        currentGameObject.transform.Translate(Vector3.forward * Time.deltaTime * 10);
    }
}

这里就有一个问题:如果有不同的需求,就去不停的更改代码。而且代码直接耦合很深,这个时候,就轮到我们的策略模式出厂了。


未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值