StrangeIoC(三)

2019-05-21  本文已影响0人  虫小白

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

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

  1. 创建创建上下文类
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. 创建程序入口
using strange.extensions.context.impl;
using UnityEngine;

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

  2. 创建view和mediator

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发送指令
    protected override void mapBindings()
    {
        //所有的绑定在此发生
        base.mapBindings();
        Debug.Log("框架启动");

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

        mediationBinder.Bind<MyFristView>().To<MyFristMedaitor>();
    }
public class MyFristSignal : Signal<string>
{ }
    public MyFristSignal signal = new MyFristSignal();
    void OnBtoClick()
    {
        bto.GetComponentInChildren<Text>().text = "Clicked"+Random.Range (0,10);
        signal.Dispatch("Hello strange");
    }
    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”
上一篇 下一篇

猜你喜欢

热点阅读