您的位置:首页 > 移动开发 > Unity3D

Unity3d之策略模式

2014-03-20 10:20 260 查看
接触了个叫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);
}
}


这里就有一个问题:如果有不同的需求,就去不停的更改代码。而且代码直接耦合很深,这个时候,就轮到我们的策略模式出厂了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: