5.UI架构 弹窗管理器

仿照移动端的弹窗机制写的UI架构:所有的UI窗口 在加载后都注入到弹窗管理器中进行管理开关和赋值显示。

代码架构: 1 弹窗父类Activity   2. 具体弹窗类 xxActivtiy .3.弹窗管理器AcitivtiyManger.4,传递数据类 bundle.5 加载注入类 LoadInUI.6.数据信息接受控制类xxUIController.

具体代码:

 1 弹窗父类Activity :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Activity : MonoBehaviour
{
    //UI弹窗管理器
    public ActivityManager manager;

    //UI弹窗入口
    public virtual void OnCreate(Bundle _bundle = null) { }
    //暂停
    public virtual void OnPause() { }

    //重置
    public virtual void OnResume(Bundle _bundle = null) { }
    //退出
    public virtual void OnActivityDestory() { }
}


2. 具体弹窗类 xxActivtiy继承Activity:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public enum CurrentPanel
{
    Image_Buy,
    Image_Seal,
    Image_Make
}
//商店弹窗
public class MarketActivity : Activity
{
    [Header("关闭按钮")]
    public Image bg;
    public Button close;
    public Toggle Buy;
    public Toggle Seal;
    public Toggle Make;
    public GameObject imageBg;

    //商店等级
    public Text Lv;
    public Text adress;
    /// <summary>
    /// 价格波动 刷新时间
    /// </summary>
    public Text time;
    /// <summary>
    /// 补货       刷新时间
    /// </summary>
    public Text time_1;
    /// <summary>
    /// 今日最大出售金额
    /// </summary>
    public Text seal_Max;

    //记录当前是 购买 、 卖出 还是 制作 面板
    [HideInInspector]
    public CurrentPanel current = CurrentPanel.Image_Buy;

    [Header("Buy, Seal , Make 父物体")]
    public GameObject[] BSM;
   
    //商店主界面进入
    public override void OnCreate(Bundle _bundle = null)
    {
        #region // 商店主界面的相关设置绑定刷新赋值以及网络信息的监听操作

        //关菊花
        GameManager.Instance.activity.Flush();
        //关闭3d主场景输入控制系统
        GameManager.Instance.inputSystem.SetActiveState(false);
        this.gameObject.SetActive(true);
        //添加购买成功监听
        GameManager.Instance.gameEventDispatcher.AddEventListener(GameEventType.MarketBuySuccess, BuySuccess);
        close.onClick.AddListener(CloseMarketOnClick);
        Buy.onValueChanged.AddListener(delegate (bool isOn) { ValueChange(isOn, Buy); });

        //刷新界面
        RefreshPanel();
        SetValues();
        //关闭主界面输入控制系统
        GameManager.Instance.inputSystem.SetActiveState(false);
        #endregion

    }
    
    //商店主界面重置
    public override void OnResume(Bundle _bundle = null)
    {
        base.OnResume(_bundle);
        Debug.Log("OnResume调用了");
        SetValues();
    }

    //退出商店总界面
    public override void OnActivityDestory()
    {
        #region//退出主界面的一系列关闭 清空 解除绑定操作。

        Debug.Log("退出敞口");
        base.OnActivityDestory();
        GameManager.Instance.gameEventDispatcher.RemoveEventListener(GameEventType.MarketBuySuccess, BuySuccess);
        close.onClick.RemoveAllListeners();
        gameObject.SetActive(false);
        GameManager.Instance.inputSystem.SetActiveState(true);
        #endregion

    }

    //返回按钮
    void CloseMarketOnClick()
    {
        
        manager.PopWindow();
    }

    //商店内几个界面的切换
    void ValueChange(bool isOn, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值