StrangeIoC(三)

使用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

在MyFristContext添加绑定:

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

        injectionBinder.Unbind();
        injectionBinder.Bind().To().ToSingleton();

        mediationBinder.Bind().To();
    }
  • 创建singnal子类
public class MyFristSignal : Signal
{ }
  • 在MyFristView中声明实例并在点击按钮时发送指令
    public MyFristSignal signal = new MyFristSignal();
    void OnBtoClick()
    {
        bto.GetComponentInChildren().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(三))