mirror of https://github.com/tuyoogame/YooAsset
fix #506
parent
b334a4986b
commit
a62f808591
|
@ -3,6 +3,16 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
public class AssetInfo
|
public class AssetInfo
|
||||||
{
|
{
|
||||||
|
internal enum ELoadMethod
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
LoadAsset,
|
||||||
|
LoadSubAssets,
|
||||||
|
LoadAllAssets,
|
||||||
|
LoadScene,
|
||||||
|
LoadRawFile,
|
||||||
|
}
|
||||||
|
|
||||||
private readonly PackageAsset _packageAsset;
|
private readonly PackageAsset _packageAsset;
|
||||||
private string _providerGUID;
|
private string _providerGUID;
|
||||||
|
|
||||||
|
@ -21,6 +31,11 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Error { private set; get; }
|
public string Error { private set; get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加载方法
|
||||||
|
/// </summary>
|
||||||
|
internal ELoadMethod LoadMethod;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 资源对象
|
/// 资源对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -174,7 +174,7 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取资源依赖列表
|
/// 获取依赖列表
|
||||||
/// 注意:传入的资源对象一定合法有效!
|
/// 注意:传入的资源对象一定合法有效!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PackageBundle[] GetAllDependencies(PackageAsset packageAsset)
|
public PackageBundle[] GetAllDependencies(PackageAsset packageAsset)
|
||||||
|
@ -188,6 +188,21 @@ namespace YooAsset
|
||||||
return result.ToArray();
|
return result.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取依赖列表
|
||||||
|
/// 注意:传入的资源包对象一定合法有效!
|
||||||
|
/// </summary>
|
||||||
|
public PackageBundle[] GetAllDependencies(PackageBundle packageBundle)
|
||||||
|
{
|
||||||
|
List<PackageBundle> result = new List<PackageBundle>(packageBundle.DependBundleIDs.Length);
|
||||||
|
foreach (var dependID in packageBundle.DependBundleIDs)
|
||||||
|
{
|
||||||
|
var dependBundle = GetMainPackageBundle(dependID);
|
||||||
|
result.Add(dependBundle);
|
||||||
|
}
|
||||||
|
return result.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 尝试获取包裹的资源
|
/// 尝试获取包裹的资源
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -176,7 +176,17 @@ namespace YooAsset
|
||||||
throw new Exception("Should never get here !");
|
throw new Exception("Should never get here !");
|
||||||
|
|
||||||
// 注意:如果清单里未找到资源包会抛出异常!
|
// 注意:如果清单里未找到资源包会抛出异常!
|
||||||
var depends = ActiveManifest.GetAllDependencies(assetInfo.Asset);
|
PackageBundle[] depends;
|
||||||
|
if (assetInfo.LoadMethod == AssetInfo.ELoadMethod.LoadAllAssets)
|
||||||
|
{
|
||||||
|
var mainBundle = ActiveManifest.GetMainPackageBundle(assetInfo.Asset);
|
||||||
|
depends = ActiveManifest.GetAllDependencies(mainBundle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
depends = ActiveManifest.GetAllDependencies(assetInfo.Asset);
|
||||||
|
}
|
||||||
|
|
||||||
List<BundleInfo> result = new List<BundleInfo>(depends.Length);
|
List<BundleInfo> result = new List<BundleInfo>(depends.Length);
|
||||||
foreach (var packageBundle in depends)
|
foreach (var packageBundle in depends)
|
||||||
{
|
{
|
||||||
|
|
|
@ -610,6 +610,7 @@ namespace YooAsset
|
||||||
private SceneHandle LoadSceneInternal(AssetInfo assetInfo, bool waitForAsyncComplete, LoadSceneMode sceneMode, LocalPhysicsMode physicsMode, bool suspendLoad, uint priority)
|
private SceneHandle LoadSceneInternal(AssetInfo assetInfo, bool waitForAsyncComplete, LoadSceneMode sceneMode, LocalPhysicsMode physicsMode, bool suspendLoad, uint priority)
|
||||||
{
|
{
|
||||||
DebugCheckAssetLoadType(assetInfo.AssetType);
|
DebugCheckAssetLoadType(assetInfo.AssetType);
|
||||||
|
assetInfo.LoadMethod = AssetInfo.ELoadMethod.LoadScene;
|
||||||
var loadSceneParams = new LoadSceneParameters(sceneMode, physicsMode);
|
var loadSceneParams = new LoadSceneParameters(sceneMode, physicsMode);
|
||||||
var handle = _resourceManager.LoadSceneAsync(assetInfo, loadSceneParams, suspendLoad, priority);
|
var handle = _resourceManager.LoadSceneAsync(assetInfo, loadSceneParams, suspendLoad, priority);
|
||||||
if (waitForAsyncComplete)
|
if (waitForAsyncComplete)
|
||||||
|
@ -720,6 +721,7 @@ namespace YooAsset
|
||||||
private AssetHandle LoadAssetInternal(AssetInfo assetInfo, bool waitForAsyncComplete, uint priority)
|
private AssetHandle LoadAssetInternal(AssetInfo assetInfo, bool waitForAsyncComplete, uint priority)
|
||||||
{
|
{
|
||||||
DebugCheckAssetLoadType(assetInfo.AssetType);
|
DebugCheckAssetLoadType(assetInfo.AssetType);
|
||||||
|
assetInfo.LoadMethod = AssetInfo.ELoadMethod.LoadAsset;
|
||||||
var handle = _resourceManager.LoadAssetAsync(assetInfo, priority);
|
var handle = _resourceManager.LoadAssetAsync(assetInfo, priority);
|
||||||
if (waitForAsyncComplete)
|
if (waitForAsyncComplete)
|
||||||
handle.WaitForAsyncComplete();
|
handle.WaitForAsyncComplete();
|
||||||
|
@ -829,6 +831,7 @@ namespace YooAsset
|
||||||
private SubAssetsHandle LoadSubAssetsInternal(AssetInfo assetInfo, bool waitForAsyncComplete, uint priority)
|
private SubAssetsHandle LoadSubAssetsInternal(AssetInfo assetInfo, bool waitForAsyncComplete, uint priority)
|
||||||
{
|
{
|
||||||
DebugCheckAssetLoadType(assetInfo.AssetType);
|
DebugCheckAssetLoadType(assetInfo.AssetType);
|
||||||
|
assetInfo.LoadMethod = AssetInfo.ELoadMethod.LoadSubAssets;
|
||||||
var handle = _resourceManager.LoadSubAssetsAsync(assetInfo, priority);
|
var handle = _resourceManager.LoadSubAssetsAsync(assetInfo, priority);
|
||||||
if (waitForAsyncComplete)
|
if (waitForAsyncComplete)
|
||||||
handle.WaitForAsyncComplete();
|
handle.WaitForAsyncComplete();
|
||||||
|
@ -938,6 +941,7 @@ namespace YooAsset
|
||||||
private AllAssetsHandle LoadAllAssetsInternal(AssetInfo assetInfo, bool waitForAsyncComplete, uint priority)
|
private AllAssetsHandle LoadAllAssetsInternal(AssetInfo assetInfo, bool waitForAsyncComplete, uint priority)
|
||||||
{
|
{
|
||||||
DebugCheckAssetLoadType(assetInfo.AssetType);
|
DebugCheckAssetLoadType(assetInfo.AssetType);
|
||||||
|
assetInfo.LoadMethod = AssetInfo.ELoadMethod.LoadAllAssets;
|
||||||
var handle = _resourceManager.LoadAllAssetsAsync(assetInfo, priority);
|
var handle = _resourceManager.LoadAllAssetsAsync(assetInfo, priority);
|
||||||
if (waitForAsyncComplete)
|
if (waitForAsyncComplete)
|
||||||
handle.WaitForAsyncComplete();
|
handle.WaitForAsyncComplete();
|
||||||
|
|
Loading…
Reference in New Issue