3d unityy3D如何设计一个弹药设定

策略模式、模板方法模式:技能效果类和方法的构建

装饰器模式、代理模式和适配器模式:封装思想体现。

很抱歉我的经验尚浅目前说得可能并不正确,如果有大神發现问题请务必告知我,非常感谢

}

谈起 MVVM 设计模式可能第一映潒你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding)命令(Command)等功能,这让 MVVM 模式得到很好的实现

在WPF中,你会像如下这样去定義一个专门管理视图 View 的 ViewModel:

get { return WebForm 时代那时还没有 ASP.Net MVC 。我们为了让 UI 表现层分离常常会使用 MVP 设计模式,以下是我在几年前画的一张老图:

MVP 设计模式核心就是通过定义一个 View,将 UI 抽象出来它不必关心数据的具体来源,也不必关心点击按钮之后业务逻辑的实现它只关注 UI 交互。这就是典型的分离关注点

其实这就是我今天想讲的主题,既然 Unity 3D 没有提供数据绑定那么我们也可以参考之前 MVP 的设计理念:

值得注意的是,MVP 设计模式中数据的绑定是通过将具体的 View 实例传递到 Presenter 中完成的而 MVVM 是以数据改变引发的事件中完成数据更新的。

了解叻之后我们要考虑怎样在 Unity 3D 中去实现它。假设我们需要完成如下的一个功能并且是使用 MVVM 设计思想实现:

首先,我们要定义一个 View这个 View 是對 UI 元素的一个抽象,到底要抽象哪些 UI 元素呢就这个例子而言,InputFieldLabel,SliderToggle,Button 是需要被抽象出来的

可以看到,这是一个很简单的 View接着我们需要定义一个专门用来管理 View 的 ViewModel,它以属性的形式提供数据以方法的形式提供行为。

值得注意的是ViewModel 中的属性不是特殊的属性,它必须具備当数据更改时通知订阅者这个功能怎么通知订阅者?当然是事件故我把此属性称为 BindableProperty 属性。

接着我们再定义一个 ViewModel,它为 View 提供了数据囷行为:

同理考虑到双向绑定,你也可以在 View 中定义一个 OnTextBoxValueChanged 响应函数当文本框中的数据改变时,在响应函数中就数据同步到 ViewModel 中在这我就不累述了。

最后在摄像机上加一段脚本很简单,传入 SetupView 对象并为其绑定 ViewModel:

这是一个非常简单的 MVVM 框架也证明了在 Unity 3D 中实现 MVVM 设计模式的可能性。相应的代码可在 Github 上详细查看地址为:

}

我要回帖

更多关于 3d unity 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信