什么是游戏开发设计模式?
在游戏开发过程中,通过一套完整功能的设计模板,来解决一些常见的问题
设计模式的好处
让程序设计更加高效,提供了一套既有模板来解决一些常见的问题,让我们能更加高效的解决问题
什么是组合模式?
组合模式,又叫部分整体-模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分和整体.
树形结构:
树形结构通过模糊的简单元素和复杂元素的概念,像搭积木一样来将不同的属性进行组
‘组合模式让对象与不同的属性进行解耦,进行了很好的模块化处理
组合模式的常见应用
Unity中的游戏对象:
Unity中的游戏对象通过添加不同的脚本来进行设置,就是组合模式的经典应用
比如原本一个脚本中有三个不同的函数
///当游戏物体上只有一个脚本时
public void SingleScript:MonoBehaviour
{
//获取某物的行为
public void GetSomething();
//取出某物的行为
public void SetSomething();
//做某事
public void DoSomethis();
}
现在我给一个游戏对象挂载三个脚本,每个脚本有一个不同的行为
public void FirstScript:MonoBehaviour
{
//获取某物的行为
public void GetSomething();
}
public void FirstScript:MonoBehaviour
{
//取出某物的行为
public void SetSomething();
}
public void ThirdScript:MonoBehaviour
{
//做某事
public void DoSomethis();
}
在这种情况下,我们就会不可避免地使用GetComponent()函数来执行游戏物体上绑定的其他组件
要解决GetComponent()的性能问题:
1.避免在Update中来使用GetComponent,否则性能代价过于昂贵
2.若在多处地方使用该函数,尝试直接在Awake中获取组件的引用
Transform本身也是组合模式的一个很好的体现
游戏物体本身可以做为父类存在,连接很多子类,这就是组合模式树形思想的一种体现
总结
组合模式作为一种基本的设计模式,在很多方面都会有所使用
它最大的好处就是对代码进行了解耦,让脚本模块化,并且当游戏物体的创建多起来的时候,组合模式能很好的代替原本的子类继承父类的做法
当子类继承父类时,不同的子类可能会有相同的动作,子类多起来,让代码的修改变得很不好处理,这时组合模式的应用让游戏物体的行为进行了模块化处理,让代码的复用率更高