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<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”
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容