当前位置: 首页 > article >正文

09_异步加载_单例模式_常量类配置_不可销毁

1.首先在 资源加载服务层ResSvc.cs中添加 自定义异步加载函数

using UnityEngine;
using UnityEngine.SceneManagement; //异步加载 命名空间
//功能 : 资源加载服务
public class ResSvc : MonoBehaviour{
    public void InitSvc(){
        Debug.Log("Init ResSvc...");
    }
    //自定义异步加载
    public void AsyncLoadScene(string sceneName) {
        SceneManager.LoadSceneAsync(sceneName);
    }
}

然后将 资源加载服务层ResSvc.cs设置成 单例类

using UnityEngine;
using UnityEngine.SceneManagement; //异步加载 命名空间
//功能 : 资源加载服务
public class ResSvc : MonoBehaviour{
    #region 单例模式
    public static ResSvc Instance = null;
    #endregion
    public void InitSvc(){
        #region 单例模式
        Instance = this;
        #endregion
        Debug.Log("Init ResSvc...");
    }
    //自定义异步加载
    public void AsyncLoadScene(string sceneName) {
        SceneManager.LoadSceneAsync(sceneName);
    }
}

最后在 登录业务系统层LoginSys.cs 的登录入口函数中调用 异步加载函数

此时需要一个公用的常量类 方便我们在整个项目中查看我们所设置的常量

创建常量类

编写常量类

//功能 : 常量配置
public class Constans {
    //场景名称
    public const string SceneLogin = "SceneLogin";
}

最后将 登录场景SceneLogin 加入到BuildSetting中

修改名字 常量类中的加载场景名字 与 Unity编辑器中的场景名字 对应一致

将两个场景都加入到BuildSeeting中

隐藏掉Canvas下的各个窗口

运行项目


最后在GameRoot.cs类的 开始函数中 加入不可销毁语句

using UnityEngine;
//功能 : 游戏启动入口
public class GameRoot : MonoBehaviour{
    void Start(){
        #region 不可销毁
        DontDestroyOnLoad(this);
        #endregion
        Debug.Log("Game Start...");
        //调用自定义初始化
        Init();
    }
    void Init() {
        //服务模块初始化
        ResSvc res = GetComponent<ResSvc>();
        res.InitSvc();
        //业务系统初始化
        LoginSys login = GetComponent<LoginSys>();
        login.InitSys();

        //进入登陆界面 并 加载相应UI
        login.EnterLogin();
    }
}

此时游戏根入口GameRoot.cs在整个游戏运行时不论怎么切换就不会被删除或销毁了

注意一点 EventSystem要放在不可销毁的对象子级,这样不会因为事件系统被销毁而触发不了对应事件

End.


http://www.kler.cn/a/514807.html

相关文章:

  • 25/1/22 算法笔记<ROS2> TF变换
  • 150 Linux 网络编程6 ,从socket 到 epoll整理。listen函数参数再研究
  • 学生管理系统C++版(简单版)详解
  • 第7章:Python TDD测试Franc对象乘法功能
  • html简单项目案例
  • 开篇:吴恩达《机器学习》课程及免费旁听方法
  • Spring MVC(二)
  • Unreal Engine 5 C++ Advanced Action RPG 十一章笔记
  • CSS语言的学习路线
  • 【蓝桥杯】43693.日期问题
  • 【Unity3D实现雨下在窗户上的效果】
  • OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
  • 【Leetcode 每日一题】1561. 你可以获得的最大硬币数目
  • 数据库事务详解
  • 分支与循环(下)
  • 汽车制造行业案例 | 发动机在制造品管理全解析(附解决方案模板)
  • fastapi 博客系统模型分析
  • 考研408笔记之数据结构(六)——查找
  • go语言gui窗口应用之fyne框架-动态添加、删除一行控件(逐行注释)
  • Django的models.model如何使用
  • LoRA面试篇
  • AIGC浪潮下,图文内容社区数据指标体系如何构建?
  • nodeJS 系统学习(package-包-章节2)
  • 2025牛客寒假算法营1
  • C++并发编程之线程中断异常的捕捉与信息显示
  • Groovy语言的安全开发