TEngine 6

This commit is contained in:
Alex-Rachel
2025-03-07 23:09:46 +08:00
parent aad8ff3ee5
commit 551727687f
1988 changed files with 46223 additions and 94880 deletions

View File

@@ -1,13 +1,12 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
namespace YooAsset
{
public sealed class AllAssetsHandle : HandleBase, IDisposable
public sealed class AllAssetsHandle : HandleBase
{
private System.Action<AllAssetsHandle> _callback;
internal AllAssetsHandle(ProviderBase provider) : base(provider)
internal AllAssetsHandle(ProviderOperation provider) : base(provider)
{
}
internal override void InvokeCallback()
@@ -47,27 +46,10 @@ namespace YooAsset
Provider.WaitForAsyncComplete();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release()
{
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 子资源对象集合
/// </summary>
public UnityEngine.Object[] AllAssetObjects
public IReadOnlyList<UnityEngine.Object> AllAssetObjects
{
get
{

View File

@@ -1,14 +1,12 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
namespace YooAsset
{
public sealed class AssetHandle : HandleBase, IDisposable
public sealed class AssetHandle : HandleBase
{
private System.Action<AssetHandle> _callback;
internal AssetHandle(ProviderBase provider) : base(provider)
internal AssetHandle(ProviderOperation provider) : base(provider)
{
}
internal override void InvokeCallback()
@@ -48,22 +46,6 @@ namespace YooAsset
Provider.WaitForAsyncComplete();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release()
{
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 资源对象
@@ -116,25 +98,25 @@ namespace YooAsset
/// <summary>
/// 异步初始化游戏对象
/// </summary>
public InstantiateOperation InstantiateAsync()
public InstantiateOperation InstantiateAsync(bool actived = true)
{
return InstantiateAsyncInternal(false, Vector3.zero, Quaternion.identity, null, false);
return InstantiateAsyncInternal(false, Vector3.zero, Quaternion.identity, null, false, actived);
}
public InstantiateOperation InstantiateAsync(Transform parent)
public InstantiateOperation InstantiateAsync(Transform parent, bool actived = true)
{
return InstantiateAsyncInternal(false, Vector3.zero, Quaternion.identity, parent, false);
return InstantiateAsyncInternal(false, Vector3.zero, Quaternion.identity, parent, false, actived);
}
public InstantiateOperation InstantiateAsync(Transform parent, bool worldPositionStays)
public InstantiateOperation InstantiateAsync(Transform parent, bool worldPositionStays, bool actived = true)
{
return InstantiateAsyncInternal(false, Vector3.zero, Quaternion.identity, parent, worldPositionStays);
return InstantiateAsyncInternal(false, Vector3.zero, Quaternion.identity, parent, worldPositionStays, actived);
}
public InstantiateOperation InstantiateAsync(Vector3 position, Quaternion rotation)
public InstantiateOperation InstantiateAsync(Vector3 position, Quaternion rotation, bool actived = true)
{
return InstantiateAsyncInternal(true, position, rotation, null, false);
return InstantiateAsyncInternal(true, position, rotation, null, false, actived);
}
public InstantiateOperation InstantiateAsync(Vector3 position, Quaternion rotation, Transform parent)
public InstantiateOperation InstantiateAsync(Vector3 position, Quaternion rotation, Transform parent, bool actived = true)
{
return InstantiateAsyncInternal(true, position, rotation, parent, false);
return InstantiateAsyncInternal(true, position, rotation, parent, false, actived);
}
private GameObject InstantiateSyncInternal(bool setPositionAndRotation, Vector3 position, Quaternion rotation, Transform parent, bool worldPositionStays)
@@ -146,10 +128,10 @@ namespace YooAsset
return InstantiateOperation.InstantiateInternal(Provider.AssetObject, setPositionAndRotation, position, rotation, parent, worldPositionStays);
}
private InstantiateOperation InstantiateAsyncInternal(bool setPositionAndRotation, Vector3 position, Quaternion rotation, Transform parent, bool worldPositionStays)
private InstantiateOperation InstantiateAsyncInternal(bool setPositionAndRotation, Vector3 position, Quaternion rotation, Transform parent, bool worldPositionStays, bool actived)
{
string packageName = GetAssetInfo().PackageName;
InstantiateOperation operation = new InstantiateOperation(this, setPositionAndRotation, position, rotation, parent, worldPositionStays);
InstantiateOperation operation = new InstantiateOperation(this, setPositionAndRotation, position, rotation, parent, worldPositionStays, actived);
OperationSystem.StartOperation(packageName, operation);
return operation;
}

View File

@@ -3,18 +3,37 @@ using System.Collections;
namespace YooAsset
{
public abstract class HandleBase : IEnumerator
public abstract class HandleBase : IEnumerator, IDisposable
{
private readonly AssetInfo _assetInfo;
internal ProviderBase Provider { private set; get; }
internal ProviderOperation Provider { private set; get; }
internal HandleBase(ProviderBase provider)
internal HandleBase(ProviderOperation provider)
{
Provider = provider;
_assetInfo = provider.MainAssetInfo;
}
internal abstract void InvokeCallback();
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release()
{
if (IsValidWithWarning == false)
return;
Provider.ReleaseHandle(this);
Provider = null;
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.Release();
}
/// <summary>
/// 获取资源信息
/// </summary>
@@ -29,9 +48,7 @@ namespace YooAsset
public DownloadStatus GetDownloadStatus()
{
if (IsValidWithWarning == false)
{
return DownloadStatus.CreateDefaultStatus();
}
return Provider.GetDownloadStatus();
}
@@ -44,7 +61,6 @@ namespace YooAsset
{
if (IsValidWithWarning == false)
return EOperationStatus.None;
return Provider.Status;
}
}
@@ -83,7 +99,7 @@ namespace YooAsset
get
{
if (IsValidWithWarning == false)
return false;
return true;
return Provider.IsDone;
}
}
@@ -124,24 +140,18 @@ namespace YooAsset
}
}
/// <summary>
/// 释放句柄
/// </summary>
internal void ReleaseInternal()
{
if (IsValidWithWarning == false)
return;
Provider.ReleaseHandle(this);
Provider = null;
}
#region
/// <summary>
/// 异步操作任务
/// </summary>
public System.Threading.Tasks.Task Task
{
get { return Provider.Task; }
get
{
if (IsValidWithWarning == false)
return null;
return Provider.Task;
}
}
// 协程相关

View File

@@ -1,14 +1,11 @@
using System;
using System.IO;
using System.Text;

namespace YooAsset
{
public class RawFileHandle : HandleBase, IDisposable
public class RawFileHandle : HandleBase
{
private System.Action<RawFileHandle> _callback;
internal RawFileHandle(ProviderBase provider) : base(provider)
internal RawFileHandle(ProviderOperation provider) : base(provider)
{
}
internal override void InvokeCallback()
@@ -48,22 +45,6 @@ namespace YooAsset
Provider.WaitForAsyncComplete();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release()
{
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 获取原生文件的二进制数据
@@ -72,8 +53,7 @@ namespace YooAsset
{
if (IsValidWithWarning == false)
return null;
string filePath = Provider.RawFilePath;
return FileUtility.ReadAllBytes(filePath);
return Provider.BundleResultObject.ReadBundleFileData();
}
/// <summary>
@@ -83,8 +63,7 @@ namespace YooAsset
{
if (IsValidWithWarning == false)
return null;
string filePath = Provider.RawFilePath;
return FileUtility.ReadAllText(filePath);
return Provider.BundleResultObject.ReadBundleFileText();
}
/// <summary>
@@ -94,7 +73,7 @@ namespace YooAsset
{
if (IsValidWithWarning == false)
return string.Empty;
return Provider.RawFilePath;
return Provider.BundleResultObject.GetBundleFilePath();
}
}
}

View File

@@ -7,7 +7,7 @@ namespace YooAsset
private System.Action<SceneHandle> _callback;
internal string PackageName { set; get; }
internal SceneHandle(ProviderBase provider) : base(provider)
internal SceneHandle(ProviderOperation provider) : base(provider)
{
}
internal override void InvokeCallback()
@@ -23,7 +23,7 @@ namespace YooAsset
add
{
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SceneHandle)} is invalid");
throw new System.Exception($"{nameof(SceneHandle)} is invalid !");
if (Provider.IsDone)
value.Invoke(this);
else
@@ -32,7 +32,7 @@ namespace YooAsset
remove
{
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SceneHandle)} is invalid");
throw new System.Exception($"{nameof(SceneHandle)} is invalid !");
_callback -= value;
}
}
@@ -100,14 +100,9 @@ namespace YooAsset
if (IsValidWithWarning == false)
return false;
if (Provider is DatabaseSceneProvider)
if (Provider is SceneProvider)
{
var provider = Provider as DatabaseSceneProvider;
provider.UnSuspendLoad();
}
else if (Provider is BundledSceneProvider)
{
var provider = Provider as BundledSceneProvider;
var provider = Provider as SceneProvider;
provider.UnSuspendLoad();
}
else
@@ -118,31 +113,8 @@ namespace YooAsset
}
/// <summary>
/// 是否为主场景
/// </summary>
public bool IsMainScene()
{
if (IsValidWithWarning == false)
return false;
if (Provider is DatabaseSceneProvider)
{
var temp = Provider as DatabaseSceneProvider;
return temp.SceneMode == LoadSceneMode.Single;
}
else if (Provider is BundledSceneProvider)
{
var temp = Provider as BundledSceneProvider;
return temp.SceneMode == LoadSceneMode.Single;
}
else
{
throw new System.NotImplementedException();
}
}
/// <summary>
/// 异步卸载子场景
/// 异步卸载场景对象
/// 注意场景卸载成功后会自动释放该handle的引用计数
/// </summary>
public UnloadSceneOperation UnloadAsync()
{
@@ -157,24 +129,12 @@ namespace YooAsset
return operation;
}
// 如果是主场景
if (IsMainScene())
{
string error = $"Cannot unload main scene. Use {nameof(YooAssets.LoadSceneAsync)} method to change the main scene !";
YooLogger.Error(error);
var operation = new UnloadSceneOperation(error);
OperationSystem.StartOperation(packageName, operation);
return operation;
}
// 卸载子场景
// 注意:如果场景正在加载过程,必须等待加载完成后才可以卸载该场景。
{
var operation = new UnloadSceneOperation(Provider);
OperationSystem.StartOperation(packageName, operation);
return operation;
}
}
}
}

View File

@@ -1,13 +1,12 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
namespace YooAsset
{
public sealed class SubAssetsHandle : HandleBase, IDisposable
public sealed class SubAssetsHandle : HandleBase
{
private System.Action<SubAssetsHandle> _callback;
internal SubAssetsHandle(ProviderBase provider) : base(provider)
internal SubAssetsHandle(ProviderOperation provider) : base(provider)
{
}
internal override void InvokeCallback()
@@ -47,33 +46,17 @@ namespace YooAsset
Provider.WaitForAsyncComplete();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release()
{
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 子资源对象集合
/// </summary>
public UnityEngine.Object[] AllAssetObjects
public IReadOnlyList<UnityEngine.Object> SubAssetObjects
{
get
{
if (IsValidWithWarning == false)
return null;
return Provider.AllAssetObjects;
return Provider.SubAssetObjects;
}
}
@@ -87,9 +70,9 @@ namespace YooAsset
if (IsValidWithWarning == false)
return null;
foreach (var assetObject in Provider.AllAssetObjects)
foreach (var assetObject in Provider.SubAssetObjects)
{
if (assetObject.name == assetName)
if (assetObject.name == assetName && assetObject is TObject)
return assetObject as TObject;
}
@@ -106,14 +89,14 @@ namespace YooAsset
if (IsValidWithWarning == false)
return null;
List<TObject> ret = new List<TObject>(Provider.AllAssetObjects.Length);
foreach (var assetObject in Provider.AllAssetObjects)
List<TObject> result = new List<TObject>(Provider.SubAssetObjects.Length);
foreach (var assetObject in Provider.SubAssetObjects)
{
var retObject = assetObject as TObject;
if (retObject != null)
ret.Add(retObject);
result.Add(retObject);
}
return ret.ToArray();
return result.ToArray();
}
}
}