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.
原文地址:https://blog.csdn.net/weixin_69360830/article/details/145282523
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!