StrangeIoC框架学习

本文介绍了StrangeIoC框架的学习过程,包括引入程序集、创建MVCS框架入口、实现绑定映射、启动框架、UI视图与Mediator的对应、事件监听与调用。详细讲解了如何使用单例模式、绑定View与Mediator、事件绑定以及Dispatcher的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StrangeIoC框架学习


1.需引入程序集
  using strange.extensions.command.impl;


2.需要一个MVCS框架的入口
  ①定义脚本GameContext:MVCSContext
  ②重构构造函数,可F12进入类中查找
   如:public GameContext(MonoBehaviour view, bool autoMapping) : base(view, autoMapping){}
  ③重写mapBindings()方法,此方法专门用来实现绑定映射(绑定脚本/事件)
   如,下面三种绑定方法:
        
        (1)使类实现单例类
        //绑定IntergrationModel,使其实现单例类
        injectionBinder.Bind<IntergrationModel>().To<IntergrationModel>().ToSingleton();


        (2)将View和Mediator绑定
        //将SelectView和SelectMediator绑定在一起
        mediationBinder.BindView<SelectView>().ToMediator<SelectMediator>();


        (3)将事件类型和事件类绑定
        //将CommandEvent.ChangeMultiple事件和ChangeMultipleCommand脚本绑定在一起
        commandBinder.Bind(CommandEvent.ChangeMultiple).To<ChangeMultipleCommand>();


3.有了启动框架的入口,然后就需要开启这个框架
  如在游戏整体初始化的脚本中开始框架:
  ①定义一个游戏初始化脚本GameRoot,使其继承ViewContext
  ②在其Awake()方法中开启:
        //开始MVC框架
        context = new GameContext(this, true);
        context.Start();
  ③上述逻辑运行后,MVCS框架就开始成功(即GameContext)并调用GameContext.mapBindings(),完成绑定的一系列操作


4.一个UI视图对象对应一个View脚本,而一个View脚本对应一个Mediator脚本。
  其中View脚本需继承EventView; Mediator脚本需继承EventMediator


  *View脚本只处理自身视图中的视图/按钮等功能(需提供与外部处理的方法供Mediator脚本调用)
  
  *Mediator脚本则处理View视图对外调用的功能方法:
    如:①定义选择视图的Mediator脚本,使其继承ViewContext
        ②利用反射[Inject]反射获得绑定了的对象(通过属性来定义)
          [Inject]
    
          public SelectView SelectView { get; set; }
        ③获得SelectView 后,则可以在需要时调用SelectView里的方法来处理


5.通过Dispatcher来完成不同枚举类型事件与对应的事件脚本的监听调用
  (需事先设定不同的事件枚举类型)


  ①两个已绑定的对象(如View和Mediator)相互的监听调用


    比如:
    A.在枚举类中设定ViewEvent.CHANGE_MULTIPLE枚举类型


    B.在SelectView中
        //利用dispatcher来注册ViewEvent.CHANGE_MULTIPLE的点击事件,并向监听方传递参数1
        dispatcher.Dispatch(ViewEvent.CHANGE_MULTIPLE, 1);


    C.在SelectMediator中
    (1) 写定一个OnViewClick(IEvent evt)方法供监听成功后调用,其中IEvent evt为传递的参数,可以通过evt.data开获取,需要强转类型


    (2) //利用SelectView.dispatcher来监听ViewEvent.CHANGE_MULTIPLE事件,
        //当监听事件被触发时调用OnViewClick方法
        SelectView.dispatcher.AddListener(ViewEvent.CHANGE_MULTIPLE, OnViewClick);


    D.上述ABC三步,实现了事件的相互监听触发


  ②两个已绑定的对象(如Command事件类型和Command类)相互的监听调用
    (Command类需继承EventCommand)
    
    比如:
    A.在枚举类中设定CommandEvent.ChangeMultiple枚举类型


    B.在需要调用Command类的地方使用Dispatcher.Dispath()来发送事件实现
       //发送事件,并传递参数multiple倍数
        dispatcher.Dispatch(CommandEvent.ChangeMultiple, multiple); 
    
    C.在已绑定的对象Command类中则可以通过Execute()来处理上述事件调用,其中通过evt.data来获取传递的参数,需要强转类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值