发布时间:2017-08-23责任编辑:朱明 浏览:3085
Strange 是一个轻量的高扩展性的控制反转框架,专为C#和Unity而设计,它拥有如下特点,大部分特点是可选的:
一个核心的绑定系统,可以支持各种绑定(bindone or more of anything to one or more of anything else.)
依赖注入
1、映射为单例,值或者工厂(每次需要时创建一个新的实例)
2、命名注入
3、 构造函数注入或者setter注入(可以理解为属性注入)
4、标记指定的构造函数
5、标记指定函数在构造函数之后触发
6、注入到Monobehiavours
7、多态绑定:可以绑定接口或者实体类
两种风格的共享事件桥(Two styles of shared event bus)
1、都可以发送信号到程序的任何地方
2、都会为本地通信映射本地的事件桥
3、都会映射事件到相应的Command类来分离逻辑
4、使用新的信号实现增加了类型安全保证
MonoBehaviour 中介
1、帮助分离view与逻辑
2、隔离unity特有的代码与其它逻辑代码
可选的MVCS(Model/View/Controller/Service)结构
多个Context
StrangeIoc是MVCS模式的开发。
M层是数据和游戏状态保存(Model);
V层是视图(View),用来显示界面相关的东西,包括界面逻辑(视图层不应该单单包含UI,还有一切可见的角色场景,操作),还有用户的输入输出操作(比如鼠标点击事件,相机图像识别,语音识别等);
C层是后台逻辑层,比如加载数据,初始化模块,读取配置文件等等;
S层是外部层,专门用来处理网络消息;
Signal信号机事件派发模式,Signal是个十分牛逼的事件派发器,是IOC的模块和层级之间通讯机制。
StrangeIoc 的核心在于减低模块和耦合性,增加各个模块的抵抗代码入侵能力。
下面我们通过一个的简单的HelloWorld来简单了解一下ioc框架:
如图所示:
1. HelloWorldContextView继承ContextView,ContextView继承MonoBehaviour,是模块的总视图,是模块的启动口需要挂载在一个游戏物体上,作为启动入口。
2. SignalContext继承MVCSContext,HelloWorldContext继承SignalContext(可以理解为模块层级的一个初始化中心),所有内部模块的关系都需要在这里进行绑定或者注入。
3. HelloWorldStartCommand初始化执行输出HelloWorld。
注:后面脚本是扩充,用来实现ioc框架信号传递的。
4.创建一个IHelloWorldDianJiServes的接口脚本
5. HelloWorldDianJiServes继承IHelloWorldDianJiServes接口脚本(接口方法卸载这里面)。
6。在建一个简单的交互场景 当一个按钮被点击 接口里面的方法执行,这里用框架的思想必须要有个对应的view层 vie层用来通知 “按钮被点击了”。
7.每个view层要创建一个对应的mediator。mediator是一个薄层,他的作用是让与之对应的View和整个程序进行交互。mediation binder的作用是把View映射到它对应的mediator上。所以接下来为View层创建对应的mediator- HelloWorldMediator.cs脚本.
8. 我们需要把待绑的类映射到Strange Context中。打开我们之前写的HelloWorldContext脚本,在mapBindings()方法中添加代码.
9. 在场景中,添加一个GameObject,添加 HelloWorldView 脚本,运行场景,你应该能看到当我们按下"Dj"按钮时,控制台输出"被点击了"。
春秋工作室 供稿