美文网首页
StrangeIoC(三)

StrangeIoC(三)

作者: 虫小白 | 来源:发表于2019-05-21 16:14 被阅读0次

使用StrangeIoC写一个可以启动的程序

现在开始做一个简单的程序,点击屏幕上的按钮后输出“Hello Strange”,我们将使用Signal的方式发送指令

  1. 创建创建上下文类
  • 新建脚本,命名为MyFristContext

  • 输入以下内容

using UnityEngine;
using strange.extensions.context.impl;
using strange.extensions.mediation.impl;
using strange.extensions.mediation.api;
using strange.extensions.command.api;
using strange.extensions.command.impl;


public class MyFristContext : MVCSContext
{
    public MyFristContext(MonoBehaviour view) : base(view)
    { }

    protected override void mapBindings()
    {
        //所有的绑定在此发生
        base.mapBindings();
        Debug.Log("框架启动");
    }
}
  1. 创建程序入口
  • 创建新脚本,命名为MyFristRoot
  • 输入以下内容
using strange.extensions.context.impl;
using UnityEngine;

public class MyFristRoot : ContextView
{
    private void Awake()
    {
        context = new MyFristContext(this);
    }
}
  1. 将MyFristRoot脚本添加到场景中的某一物体上后运行场景,可以看到控制台输出了“框架启动”

  2. 创建view和mediator

  • 新建脚本MyFristView,MyFristMediator,分别输入以下内容
using UnityEngine;
using UnityEngine.UI;
using strange.extensions.mediation.impl;

public class MyFristView : View
{
    public Button bto;

    public void Init()
    {
        bto = transform.GetComponent<Button>();
        bto.onClick.AddListener(OnBtoClick);
        bto.GetComponent<Text>().text = "按钮";
    }

    void OnBtoClick()
    {
        bto.GetComponent<Text>().text = "Clicked"+Random.Range (0,10);
    }
}


using UnityEngine;
using strange.extensions.mediation.impl;

public class MyFristMedaitor : Mediator
{
    [Inject]
    public MyFristView view { get; set; }

    public override void OnRegister()
    {
        base.OnRegister();
        view.Init();
    }
}

在MyFristContext添加绑定:

    protected override void mapBindings()
    {
        //所有的绑定在此发生
        base.mapBindings();
        Debug.Log("框架启动");
        mediationBinder.Bind<MyFristView>().To<MyFristMedaitor>();
    }
  1. 使用Signal发送指令
  • 将MyFristContext的mapBinding改为以下内容
    protected override void mapBindings()
    {
        //所有的绑定在此发生
        base.mapBindings();
        Debug.Log("框架启动");

        injectionBinder.Unbind<ICommandBinder>();
        injectionBinder.Bind<ICommandBinder>().To<SignalCommandBinder>().ToSingleton();

        mediationBinder.Bind<MyFristView>().To<MyFristMedaitor>();
    }
  • 创建singnal子类
public class MyFristSignal : Signal<string>
{ }
  • 在MyFristView中声明实例并在点击按钮时发送指令
    public MyFristSignal signal = new MyFristSignal();
    void OnBtoClick()
    {
        bto.GetComponentInChildren<Text>().text = "Clicked"+Random.Range (0,10);
        signal.Dispatch("Hello strange");
    }
  • 在MyFristMedaitor添加监听事件,并在结束时移除
    public override void OnRegister()
    {
        base.OnRegister();
        view.Init();
        view.signal.AddListener(PrintMsg);
    }

    void PrintMsg(string msg)
    {
        print(msg);
    }

    public override void OnRemove()
    {
        base.OnRemove();
        view.signal.RemoveListener(PrintMsg);
    }
  1. 启动程序,点击按钮可以看到输出了“Hello strange”

相关文章

  • StrangeIoC(三)

    使用StrangeIoC写一个可以启动的程序 现在开始做一个简单的程序,点击屏幕上的按钮后输出“Hello Str...

  • 跟诸子学游戏 Unity3d必学框架

    StrangeIoc:http://gad.qq.com/article/detail/19392 https:/...

  • 接入StrangeIoC

    目前工程项目分为多个Scene main 作为入口场景用于加载其他的场景信息 service 用于启动服务器等se...

  • StrangeIoC(四)

    常用绑定:1,绑定接口和类 2,实例注入 3,单例注入 4,名称注入 5,特定值注入 6,多接口注入 常用标签:1...

  • StrangeIoC(二)

    commandBinder - 命令绑定前面提到,作者为我们扩展的是MVCS版本的strange框架,先看一张图s...

  • StrangeIoC(一)

    框架介绍 StrangeIoC是采用控制反转(IoC)思想书写的一个框架。 什么是控制反转呢?简单来说就是我们需要...

  • unity StrangeIoc框架总结

    概念 StrangeIoc 是依据控制反转和解耦原理设计的,支持依赖注入。 控制反转即Ioc(Inversion ...

  • Unity3D strangeIoC框架学习

    strangeIoC是一个典型的MVC框架整体的结构是这样的:root(contextView) ->MVCS C...

  • StrangeIOC游戏编程框架

    Controller:控制逻辑层View:视图层,通过Mediator去与Controller模块交互Servic...

  • [Unity]使用StrangeIOC框架中的Dispatche

    [Unity]技术学习路线图(长期更新) [Unity]使用StrangeIOC框架设计响应式编程 下载与安装 下...

网友评论

      本文标题:StrangeIoC(三)

      本文链接:https://www.haomeiwen.com/subject/ysxjzqtx.html