unity设计模式

Unity设计模式之命令模式(Command)示例

 

本篇文章我们来学习下,命令模式Command在unity3d中的应用,下面开始!

在游戏编程里面,有一个经常会被用到的设计模式-命令模式。

我对设计模式的理解是

1、为解决问题而生。

2、有大致流程,但是没有固定格式

3、为了沟通方便。

在游戏编程里面,或者软件开发里面,最能体现命令模式的应用场景是

“撤销”与”再做”

在策略游戏里面,有时候我们会提供给玩家去模拟下一步的功能,在他还没确定之前都是能够撤销我们的行为的。比如象棋,比如五子棋,或者在商店系统的时候,玩家购买完东西后悔了,我们可以让玩家去撤销操作。

在编写游戏工具给策划同事使用的时候,没有撤销功能的话会被亲爱的策划骂成狗的。

More

Unity3d中UI开发的MVC模式

上篇文章《Unity3d架构之-Unity MVC框架 StrangeIoC》我们学习了StrangeIOC mvc模式的经典案例,本篇unity3d教程我们继续来学习下Unity3d中UI开发的MVC模式 ,和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK。另外至关重要的是, 我们想尽快加速迭代的过程。使用MVC模式来进行设计,已经被业界证明了是可以解耦屏幕上的显示,如何控制用户的输入对显示的改变,以及如何根据应用的状态进行改变。MVC模式提供了以下好处:

(1) 可以修改UI的外观,而不用修改一行代码

(2) 在不同的组件里面可以共享同一套逻辑代码,用来创建复杂的视图;

(3) 可以用很小的代价来改变UI的实现,比如正在使用NGUI , 但将来会切换成 UGUI

代码示例

这里提供了一个MVC在使用NGUI开发的例子,需要注意的是,我们不能在代码中提供NGUI库,毕竟它是收费的,所以想运行起来的话,需要自己导入NGUI库。接下来的内容都会以这个例子的代码作为基准,所以可以在阅读时可以先把代码下载下来。

总体概述

这是一张简图,从宏观的角度描述了代码中MVC模式的不同部分。

Model More

Unity设计模式之IOC模式

 

本篇unity3d教程我们来学习下IOC设计模式思想在Unity中的应用,下面开始

IOC英文全称:Inversion of Control中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection)。
作用:将各层的对象以松耦合的方式组织在一起,解耦,各层对象的调用完全面向接口,当系统重构的时候代码的改写量将大大减少。
理解依赖注入:
当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。然而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IOC容器来完成,然后注入调用者,因此也称为依赖注入。

1.依赖

依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖。如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它。下面看一个简单的示例: More

Unity3d架构系列之- FSM有限状态机设计四(总结篇)

 

 

由于最近一直赶项目进度,没时间写,昨晚终于项目终于完成了,空闲下来,做一个总 结。在这一篇中主要是把前五章一起总结一下,以及通过举例演示如何使用?有限状态机在游戏中使用的地方非常多,比如我们界面之间的切换,角色的状态切换等 等。所以非常值得大家去学习一下,接下来我们主要实现的功能,为了表达清楚,我通过图例给大家说明一下:

wKiom1TcXfDAJ_Q0AAEVcBwHlNY828.jpg

More

Unity3d架构系列之- FSM有限状态机设计三

 

继续上篇文章在设计二中,我们把事件系统EventSystem实现一下。这个EventSystem类主要实现的是事件的注册,触发,以及分发Event消息的作用。提供接口对外使用的。在这里面为了功能扩展方便用了好多模板函数,方便大家调用。

分发消息的时候,我们采用的是队列的方式,就是先进先出原则。

首先要把消息事件注册一下,就是将其放到我们预先定义的表里面。函数代码如下所示:

More

Unity3d 一个优秀的程序必备的几种设计模式

unity编程众所周知,它是属于脚本化,脚本没有一个具体的概念跟架构,
导致在项目过程中,经常出现哪里需要实现什么功能,就随便添加脚本,
结果,就造成了一片混乱,不好管理。
更有甚者,自己的写的代码闲置一段时间后,再去想找某个功能的实现,都要在视图中翻来覆去找半天。
哎!请容许我在此感叹一声,这还是你写的东西么?

因此,一个好的设计模式是多么的重要啊,
那么,我们在使用unity3d开发东西的时候,脚本架构到底应该如何来写?
呵呵…
其实,我也给不了你们具体答案,因为每个人的开发习惯,每个团队的开发模式也各有千秋,
so,在此我只做几种设计模式的总结,
主要参考书籍有《设计模式》《设计模式之禅》《大话设计模式》以及网上一些零散的文章,
但主要内容还是我本人的一些经验以及感悟。
写出来的目的一方面是系统地整理一下,一方面也与广大的网友分享,
至于你们到底如何使用,望君斟酌啊!

因为设计模式对编程人员来说,的确非常重要。
当然,如果大家的理解跟我有所不同,欢迎留言,大家共同探讨。

More

抽象工厂模式在unity3d里面的使用

今天咱们就要开启工厂家族里面的最后一个模式—抽象工厂模式。在修炼抽象工厂模式心法之前我先说个例子,大家都应该知道葵花宝典吧。想必你可能知道欲练此功必先自宫,哈哈!或许你看到的只是他的上半部,但当你看到下半部结尾一行醒目的文字-欲练此功也可不必自宫,此刻傻眼了吧!失去了独领风骚的快感。由此例子,来引出产品族的概念。葵花宝典的上下部产生了相互影响就可以认为是一个产品族。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。由产品族,我们来进入抽象工厂模式。抽象工厂模式是工厂方法的升级版,是所有形态的工厂模式中最为抽象和最具一般性的形态。因此所谓的抽象工厂是一个工厂等级结构可以创建分属于不同产品等级结构的一个产品族中的所有对象。说了那么多了让我们开始修炼抽象工厂模式的心法吧。

修炼抽象工厂模式的心法如下:
1)抽象工厂角色AbstractFactory:此角色是工厂方法模式的核心,与系统业务逻辑无关。
2)具体工厂角色ConcreteFactory:此角色在客户端的调用下创建产品的实例。他包含有选择合适产品对象的逻辑,而这个逻辑是与应用系统的业务逻辑紧密相关。
3)抽象产品角色AbstractProduct:担任这个角色的类是工厂方法模式所创建对象的父类或他们共同拥有的接口。
4) 具体产品角色ConcreteProduct:抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,里面包含了应用系统的业务逻辑。

修炼抽象工厂模式的武功套路如下:

More

工厂方法模式在unity3d里面的使用

 

上一篇文章中我们讲了工厂家族里面的最简单的一套武功心法–简单工厂模式。想必大家已经领悟了如何修炼此内功心法了,也熟悉了此套武功心法所存在的弊端,稍不慎就毙命。所以我们需要学习另一套武功心法—工厂方法模式,来杜绝简单工厂模式存在的问题。

修炼unity3d工厂方法模式的心法如下:
1) 抽象工厂角色Creator:是工厂方法模式的核心,与应用程序无关。在此模式中创建的对象的工厂类必须实现这个接口。
2) 具体工厂角色ConcreteCreator:这是实现抽象工厂接口的具体工厂类,包含于应用程序密切相关的逻辑,并且由应用程序调用来创建产品对象。
3) 抽象产品角色Product:工厂方法模式所创建的对象的基类型或接口,也就是产品对象的共同父类或共同拥有的接口。
4) 具体产品角色ConcreteProduct:这个角色实现了抽象产品角色所定义的接口。具体的产品有专门的具体工厂创建,他们之间往往一一对应。
修炼工厂方法模式的武功套路如下:
designModel 

More