游戏开发设计模式 —— 组合模式

本文介绍了游戏开发中的设计模式,特别是组合模式,如何通过树形结构实现对象的组合,以及在Unity中的应用,如减少GetComponent()的性能问题。组合模式有助于代码解耦和模块化,提高代码复用和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是游戏开发设计模式?

在游戏开发过程中,通过一套完整功能的设计模板,来解决一些常见的问题
 

设计模式的好处

让程序设计更加高效,提供了一套既有模板来解决一些常见的问题,让我们能更加高效的解决问题

什么是组合模式?

组合模式,又叫部分整体-模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分和整体.

树形结构:

树形结构通过模糊的简单元素和复杂元素的概念,像搭积木一样来将不同的属性进行组

‘组合模式让对象与不同的属性进行解耦,进行了很好的模块化处理
 

组合模式的常见应用

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本身也是组合模式的一个很好的体现

游戏物体本身可以做为父类存在,连接很多子类,这就是组合模式树形思想的一种体现

 

总结

组合模式作为一种基本的设计模式,在很多方面都会有所使用
它最大的好处就是对代码进行了解耦,让脚本模块化,并且当游戏物体的创建多起来的时候,组合模式能很好的代替原本的子类继承父类的做法
 

当子类继承父类时,不同的子类可能会有相同的动作,子类多起来,让代码的修改变得很不好处理,这时组合模式的应用让游戏物体的行为进行了模块化处理,让代码的复用率更高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值