Unity3D StrangeIOC

Unity3D StrangeIOC

ID:39469430

大小:191.50 KB

页数:15页

时间:2019-07-04

Unity3D StrangeIOC_第1页
Unity3D StrangeIOC_第2页
Unity3D StrangeIOC_第3页
Unity3D StrangeIOC_第4页
Unity3D StrangeIOC_第5页
资源描述:

《Unity3D StrangeIOC》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Unity3DStrangeIOC   Strange是一个Unity3D中用于控制反转的第三方框架,控制反转(IOC-InversionofControl)思想是类间解耦的一个重要方法,对于我来说,任何解耦技术都值得去学习。什么是IOC?这里有详细解答。IOC框架已经在企业级开发和其他非游戏软件的开发中成为了主流,并且可以说已经非常成熟。我觉得它可以帮助游戏开发变得更加容易测试,更好的进行协作开发。我非常想尝试它看看到底可以在游戏开发过程中起到多大的帮助程度。   Strange使用起来真的像他的名

2、字一样,非常"奇怪"。我发现它对于初学者来说,使用起来真的非常"闹心",比如你想试着去写一个"HelloWorld"都非常不容易。这里是StrangeIOC框架的说明页面,但是这上面并没有一个真正意义上的"新手引导"来帮助我们了解Strange的工作机制,这就是你现在看到现在这篇文章的意义-用StrangeIOC框架写一个HelloWorld。 一些提醒:·在阅读本篇文章之前,最好先去上面提到的官方说明页面了解一下Strange框架的架构(看看它的每个部分的功能以及怎么整合到一块工作的)。·这篇文档使

3、用的是signal(消息)而非event(事件)(因为相比event我更喜欢signal)·我不会把文档中的Unity项目提供出来,因为我希望大家自己动手去做,这样肯定会学到更多:)·这个HelloWorld示例只是简单的提供注入绑定(injectionbinding)、命令绑定(commandbinding)、调解绑定(mediationbinding)的示例。Signal 建立一个空Unity项目,下载并且解压Strange框架到Assets文件夹中,我们只需要框架的脚本,把"examples"和

4、".doc"文件夹去除,在Unity的的结构应该是这样的:   Assets StrangeIoC scripts 在Assets文件夹下创建"Game"文件夹,即用来创建HelloWorld示例的文件夹。文件夹的的结构应该是这样的:Assets Game Scenes Scripts在Scripts文件夹下新建名为HelloWorldSignals.cs的c#脚本,这个类将包含所有用到的signal,让我们coding起来:usingSystem; usingstrange.extensions.s

5、ignal.impl; namespaceGame{ publicclassStartSignal:Signal{} }  在Strange中,这个signal的概念非常像观察者模式(observerpattern)中的事件(events)。在这里,它以命名类的方式实现了继承Strange的Signal类.别急,我们马上会看到怎么去使用它。 Strange采用"Contexts"的概念来识别不同的问题域或者子模块。在实际的游戏项目中,你可以有多个"Contexts",比如游戏逻辑、资源、持久层、统

6、计分析、社交模块等等。我们在这个实例中只用了一个"Context"。 一个预构建的context在Strange中称为MVCSContext,MVCSContext默认使用event机制,我们来创建另外一种context父类,改造成使用signal机制,我们其他的context要继承这个SignalContext。 在Scripts下创建名为SignalContext.cs的脚本:文章出处狗刨学习网usingSystem; usingUnityEngine; usingstrange.extensio

7、ns.context.impl;usingstrange.extensions.command.api;usingstrange.extensions.command.impl;usingstrange.extensions.signal.impl; namespaceGame{ publicclassSignalContext:MVCSContext{ /** *Constructor */ publicSignalContext(MonoBehaviourcontextView):base(co

8、ntextView){ } protectedoverridevoidaddCoreComponents(){ base.addCoreComponents(); //bindsignalcommandbinder injectionBinder.Unbind(); injectionBinder.Bind().To().ToSingleton(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。