Unity3D框架插件uFrame实践记录(一)

1.概览

uFrame是提供给Unity3D开发者使用的一个框架插件,它自己模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分)。由于用于Unity3D,因此它向开发者提供了一套基于Editor的可视化编辑工具,能够用来管理代码结构等。本文为uFrame1.6版本在项目中实践的记录,主要包括一些uFrame中的基本概念以及应用的流程。node

2.新建uFrame工程

本小节主要内容包括:架构

  • 在uFrame新建工程
  • 在uFrame的可视化编辑器中打开工程仓库
  • 在uFrame的可视化编辑器中设置工程的命名空间,用来在生成模板代码时使用

2.1.在uFrame中新建工程

在Unity编辑器的Project部分新建一个文件夹,命名为MyProject。选中刚刚建立的文件夹右键选择:
[u]Frame->New Project。
如图:

此时,打开MyProject文件夹,咱们建立的uFrame的工程仓库已经建立好了。

咱们能够对这个文件进行重命名,以符合本身的习惯。
到此,咱们就完成了在uFrame中建立一个新的工程的任务。框架

2.2.在uFrame的可视化编辑器中打开工程仓库

建立完uFrame的工程以后,咱们就能够在uFrame提供的可视化编辑器(graph designer)中打开该工程了。
点击Editor的工具栏,选中Window->uFrame Designer:

在uFrame的编辑器中,咱们能够选择咱们刚刚建立的uFrame工程。

这样,咱们就在uFrame的编辑器中打开了刚刚建立的uFrame工程了。mvvm

2.3.设置工程的命名空间

因为uFrame的这套可视化编辑器的目的是为了向开发人员提供便利的开发方式,其最后仍是要生成一些模板代码的。所以,咱们能够设置一些信息,以生成对应的模板代码。例如,咱们能够在这里设置工程的命名空间,这样生成的代码都会在咱们设置的命名空间内。
选中在2.1中生成的工程仓库文件,咱们在它的inspector面板中能够设置这个工程的命名空间。

至此,整个工程的基本设置就已经完成了,下面咱们继续进一步进行一些具体的操做。编辑器

3.建立子系统

本小节主要内容包括:工具

  • 介绍uFrame中图(Graph)的概念
  • 建立一个MVVM图(MVVM Graph)
  • 建立一个子系统图(Subsystem Graph)

3.1.uFrame中的图(graph)

在建立子系统以前,咱们首先要了解一个概念,即uFrame中的图(Graph)。此处说的图是uFrame中的一个概念,uFrame工程中的每个图都会以文件的形式存在于工程的文件夹中。每个图均可以包含不少的结点(Node),并且图和图之间也能够共享同一个工程中的节点。
咱们能够经过uFrame的可视化编辑器(designer)来建立一个图,在designer的左侧咱们能够打开图的选择框:

选择框中列出的是能够建立的图的类型。
须要咱们注意的是,此时建立的图会自动和此时选中的工程连接,且图文件会在被选中的工程的文件夹中建立。插件

3.2.建立MVVM图

此时,咱们须要为咱们的工程建立一个MVVM图,因此在上面的图的选择框中咱们选择Create MVVMGraph。
咱们能够看到建立完以后,这个图只包括一个节点(Node),该节点表明图自己,咱们能够称它为图节点(Graph node)。

并且,一个图文件也在咱们的工程文件夹中被建立了出来。

若是须要修改图的名字,咱们能够直接在designer中修改图节点的名字,右键点击节点,选择Rename便可。3d

3.3.建立子系统图

下面就让咱们在MVVM图之下添加一些子系统,来丰富这个工程的功能吧。
咱们只须要在空白处点击右键,便可弹出一个选择菜单:

选择Add Sub System便可在FoxMain环境中添加一个子系统了。
注意:此处须要提醒各位注意,不一样的环境下选择菜单的内容是不一样的,可添加的元素也不一样,例如在此处的MVVM Kernel图中咱们能够建立SubSystem,而Element节点只能在SubSystem中建立,一样,View节点只能在Element节点中建立。因此想要建立目标节点时,必定要肯定如今的环境(能够经过左上角看到当前所在的环境,例如如今是FoxMain)。对象

4.建立节点(Node)

本小节主要内容包括:blog

  • 解释什么是Element节点并建立Element节点
  • 解释什么是View节点并建立View节点

4.1.Element节点

在designer中,Element节点主要定义了ViewModel和Controller,Element中的数据主要有三部分组成:

  • 属性Property,主要是单个数据
  • 集合Collection,主要是数据集合
  • 命令Command,主要定义了一些命令,由Controller执行。

因为它们是常规的C#类型,并无继承Unity3D中的Monobehaviour,所以它们不依赖Unity3D,因此它们是可移植的。
而在Unity3D中,咱们经过建立和Unity3D相关的View来绑定ViewModel,从而表现ViewModel中的数据。
下面咱们就在刚刚建立的UISys子系统中建立一个Element节点,并命名为Login。

右键点击designer的空白处,能够弹出一个选择菜单,其中包括不少Add选项,例如Command、Element等等。选择Add Element,一个名为Login的Element节点便被建立出来了。

注意:观察designer的左上角,能够看到咱们此时处在UISys中,即咱们如今在UISys图(graph)中。之因此要在此提示各位注意这一点,是因为节点能够以子系统的图节点为目标添加,也能够以别的节点为目标添加,若是咱们双击Login节点,就变成了以Login节点为目标添加。

4.2.View节点

在Unity3D开发中,View部分指的就是Unity3D为咱们提供的视觉方面的操做对象,例如游戏内的物体、UI等等。
View是展现层,它经过绑定ViewModel来展现ViewModel中的数据。举一个例子各位可能会更容易理解这个意思:假设咱们的游戏中有一个PlayerViewModel,针对这一个ViewModel咱们在游戏中能够有多种表现方式,例如:咱们能够有一个PlayerView对应游戏中的玩家模型,根据ViewModel中的数据展现各类动做、或者位移。也能够有一个PlayerInfoView对应游戏中的玩家数据UI,根据同一个ViewModel中的数据,展示例如玩家血量、经验值等等信息。
而绑定了同一个ViewModel的多个View的不一样之处就在于,各个View只关注ViewModel上它们所须要的数据,各个View之间也应该尽量的保持独立性。
那么下面咱们就来建立一个View节点。
双击Login节点进入以Login为目标的环境,和建立Element节点的过程相似,右键点击空白处弹出选择菜单,此次菜单中包括Add View的选项,以下图:

(咱们还能够看到左上角已经从以前的UISys变成了如今的Login)
这样,一个View节点便被建立出来了。
如今分别表明ViewModel和View的节点已经被建立出来了,接下来咱们就要建立ViewModel上的数据了。

相关文章
相关标签/搜索