12_PlayerPrefs存储登录窗口逻辑_回调函数优化Lamd表达式

创建 登录窗口LoginWnd.cs

绑定 登录窗口LoginWnd.cs

编写 登录窗口LoginWnd.cs

using UnityEngine;
using UnityEngine.UI; //输入文本 命名空间
//功能 : 登录注册窗口
public class LoginWnd : MonoBehaviour{public InputField iptAcct;public InputField iptPass;public Button btnEnter;public Button btnNotice;public void InitWnd() {//获取本地存储账号密码if (PlayerPrefs.HasKey("Acct") && PlayerPrefs.HasKey("Pass")){iptAcct.text = PlayerPrefs.GetString("Acct");iptPass.text = PlayerPrefs.GetString("Pass");}else {iptAcct.text = "";iptPass.text = "";}}//TODO//更新本地存储的账号密码
}

编写完成后我们需要在 登录业务系统LoginSys.cs中去调用这个登录窗口LoginWnd.cs

编写登陆业务系统LoginSys.cs脚本

using UnityEngine;
//功能 : 登陆注册业务系统
public class LoginSys : MonoBehaviour{#region 引用登录窗口public LoginWnd loginWnd;#endregionpublic void InitSys() {Debug.Log("Init LoginSys...");}//进入登录界面public void EnterLogin() {//单例引用显示 加载窗口GameRoot.Instance.loadingWnd.gameObject.SetActive(true);//加载窗口初始化GameRoot.Instance.loadingWnd.InitWnd();//TODO//异步加载登录界面#region 调用ResSvc单例类ResSvc.Instance.AsyncLoadScene(Constans.SceneLogin);#endregion//并显示加载进度//加载完成后再打开登陆界面}#region 打开登录窗口public void OpenLoginWnd() {//激活登录窗口loginWnd.gameObject.SetActive(true);//初始化登录窗口loginWnd.InitWnd();}#endregion
}

该登录窗口LoginSys.cs 应该在 激活登录窗口 初始化登录窗口后(在资源加载服务层关闭加载窗口之后)被打开

所以找到资源加载服务层ResSvc.cs脚本

然而可以简化代码 - 简化前

简化后

因为要在资源服务层ResSvc.cs的异步加载函数中调用登陆业务系统LoginSys.cs的打开登录窗口函数 所以要先把登陆业务系统设置成单例

这样在 资源服务层ResSvc.cs就可以调用到 登陆业务系统LoginSys.cs的打开登录窗口函数了

然后对脚本 登录窗口LoginWnd.cs进行关联

再对游戏根入口GameRoot.cs进行关联

调整背景场景 的Canvas的穿透度

这样确保这个场景背景在加载其他UI窗口时 这个背景置于最底层

运行效果

但是在游戏整个运行中不能每次调用 资源加载服务ResSvc.cs都要打开这个登录窗口

所以这句代码要被放在别处

我们希望资源加载的服务 只做资源加载服务 而不用管这个资源加载的请求是谁发出来的

所以这行代码要被注释 需要进行修改

我们可以传递一个回调函数来解决这个问题

当异步加载完成之后就进行回调

这样写的好处是因为这个loded是从外面传进来的 代码是通用的 而且结构清晰无需多于引用

在其他地方无论是切换战斗 切换主城都可以用 

另外 登陆业务系统也可以用Lamd表达式对代码进行简化

简化前

简化后

using UnityEngine;
//功能 : 登陆注册业务系统
public class LoginSys : MonoBehaviour{#region 单例模式public static LoginSys Instance = null;#endregion#region 引用登录窗口public LoginWnd loginWnd;#endregionpublic void InitSys() {#region 单例模式Instance = this;#endregionDebug.Log("Init LoginSys...");}//进入登录界面public void EnterLogin() {//TODO//异步加载登录界面//并显示加载进度#region 调用ResSvc单例类ResSvc.Instance.AsyncLoadScene(Constans.SceneLogin,() => {//打开登录窗口loginWnd.gameObject.SetActive(true);//初始化登录窗口loginWnd.InitWnd();});#endregion}
}

运行效果还是一样的

End.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西门子【Library of General Functions (LGF) for SIMATIC S7-1200 / S7-1500】

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 通用函数库 (LGF) 扩展了 TIA Portal 中用于 PLC 编程的 STEP 7 指令(数学函数、时间、计数器 等)。该库可以不受限制地使用,并包含 FIFO 、搜索功能、矩阵计算、 astro 计…

每日一刷——1.20——准备蓝桥杯

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目一 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次&a…

Cursor 与常见集成开发环境(IDE)的优势对比

Cursor与常见集成开发环境(IDE)的优势对比 一、AI 辅助编程能力 强大的代码生成功能: Cursor: 以其内置的强大 AI 辅助编程功能为核心优势。用户可以通过输入自然语言描述,快速生成各种编程语言的代码。例如&#xf…

会议签到系统的架构和实现

会议签到系统的架构和实现 摘要:通过定制安卓会议机开机APP呈现签到界面,并且通过W/B结构采集管理签到信息,实现会议签到的功能。为达到此目标本文将探讨使用Redis提供后台数据支持;使用SocketIo处理适时消息;使用Flask进行原型开…

c++ 与 Matlab 程序的数据比对

文章目录 背景环境数据保存数据加载 背景 ***避免数据精度误差&#xff0c;快速对比变量 *** 环境 c下载 https://github.com/BlueBrain/HighFive 以及hdf5库 在vs 中配置库 数据保存 #include <highfive/highfive.hpp> using namespace HighFive;std::string fil…

【go语言】go的卸载与安装

一、卸载go sudo rm -rf /usr/local/go sudo apt-get remove golang sudo apt-get remove golang-go sudo apt-get autoremove wget https://dl.google.com/go/go1.19.linux-amd64.tar.gz sudo tar -xzf go1.19.linux-amd64.tar.gz -C /usr/local go env -w GOPROXY"http…

python3D圣诞树

import pygame import math from pygame.locals import *# 初始化Pygame pygame.init()# 设置屏幕尺寸和标题 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D 圣诞树)# 设置颜色 GREEN (34, 139, 34) BROWN (139,…

探索 SolidJS:一款高速的前端框架

在当今的前端开发领域&#xff0c;React、Vue 和 Angular 等框架已经占据了主流位置。然而&#xff0c;对于追求性能极致优化和简单易用性的开发者来说&#xff0c;一些新兴框架正逐渐引起关注&#xff0c;其中 SolidJS 就是一个令人瞩目的候选者。本文将带您深入探讨 SolidJS …

WPF 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法

本章讲述&#xff1a;引发类型为“System.Windows.Forms.AxHostInvalidActiveXStateException”的异常 解决办法。 这几天在做一个WPF功能时&#xff0c;因为引用了第三方的OCX控件&#xff0c;一般来说一个对象只要实例化就行了, 但是在引用这个控件时就报引发类型为“System.…

Kotlin语言的数据库编程

Kotlin语言的数据库编程 引言 Kotlin是一种现代的编程语言&#xff0c;因其简洁、强大和安全性而受到广泛欢迎。自从Google宣布Kotlin成为Android开发的官方语言以来&#xff0c;它的使用范围不断扩大&#xff0c;尤其是在移动应用开发、服务器端开发和数据科学等领域。在本篇…

22. C语言 输入与输出详解

本章目录: 前言1. 输入输出的基础概念1.1 标准输入输出流1.2 输入输出函数 2. 格式化输出与输入2.1 使用 printf() 进行输出示例 1: 输出字符串示例 2: 输出整数示例 3: 输出浮点数 2.2 使用 scanf() 进行输入示例 4: 读取整数和字符改进方案&#xff1a;使用getchar()清理缓冲…

OSS使用签名URL上传(返回前端上传地址)- NodeJS

使用过程 使用PUT方式的签名URL上传文件的过程如下&#xff1a; 代码示例 文件拥有者生成PUT方法的签名URL const OSS require("ali-oss");// 获取签名URL const client await new OSS({accessKeyId: yourAccessKeyId,accessKeySecret: yourAccessKeySecret,buc…

使用 div 自定义 input 和 textarea

1. 为什么要自定义呢&#xff1f; 原生的 input 和 textarea 在某些特定场景下存在功能或兼容性限制&#xff0c;因此使用 div 元素自定义实现&#xff0c;突破原生输入框在样式、功能、兼容性上的限制。 1、解决火狐浏览器换行问题 某些版本的火狐浏览器中&#xff0c;原生…

Golang的网络编程安全

Golang的网络编程安全 一、Golang网络编程的基本概念 作为一种现代化的编程语言&#xff0c;具有优秀的并发特性和网络编程能力。在Golang中&#xff0c;网络编程是非常常见的需求&#xff0c;可以用于开发各种类型的网络应用&#xff0c;比如Web服务、API服务、消息队列等。Go…

springboot集成websocket实现实时大量数据,效率性能高

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01; 也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&…

如何使用usememo和usecallback进行性能优化,什么时候使用usecallback,什么时候使用usememo

React useMemo 和 useCallback 性能优化总结以及使用场景 基本概念 useMemo 用于缓存计算结果&#xff0c;避免在每次渲染时重复进行昂贵的计算。 useCallback 用于缓存函数引用&#xff0c;避免在每次渲染时创建新的函数引用。 使用时机对比 useMemo 适用场景 复杂计算…

Python新春烟花

目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…

vscode 设置

一、如何在vscode中设置放大缩小代码 1.1.文件—首选项——设置 1.2.在搜索框里输入“Font Ligatures”&#xff0c;然后点击"在settings.json中编辑" 1.3.在setting中&#xff08;"editor.fontLigatures":前&#xff09;添加如下代码 "editor.mous…

航电系统路线规划克隆核心技术!

一、航电系统 航电系统&#xff08;Avionics System&#xff09;是民用飞机的“大脑”与“神经”&#xff0c;分为航电核心处理与数据传感两个部分。航电核心处理系统采用综合模块化、开放式系统结构&#xff0c;为飞机提供公共计算、网络通信和接口、飞行管理、显示与告警、机…

win内核内部直接irp读取文件写入文件

#include <ntifs.h> #include <ntddk.h> #define TAG_NAME tlfF // FltF in reverse #define BUFFER_SIZE PAGE_SIZE // 驱动设备扩展结构 typedef struct _DEVICE_EXTENSION { PDEVICE_OBJECT DeviceObject; UNICODE_STRING DeviceName; UNICODE_STRIN…