80 lines
2.4 KiB
C#
80 lines
2.4 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using YooAsset;
|
|
|
|
namespace TH1Resource
|
|
{
|
|
public static class ResourceManager
|
|
{
|
|
public const string DefaultPackageName = "DefaultPackage";
|
|
|
|
private static ResourcePackage _package;
|
|
private static bool _initialized;
|
|
private static bool _initializing;
|
|
|
|
public static bool IsInitialized => _initialized;
|
|
public static ResourcePackage Package => _package;
|
|
|
|
public static SceneHandle LoadSceneAsync(string location, LoadSceneMode sceneMode)
|
|
{
|
|
if (!_initialized)
|
|
{
|
|
Debug.LogError($"[TH1.YooAsset] Resource package is not initialized. scene={location}");
|
|
return null;
|
|
}
|
|
|
|
return _package.LoadSceneAsync(location, sceneMode);
|
|
}
|
|
|
|
public static IEnumerator InitializeCoroutine()
|
|
{
|
|
if (_initialized) yield break;
|
|
|
|
if (_initializing)
|
|
{
|
|
while (_initializing) yield return null;
|
|
yield break;
|
|
}
|
|
|
|
_initializing = true;
|
|
|
|
if (!YooAssets.Initialized)
|
|
{
|
|
YooAssets.Initialize();
|
|
}
|
|
|
|
_package = YooAssets.TryGetPackage(DefaultPackageName) ?? YooAssets.CreatePackage(DefaultPackageName);
|
|
YooAssets.SetDefaultPackage(_package);
|
|
|
|
var operation = _package.InitializeAsync(CreateInitializeParameters());
|
|
yield return operation;
|
|
|
|
_initializing = false;
|
|
if (operation.Status != EOperationStatus.Succeed)
|
|
{
|
|
Debug.LogError($"[TH1.YooAsset] Initialize {DefaultPackageName} failed: {operation.Error}");
|
|
yield break;
|
|
}
|
|
|
|
_initialized = true;
|
|
Debug.Log($"[TH1.YooAsset] Initialize {DefaultPackageName}: OK");
|
|
}
|
|
|
|
private static InitializeParameters CreateInitializeParameters()
|
|
{
|
|
#if UNITY_EDITOR
|
|
var parameters = new EditorSimulateModeParameters
|
|
{
|
|
SimulateManifestFilePath = EditorSimulateModeHelper.SimulateBuild(
|
|
EDefaultBuildPipeline.BuiltinBuildPipeline,
|
|
DefaultPackageName)
|
|
};
|
|
return parameters;
|
|
#else
|
|
return new OfflinePlayModeParameters();
|
|
#endif
|
|
}
|
|
}
|
|
}
|