strange IOC框架 塔防游戏实例应用 (四)


源码在最后放上


应用场景: 进入游戏开始计时


顺序逻辑: 进入场景发出View层事件 -》 View的Mediator接收 -》调用View触发-》发出结束事件


1.进入场景发出View层事件

 IEnumerator StartCount()
    {
        yield return new WaitForSeconds(0f);    
        dispatcher.Dispatch(ViewEventType.StartCount);
    }


2. View的Mediator接收

public class Mediator_CountDown : EventMediator {

    [Inject]
    public View_CountDown View_CountDown { get; set; }
    //监听
    public override void OnRegister()
    {
        View_CountDown.Init();
        dispatcher.AddListener(ViewEventType.StartCount, OnStartCount);
    }
    
    public void OnDestroy()
    {
        dispatcher.RemoveListener(ViewEventType.StartCount, OnStartCount);
    }
    //开始计时
     void OnStartCount()
    {
        StartCoroutine(StartCount());
    }

    IEnumerator StartCount()
    {
        int Count = 1;

        while(Count < 4)
        {
            View_CountDown.SetCount(Count-1);
            Count++;
            yield return new WaitForSeconds(0.1f);
        }
        //发出结束事件
        dispatcher.Dispatch(EventType.StartCountComplete);

        UIManager.Instance.CloseUI(UIPanelType.CountDownPanel);
    }


}

3.调用View触发

public class View_CountDown : View {

    public GameObject Fire;
    public Image Count;

    public Sprite[] CountSprites;

    public void Init()
    {
        Fire = transform.Find("Fire").gameObject;
        Count = transform.Find("Count").GetComponent<Image>();
    }
    //UI处理
    public void SetCount(int i)
    {
        Count.sprite = CountSprites[i];
    }

    public void RotateFire(int speed)
    {
        Fire.transform.localEulerAngles = new Vector3(Fire.transform.localEulerAngles.x, Fire.transform.localEulerAngles.y, Fire.transform.localEulerAngles.z + speed);
    }

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值