【Unity3D】常用设计模式

1、单例模式:

单例仅允许被实例一次,这就保证了他在各个程序模块间的唯一性。

创建一个名为ModelLocator的C#脚本:

[cpp]view plaincopy

usingUnityEngine;

usingSystem.Collections;

publicclassModelLocator {

publicstring myString;

privatestaticModelLocator instance;

publicstaticModelLocator getInstance{

get{

if(instance==null){

instance=newModelLocator();

}

returninstance;

}

}

}

怎么使用呢?如下面一个MonoBehaviour 成为场景中对象的行为后,他就会一直访问这个myString的变量了:

[cpp]view plaincopy

usingUnityEngine;

usingSystem.Collections;

publicclassAction1 : MonoBehaviour {

voidStart () {

}

voidUpdate () {

if(ModelLocator.getInstance.myString!=null && ModelLocator.getInstance.myString!=""){

//do somethings;

}

}

}

上面两个脚本是什么意思呢,第一个脚本即使用了单例模式的脚本,在第二个脚本中访问其变量的时候,首先就会判断其是否被初始化,初始化就直接返回其句柄,如果没有就new一次,这样就可以保证第一个脚本的实例化只有一次,这也就是单例模式的核心思想。

什么时候需要使用单例模式呢?正如它的名字一样,你认为一些东西在整个游戏中只有一个而你又想可以方便地随时访问它,这时你就可以考虑单例模式了。例如,你的游戏可能需要一个管理音乐播放的脚本,或者一个管理场景切换的脚本,或者一个管理玩家信息的通用脚本,又或者是管理游戏中各种常用UI的脚本。

2、单例模式在脚本中的应用:

全局脚本:所有场景都只能与这个唯一的全局脚本交互。

单例脚本:每一个场景里面有且只有一个,场景里面的脚本都只能和这个脚本交互,和别的脚本之间做间接交互。

3、MVC模式:

MVC框架模式,相信很多人都不会陌生,数据-控制-显示分离的工作方式或者叫做代码结构会使软件(游戏)的结构清晰化,逻辑更明了。

M(Model)数据层,两个用途:1保存数据;2发送数据更新信息;

V(View)视图层,两个用途:1接受用户从界面上的操作;2根据M层的数据显示相应的界面;

C(Controller)控制层,两个用途:1处理和界面无关的代码逻辑;2接受和处理网络数据;

我们来看以上模型:

a. 用户点击->UI响应控制->调用M更改数据->发送更新界面消息->V接收消息->更新界面

b. 用户点击->UI响应控制->发送界面跳转消息->V接收消息->更新界面

c. 用户点击->UI响应控制->UI自消化

其实,一般的界面模块,用以上的模型就足够了。但有些模块比较复杂,需要不断的与数据和界面交互,这时候C才有意义。

先就这些,后面学习到了,再补充完善。

0

0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,204评论 25 708
  • 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者...
    lichengjin阅读 907评论 0 8
  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,311评论 10 200
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • 失恋的第三天,林小姐特意早起化了个妆,搭配了一身不错的衣服,穿上了新高跟鞋去上课。 又是满课的一个星期,忙都忙...
    林台阅读 399评论 0 0