UI框架总结

在这里插入图片描述
GameRoot=>LoginSys=>ResSvc=>LoginWind/CreateWind
AudioSvc 在点击时间和进入场景时调用

GameRoot

GameRoot是个空物体 挂载着 二级层脚本 并控制着它们初始化

在这里插入图片描述
是个单例 且不能Destroy 拥有公用API的引用 可以直接调用公用API

控制这游戏的开始 服务模块、业务系统模块的初始化

public class GameRoot : MonoBehaviour
{
    public static GameRoot instance = null;
    public LoadingWind loadingWind;
    public DynamicWind dynamicWind;

    private void Start()
    {
        DontDestroyOnLoad(this); // 让这个游戏物体一直不被摧毁
        Debug.Log("Game Start...");
        
        ClearUiRoot();
        Init();
    }

    /// <summary>
    /// 初始化之前关闭所有界面
    /// </summary>
    private void ClearUiRoot()
    {
        Transform canvas = this.transform.Find("Canvas");
        for(int i = 0; i < canvas.childCount; i++)
        {
            canvas.GetChild(i).gameObject.SetActive(false);
        }
        dynamicWind.SetWindState();
    }
    /// <summary>
    /// 游戏初始化
    /// </summary>
    private void Init()
    {
        instance = this;

        //服务模块初始化
        ResSvc res = GetComponent<ResSvc>();//资源服务
        res.InitSvc();
        AudioSvc audioSvc = GetComponent<AudioSvc>();//音频服务
        audioSvc.InitSvc();
        // 业务系统模块初始化
        LoginSystem login = GetComponent<LoginSystem>();
        login.InitSys();

        //进入登录场景和加载相应的UI
        login.EnterLogin();//进入登录界面 1.异步加载场景  
                                        //2.显示加载进度
                                        //3.切换界面   
    **ResSvc实现  AsycLoadScene 方法中有一个回调函数  
    当异步加载场景 显示加载进度为100时  回到LoginSys 进行切换界面**
                                        

        //dynamicWind.AddTips("这是一条游戏提示");
        //dynamicWind.AddTips("这是一条游戏提示222");



       
    }

    /// <summary>
    /// 增加弹窗提示!  为了方便调用 因为增加弹窗提示这个方法在很多地方都会被用到
    /// </summary>
    /// <param name="text"></param>
    public static void AddTips(string text)
        {
          instance.dynamicWind.AddTips(text);
        }

登录系统LoginSys

LoginSys是个单例 其中有LoginWind和CreateWind的引用 可以调用两个脚本的方法
Wind脚本层控制着点击事件和自身的初始化

基类WindRoot

申请服务模块的引用 初始化时拿到单例引用 减少访问服务模块单例的调用 减少代码量

一些窗口通用的方法 直接从基类继承 增加代码复用率 比如 SetWindState 设置窗口状态 初始化 和 启用禁用写在一个方法里

SetText设置窗口Text的文字内容 就是把Unity自带Api写在方法里 等等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大橘915818

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值