#157 AssetsReference的自动销毁计数处理

#157 AssetsReference的自动销毁计数处理
This commit is contained in:
Alex-Rachel
2025-06-05 11:13:21 +08:00
parent b4639fcbdc
commit cb8f15ad88

View File

@@ -23,8 +23,6 @@ namespace TEngine
[DisallowMultipleComponent] [DisallowMultipleComponent]
public sealed class AssetsReference : MonoBehaviour public sealed class AssetsReference : MonoBehaviour
{ {
private static readonly Dictionary<GameObject, int> _gameObjectCountMap = new Dictionary<GameObject, int>();
[SerializeField] [SerializeField]
private GameObject sourceGameObject; private GameObject sourceGameObject;
@@ -52,17 +50,9 @@ namespace TEngine
private void CheckRelease() private void CheckRelease()
{ {
if (_gameObjectCountMap.TryGetValue(sourceGameObject, out var count)) if (sourceGameObject != null)
{ {
if (count <= 1) _resourceModule.UnloadAsset(sourceGameObject);
{
_gameObjectCountMap.Remove(sourceGameObject);
_resourceModule.UnloadAsset(sourceGameObject);
}
else
{
_gameObjectCountMap[sourceGameObject] = count - 1;
}
} }
else else
{ {
@@ -70,24 +60,9 @@ namespace TEngine
} }
} }
private void CheckAdd()
{
if (_gameObjectCountMap.TryGetValue(sourceGameObject, out var count))
{
_gameObjectCountMap[sourceGameObject] = count + 1;
}
else
{
_gameObjectCountMap[sourceGameObject] = 1;
}
}
private void Awake() private void Awake()
{ {
if (sourceGameObject != null) sourceGameObject = null;
{
_gameObjectCountMap[sourceGameObject] = _gameObjectCountMap.TryGetValue(sourceGameObject, out var count) ? count + 1 : 1;
}
} }
private void OnDestroy() private void OnDestroy()
@@ -128,7 +103,6 @@ namespace TEngine
_resourceModule = resourceModule; _resourceModule = resourceModule;
sourceGameObject = source; sourceGameObject = source;
CheckAdd();
return this; return this;
} }
@@ -149,7 +123,7 @@ namespace TEngine
return this; return this;
} }
public static AssetsReference Instantiate(GameObject source, Transform parent = null, IResourceModule resourceModule = null) internal static AssetsReference Instantiate(GameObject source, Transform parent = null, IResourceModule resourceModule = null)
{ {
if (source == null) if (source == null)
{ {