前言:
当我们拿到一个较为复杂的需求,我们首先应该抽象他的各种功能模块,分别写成一个个类,如同愚公移山,石头一块一块的运走,土一筐一筐运走,最后完成移走山峰的目标。
正文:
每一个类负责一块功能,一定要拆分的细;降低各种功能之间的耦合性。当我们把所有的功能实现在一个类里面,第一次实现没神魔问题可以运转,当我们改变需求时则发现,牵一发动全身,代码之间的耦合性特别的高,不方便扩展;
比如说:
战斗:1.播放动画;
2.位移;
3逻辑判断;
例如贪吃蛇demo中的一段代码:
public class SnakeHead : SnakeBody
{
public SnakeHead(SnakeBody tmpFront, Transform target)
: base(tmpFront, target)
{
}
public void RotatLeft()
{
Vector3 tmpAngle = targetObj.localEulerAngles;
tmpAngle.y -= 90;
targetObj.localEulerAngles = tmpAngle;
}
public void RotatRight()
{
Vector3 tmpAngle = targetObj.localEulerAngles;
tmpAngle.y += 90;
targetObj.localEulerAngles = tmpAngle;
}
public void MoveFront()
{
targetObj.Translate(targetObj.forward, Space.World);
}
}
public class SnakeBody {
protected SnakeBody front;
protected Transform targetObj;
public SnakeBody(SnakeBody tmpFront, Transform target)
{
this.front = tmpFront;
this.targetObj = target;
oldPos = targetObj.position;
}
private Vector3 oldPos;
public Vector3 OldPos
{
get
{
return oldPos;
}
set
{
oldPos = value *2;
}
}
// 更新记录
public void ExchangePos()
{
oldPos = targetObj.position;
}
public void FollowFront()
{
// 等于前面身体的 移动前的位置
targetObj.position = front.OldPos;
// 更新前面身体 记录的位置
front.ExchangePos();
}