Unity几种常用的设计模式

1、单例模式:某个类只能有一个实例,单例非常重要,比如我需要管理游戏的UI,现在我要关闭某个页面,页面上可能打开很多子窗口也需要一起关闭,这时候用一个单例来统一管理就很好解决这个问题。单例模式一般都是xxxController、xxxManager等,可以这么写。
public abstract class SingleTon<T> where T : SingleTon<T>, new()
    {
        private static SingleTon<T> _instance = null;

        public static SingleTon<T> Instance
        {
            get
            {
                if(_instance == null) _instance = new T();
                return _instance;
            }
        }

        public virtual void Init()
        {
            Debug.Log("Sington<T>...");
        }
    }

    public class UIManager : SingleTon<UIManager>
    {
        //乱七八糟的东西
    }

2、命令模式:命令模式就是将对象的状态和行为进行封装后按照一定的规则进行处理的模式。可以把行为的请求者和行为的实现者分开,比如现在需要在游戏中开启录制,则需要记录输入的指令,如果 行为的请求者和实现者紧耦合(按下按键就执行)是不利于实现录制的。这个模式的优点第一个是减低耦合度,比如上面这个例子。其次因为请求者和实现着分开,我们可以对请求的指令做很多操作,比如增加新的指令,修改指令等。我实际遇到的有个例子是模块之间的通讯,比如我的游戏有登录模块和网络模块,当登录模块收的登录信息时需要通过网络模块发送信息给服务器进行验证,如果直接调用网络模块的XXX函数,假设这个函数还没写甚至还没写网络模块,游戏就不能运行调试,这时候可以写一个模块管理器,如果需要调用另一个模块的函数,则通过发送一个消息给模块管理器来发送信息,如果模块不存在就缓存信息,等有的时候再发送过去。这属于静态解耦,就是编译上解耦,即使另一个模块还没有的时候也能运行。

3、观察者模式,对应的就是事件机制,通过添加监听者来获取状态变化。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性(本句来自百度百科)。用我自己的理解解释一下上面那句,使用观察者模式可以避免类之间的直接调用,减少耦合,就是说类A需要监听类B,但是即使类B不在,也是可以运行的。遇到的例子有下层和上层的通讯,框架在设计上是保持单向依赖的,即上层依赖下层,视图层从业务层获取数据,业务层依赖基础类库。但是下层也需要获得上层的状态变化,为了不违反单向依赖的原则就可以使用观察者模式监听上层来获取状态变化。

4、MVC模式:这个图是在某个博客偷的哈哈哈,谈谈我的理解就好
控制器:处理数据,计算数据
模型:存储数据,可以说是一个数据模型
视图:呈现Model的数据
在我遇到的情况中,控制器都是单例,模型就是数据,可能从工厂创建,然后给控制器管理,而视图对象可以由模型通过视图工厂来创建。


5、工厂模式:当一种类型需要经常被大量创建和销毁的时候,为了提高效率可以不销毁,而是先保存起来,等需要的时候再拿去用。以前我是通过获取特定脚本来管理对象,每次都要去getcomponent看看有没有对象脚本来确定是不是要由工厂管理,这样效率比较低。有了mvc模式,可以直接管理模型,销毁一个对象可以这样写。

xxxController中的ReleastInFactory(ModelA)   { .....Factory.Instance.Release(ModelA);..... }   
Factory中的Release(ModelA)   { ...ModelA.Release()...Push(ModelA).. }   //Push可以用字典分类型存吧,不写了 
ModelA中的Release()   {  ......View.SetActive(false); ...... }


写错的地方求指点一下~
  • 17
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity是一款非常流行的游戏开发引擎,它提供了许多常用设计模式,以帮助开发者更好地组织和管理游戏代码。下面是Unity常用几种设计模式: 1. 单例模式:Unity中的许多管理类或者工具类通常只需要一个实例,使用单例模式可以确保只有一个实例被创建,并且全局可访问。 2. 观察者模式:游戏中有很多时候需要监听某些事件的发生,并根据事件触发相应的操作。观察者模式可以实现一个事件的发布和订阅机制,方便不同组件之间进行通信。 3. 工厂模式:在游戏中,有时候需要根据不同的条件来创建不同的对象。使用工厂模式可以将对象的创建从具体类中解耦出来,使得代码更加可维护和扩展。 4. 策略模式:游戏中有很多时候需要根据不同的情况来执行不同的算法或者逻辑。使用策略模式可以将不同的算法封装成不同的策略类,然后在运行时根据需要动态选择不同的策略。 5. 组件模式:Unity中的游戏对象是由不同的组件组成的,每个组件负责不同的功能。使用组件模式可以将游戏对象设计成一个组件的集合,方便开发者对游戏对象进行组装和拆解。 以上是Unity常用几种设计模式,它们可以帮助开发者更好地组织和管理代码,提高代码的可读性、可维护性和扩展性。实际开发中,根据具体的需求,我们可以灵活地选择和组合使用这些设计模式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值