Unity-UI 架构优化小技巧(二)

简介: Unity-UI 架构优化小技巧

注意这个时候初始化方法已经被封装起来了,在设置状态时会自动调用,而初始化方法设置成了虚函数,方便子类进行定制。

因此加载进度界面和登录注册界面的代码的修改前后为:

using UnityEngine;
using UnityEngine.UI;
public class LoadingWnd : WindowRoot
{
    //初始化加载进度界面
    protected override void InitWnd()
    {
        //实际操作代码
    }
    //设置进度
    public void SetProgress(float prg)
    {
      //实际操作代码
    }
}    
using UnityEngine;
using UnityEngine.UI;
public class LoginWnd : WindowRoot
{
    //初始化登录注册界面
    protected override void InitWnd()
    {
        //实际操作代码
    }
}

注意对比,现在初始化方法要对父类的初始化方法覆写,同时权限不再是公有,因为父类中权限为 protected,所以子类中无法设置成 public,因此此时初始化方法只能被设置状态时自动调用,无需也不能在外部手动调用了。

此时无需改动 GameRoot,但登录注册业务模块和资源加载服务模块对界面的调用也应该发生改变:

using System;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ResSvc : MonoBehaviour 
{
    public void AsyncLoadScene(string sceneName,Action loaded)
    {
        //显示加载界面
        GameRoot.Instance.loadingWnd.SetWndState(true);
        //异步加载指定名字的场景
        AsyncOperation sceneAsync = SceneManager.LoadSceneAsync(sceneName);
        prgCB = ()=>
        {
            //获取当前进度
            float val = sceneAsync.progress;
            //在加载界面设置当前进度
            GameRoot.Instance.loadingWnd.SetProgress(val);
            //加载完成
            if(val == 1)
            {
                //加载完成后调用回调函数
                if(loaded != null)
                {
                    loaded();
                }
                //清空委托和中间结构
                sceneAsync = null;
                prgCB = null;
                //取消对加载界面的展示
                GameRoot.Instance.loadingWnd.SetWndState(false);
            }
        };
    }
}
using UnityEngine;
public class LoginSys : MonoBehaviour 
{
    public void EnterLogin()
    {
        //加载登录场景
        ResSvc.Instance.AsyncLoadScene(Constants.SceneLogin,()=>{
            //加载完成后打开登录注册界面
            loginWnd.SetWndState(true);
        });
    }
}

我们的改动不大,改动部分:(其余部分省略)


//显示加载界面 GameRoot.Instance.loadingWnd.SetWndState(true);


//取消对加载界面的展示 GameRoot.Instance.loadingWnd.SetWndState(false);


//加载完成后打开登录注册界面 loginWnd.SetWndState(true);

其实每个窗口界面里也有可能会用到公共服务 (如资源加载服务模块),如果不作改进,那我们每个窗口界面中都要去获取资源加载服务模块的单例并调用功能,这样改进之后,我们可以在基类窗口脚本中持有对此服务模块的引用,随后在基类初始化方法中对引用赋值,然后在每个窗口的自定义初始化函数中多调用下基类的初始化方法,就可以进一步精简代码,架构也更加清晰。

标红部分即为修改部分:

image.png

UI界面基类

image.png

加载进度界面

同理,其他界面,如登录注册界面,也可以这么改。

目录
相关文章
|
1月前
|
机器学习/深度学习 存储 人工智能
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。
133 10
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
|
5月前
|
机器学习/深度学习 人工智能 文件存储
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
NVIDIA推出的Llama Nemotron系列推理模型,基于Llama架构优化,包含Nano/Super/Ultra三款,在数学推理、编程和工具调用等任务中展现卓越性能。
162 5
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
|
5月前
|
数据采集 运维 Serverless
云函数采集架构:Serverless模式下的动态IP与冷启动优化
本文探讨了在Serverless架构中使用云函数进行网页数据采集的挑战与解决方案。针对动态IP、冷启动及目标网站反爬策略等问题,提出了动态代理IP、请求头优化、云函数预热及容错设计等方法。通过网易云音乐歌曲信息采集案例,展示了如何结合Python代码实现高效的数据抓取,包括搜索、歌词与评论的获取。此方案不仅解决了传统采集方式在Serverless环境下的局限,还提升了系统的稳定性和性能。
152 0
|
1月前
|
数据采集 机器学习/深度学习 运维
从数据感知到决策优化:MyEMS 开源能源管理系统的技术架构与实践效能解析
MyEMS 是一款开源能源管理系统,采用分层解耦与模块化设计,支持多能源协同监测与智能优化调度。系统具备数据采集、分析、预警、碳核算等功能,助力企业实现节能降耗、安全管控与低碳转型,已在百余家全球企业落地应用,具备自主可控、成本低、安全性强等优势,面向虚拟电厂、数字孪生等未来场景持续演进。
104 0
|
2月前
|
缓存 Java 数据库
Java 项目分层架构实操指南及长尾关键词优化方案
本指南详解基于Spring Boot与Spring Cloud的Java微服务分层架构,以用户管理系统为例,涵盖技术选型、核心代码实现、服务治理及部署实践,助力掌握现代化Java企业级开发方案。
140 2
|
3月前
|
监控 搜索推荐 应用服务中间件
301重定向:网站迁移、SEO优化与架构重塑的核心引擎
301重定向是数字世界中确保网站迁移无缝过渡的关键策略。它通过HTTP状态码告知浏览器和搜索引擎资源的永久迁移,帮助维持权重传递与用户体验。本文深入解析301重定向的工作机制、SEO影响及实施策略,涵盖域名迁移、HTTPS升级、URL标准化等场景,并提供服务器配置示例(如.htaccess和Nginx规则)。同时,强调避免重定向链、循环等问题,推荐使用专业工具监控效果。掌握这些技巧,可确保网站在架构调整或迁移时保持流量稳定与搜索引擎信任,成为网站管理不可或缺的战略工具。
90 8
|
2月前
|
缓存 监控 API
电商API的微服务架构优化策略
随着电商快速发展,API成为连接用户、商家与系统的核心。本文探讨微服务架构下电商API的优化策略,分析高并发、低延迟与数据一致性等挑战,并提供服务拆分、缓存异步、监控容器化等实践方案,助力构建高性能、高可用的电商系统,提升用户体验与业务效率。
66 0
|
5月前
|
缓存 监控 安全
301重定向进阶指南:从基础配置到企业级架构优化
本文深入探讨网站重定向的高级技巧与企业级实现,涵盖正则表达式重定向、权重无损迁移、分布式系统适配等核心内容。通过解析301/302状态码区别及应用场景,结合Nginx、Apache配置示例,帮助开发者优化大规模网站重定向逻辑。同时,文章介绍CDN边缘重定向、微服务架构下的规则管理以及容灾设计,确保高性能与安全性。最后提供全链路监控方案和经典案例分析,助你规避流量损失风险,提升SEO表现。
156 38
|
4月前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。

热门文章

最新文章