使用StrangeIoC写一个可以启动的程序
现在开始做一个简单的程序,点击屏幕上的按钮后输出“Hello Strange”,我们将使用Signal的方式发送指令
- 创建创建上下文类
-
新建脚本,命名为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("框架启动");
}
}
- 创建程序入口
- 创建新脚本,命名为MyFristRoot
- 输入以下内容
using strange.extensions.context.impl;
using UnityEngine;
public class MyFristRoot : ContextView
{
private void Awake()
{
context = new MyFristContext(this);
}
}
-
将MyFristRoot脚本添加到场景中的某一物体上后运行场景,可以看到控制台输出了“框架启动”
-
创建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>();
}
- 使用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);
}
- 启动程序,点击按钮可以看到输出了“Hello strange”
网友评论