Unity3d之策略模式

来源:互联网 发布:办公软件的重要性 编辑:程序博客网 时间:2024/05/19 01:11

接触了个叫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
原创粉丝点击