OvertakingLegend/Assets/YooAsset/Runtime/YooAssetManager_Load.cs

145 lines
4.7 KiB
C#
Raw Permalink Normal View History

2025-03-24 03:08:22 +00:00
using System.Collections;
using UnityEngine;
using UnityEngine.Events;
using YooAsset;
/// <summary>
/// YooAsset<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD>
/// </summary>
public partial class YooAssetManager
{
/// <summary>
/// ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
/// </summary>
public T LoadAssetSync<T>(string packageName, string resourceName) where T : Object
{
AssetHandle assetHandle = packagesDic[packageName].LoadAssetSync<T>(resourceName);
if (assetHandle.AssetObject != null)
{
return assetHandle.AssetObject as T;
}
return null;
}
/// <summary>
/// <20><EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
/// </summary>
public void LoadAssetAsync<T>(string packageName, string resourceName, UnityAction<T> callBack) where T : Object
{
StartCoroutine(IE_LoadAssetAsync<T>(packageName, resourceName, callBack));
}
/// <summary>
/// <20><EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>Э<EFBFBD><D0AD>
/// </summary>
private IEnumerator IE_LoadAssetAsync<T>(string packageName, string resourceName, UnityAction<T> callBack) where T : Object
{
AssetHandle assetHandle = packagesDic[packageName].LoadAssetAsync<T>(resourceName);
yield return assetHandle;
callBack?.Invoke(assetHandle.AssetObject as T);
}
/// <summary>
/// ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
/// </summary>
public T LoadSubAssetsSync<T>(string packageName, string resourceName) where T : Object
{
SubAssetsHandle subAssetsHandle = packagesDic[packageName].LoadSubAssetsSync<T>(resourceName);
return subAssetsHandle as T;
}
/// <summary>
/// <20><EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
/// </summary>
public void LoadSubAssetsAsync<T>(string packageName, string resourceName, string subResourcesName, UnityAction<T> callBack) where T : Object
{
StartCoroutine(IE_LoadSubAssetsAsync<T>(packageName, resourceName, subResourcesName, callBack));
}
/// <summary>
/// <20><EFBFBD><ECB2BD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
/// </summary>
private IEnumerator IE_LoadSubAssetsAsync<T>(string packageName, string resourceName, string subResourcesName, UnityAction<T> callBack) where T : Object
{
SubAssetsHandle handle = packagesDic[packageName].LoadSubAssetsAsync<T>(resourceName);
yield return handle;
var sprite = handle.GetSubAssetObject<T>(subResourcesName);
callBack?.Invoke(handle as T);
}
/// <summary>
/// <20><EFBFBD><ECB2BD><EFBFBD>س<EFBFBD><D8B3><EFBFBD>
/// </summary>
public void LoadSceneAsync(string packageName, string sceneName, UnityAction callBack)
{
StartCoroutine(IE_LoadSceneAsync(packageName, sceneName, callBack));
}
/// <summary>
/// <20><EFBFBD><ECB2BD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
/// </summary>
private IEnumerator IE_LoadSceneAsync(string packageName, string sceneName, UnityAction callBack)
{
string location = sceneName;
var sceneMode = UnityEngine.SceneManagement.LoadSceneMode.Single;
bool suspendLoad = false;
SceneHandle handle = packagesDic[packageName].LoadSceneAsync(location, sceneMode, suspendLoad);
yield return handle;
callBack?.Invoke();
}
/*
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ļ<EFBFBD>
/// </summary>
public void LoadVideo(string packageName, string videoName, UnityAction<VideoClip> callBack)
{
StartCoroutine(IE_LoadVideo(packageName,videoName,callBack));
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Э<EFBFBD><D0AD>
/// </summary>
private IEnumerator IE_LoadVideo(string packageName,string videoName,UnityAction<VideoClip> callBack)
{
var package = YooAssets.GetPackage(packageName);
var handle = package.LoadRawFileAsync(videoName);
yield return handle;
handle.GetRawFilePath();
callBack?.Invoke();
}
*/
/// <summary>
/// ж<><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ͷŷ<CDB7><C5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ȥ<EFBFBD>ͷ<EFBFBD>
/// </summary>
private void UnloadUnusedAssets(string packageName)
{
var package = YooAssets.GetPackage(packageName);
package.UnloadUnusedAssets();
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
/// ע<><EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ڱ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
/// </summary>
/// <param name="resourceName"></param>
private void TryUnloadUnusedAsset(string packageName, string resourceName)
{
var package = YooAssets.GetPackage(packageName);
package.TryUnloadUnusedAsset(resourceName);
}
/// <summary>
/// ǿ<><C7BF>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA>ʵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// ע<>⣺Package<67><65><EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD>ʱ<EFBFBD><CAB1>Ҳ<EFBFBD><D2B2><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ø÷<C3B8><C3B7><EFBFBD>
/// </summary>
private void ForceUnloadAllAssets(string packageName)
{
var package = YooAssets.GetPackage(packageName);
package.ForceUnloadAllAssets();
}
}