修复报错

This commit is contained in:
Sora丶kong
2026-03-03 11:32:30 +08:00
parent 82130f6146
commit 2f0862b382
10 changed files with 125 additions and 81 deletions

View File

@@ -6,20 +6,19 @@ using BigSpace.XRCore.Scene;
using System;
using BigSpace.XRCore.Event;
using BigSpace.Logic;
using Unity.XR.PXR;
public class SceneMgr : MonoSingleton<SceneMgr>
{
private Coroutine _currentCoroutine; // 当前正在进行的场景切换协程
private ISceneDataProvider _sceneDataProvider; // 场景数据提供者
private Coroutine _currentCoroutine; // <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>еij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>Э<EFBFBD><EFBFBD>
private ISceneDataProvider _sceneDataProvider; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private string _sceneName;
public int nowSceneId = 0; //当前正式的场景(不包括中间过度场景)
public bool isCanMove = true;//是否可以用手柄走动
public int nowSceneId = 0; //<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ʽ<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>)
public bool isCanMove = true;//<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>߶<EFBFBD>
public bool isTrigger = false;
public bool handisactive = false;
/// <summary>
/// 初始化场景管理器
/// <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="sceneDataProvider">场景数据提供接口</param>
/// <param name="sceneDataProvider"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD></param>
public void Initialize(ISceneDataProvider sceneDataProvider)
{
_sceneDataProvider = sceneDataProvider;
@@ -36,7 +35,7 @@ public class SceneMgr : MonoSingleton<SceneMgr>
{
if (_sceneName == arg0.name)
{
//Debug.Log("======================清了内存");
//Debug.Log("======================<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>");
Resources.UnloadUnusedAssets();
GC.Collect();
}
@@ -49,40 +48,40 @@ public class SceneMgr : MonoSingleton<SceneMgr>
Debug.LogWarning("A scene transition is already in progress.");
return;
}
// 获取场景数据
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
var loadingData = _sceneDataProvider.GetLoadingSceneData(sceneId);
if (_sceneName != null && _sceneName == loadingData.SceneName) //同一个场景就不跳转
if (_sceneName != null && _sceneName == loadingData.SceneName) //ͬһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>ת
return;
_sceneName = loadingData.SceneName;
isTrigger = false;
Debug.Log("开始跳转场景"+ _sceneName);
Debug.Log("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"+ _sceneName);
GlobalEventMgr.Dispatch(GameEvent.EventSetHandMove, 1);
_currentCoroutine = PersistenceCoroutineMgr.Instance.StartCoroutine(HandleSceneTransition(loadingData));
}
public IEnumerator HandleSceneTransition(SceneData loadingData)
{
// 淡出
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GlobalEventMgr.Dispatch(GameEvent.EventChangeScence);
ChangSceneSphereMgr.Instance.ShowChangeSecne(true);
yield return new WaitForSeconds(GameDataManage.Instance.outFadeTime);
//Debug.Log("ok淡出===========================" + loadingData.id + "||" + loadingData.LoadingSceneName + "||" + loadingData.SceneName);
//Debug.Log("ok<EFBFBD><EFBFBD><EFBFBD><EFBFBD>===========================" + loadingData.id + "||" + loadingData.LoadingSceneName + "||" + loadingData.SceneName);
if (!string.IsNullOrEmpty(loadingData.LoadingSceneName))
{
yield return SceneManager.LoadSceneAsync(loadingData.LoadingSceneName);
//旧UI相关
//if (loadingData.SceneName != "Waiting" && loadingData.SceneName != "Scene_07") //关于等待出场景文字
//<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>
//if (loadingData.SceneName != "Waiting" && loadingData.SceneName != "Scene_07") //<EFBFBD><EFBFBD><EFBFBD>ڵȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//{
// //Debug.Log("跳谁:" + loadingData.id + "||" + loadingData.SceneName);
// //Debug.Log("<EFBFBD><EFBFBD>˭:" + loadingData.id + "||" + loadingData.SceneName);
// GlobalEventMgr.Dispatch(GameEvent.EventShowUI, loadingData.id % 10000);
// yield return new WaitForSeconds(4f);
//}
}
//Debug.Log("开始跳目标场景.................."+ loadingData.SceneName);
//Debug.Log("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>.................."+ loadingData.SceneName);
yield return SceneManager.LoadSceneAsync(loadingData.SceneName);
_currentCoroutine = null;
}