架构大更

This commit is contained in:
SoulliesOfficial
2026-03-20 11:56:50 -04:00
parent e60ef64d01
commit d09b58fd80
3663 changed files with 15232012 additions and 105579 deletions

View File

@@ -1,114 +1,108 @@
using UnityEngine;
using System;
using CW.Common;
using UnityEditor;
using UnityEngine;
namespace Lean.Pool.Examples
{
/// <summary>This component can be added to your prefab GameObject, and it will throw warnings if it is instantiated without the use of <b>LeanPool.Spawn</b>, or despawned without the use of <b>LeanPool.Despawn</b>.</summary>
/// <summary>
/// This component can be added to your prefab GameObject, and it will throw warnings if it is instantiated
/// without the use of <b>LeanPool.Spawn</b>, or despawned without the use of <b>LeanPool.Despawn</b>.
/// </summary>
[HelpURL(LeanPool.HelpUrlPrefix + "LeanPoolDebugger")]
[AddComponentMenu(LeanPool.ComponentPathPrefix + "Pool Debugger")]
public class LeanPoolDebugger : MonoBehaviour
{
[SerializeField]
private LeanGameObjectPool cachedPool;
[AddComponentMenu(LeanPool.ComponentPathPrefix + "Pool Debugger")]
public class LeanPoolDebugger : MonoBehaviour
{
[SerializeField] private LeanGameObjectPool cachedPool;
[System.NonSerialized]
private bool skip;
[NonSerialized] private bool skip;
protected virtual void Start()
{
if (Exists() == false)
{
Debug.LogWarning("This clone was NOT spawned using LeanPool.Spawn?!\n" + name, this);
protected virtual void Start()
{
if (!Exists())
{
Debug.LogWarning("This clone was NOT spawned using LeanPool.Spawn?!\n" + name, this);
enabled = false;
}
}
enabled = false;
}
}
protected virtual void Update()
{
if (cachedPool == null)
{
Debug.LogWarning("The pool this prefab was spawned using has been destroyed.\n" + name, this);
enabled = false;
}
else if (!Exists())
{
Debug.LogWarning("This clone was despawned using LeanPool.Despawn, but it's still active?!\n" + name,
this);
enabled = false;
}
}
protected virtual void OnDestroy()
{
if (skip) return;
if (Exists())
Debug.LogWarning(
"This clone has been destroyed, and it was NOT despawned using LeanPool.Despawn?!\n" + name, this);
}
protected virtual void OnApplicationQuit()
{
skip = true;
}
private bool Exists()
{
if (LeanPool.Links.TryGetValue(gameObject, out cachedPool)) return true;
if (LeanGameObjectPool.TryFindPoolByClone(gameObject, ref cachedPool)) return true;
return false;
}
#if UNITY_EDITOR
protected virtual void OnEnable()
{
UnityEditor.EditorApplication.playModeStateChanged += Changed;
}
protected virtual void OnEnable()
{
EditorApplication.playModeStateChanged += Changed;
}
protected virtual void OnDisable()
{
UnityEditor.EditorApplication.playModeStateChanged -= Changed;
}
protected virtual void OnDisable()
{
EditorApplication.playModeStateChanged -= Changed;
}
private void Changed(UnityEditor.PlayModeStateChange state)
{
if (state == UnityEditor.PlayModeStateChange.ExitingPlayMode)
{
skip = true;
}
}
private void Changed(PlayModeStateChange state)
{
if (state == PlayModeStateChange.ExitingPlayMode) skip = true;
}
#endif
protected virtual void Update()
{
if (cachedPool == null)
{
Debug.LogWarning("The pool this prefab was spawned using has been destroyed.\n" + name, this);
enabled = false;
}
else if (Exists() == false)
{
Debug.LogWarning("This clone was despawned using LeanPool.Despawn, but it's still active?!\n" + name, this);
enabled = false;
}
}
protected virtual void OnApplicationQuit()
{
skip = true;
}
protected virtual void OnDestroy()
{
if (skip == true)
{
return;
}
if (Exists() == true)
{
Debug.LogWarning("This clone has been destroyed, and it was NOT despawned using LeanPool.Despawn?!\n" + name, this);
}
}
private bool Exists()
{
if (LeanPool.Links.TryGetValue(gameObject, out cachedPool) == true)
{
return true;
}
if (LeanGameObjectPool.TryFindPoolByClone(gameObject, ref cachedPool) == true)
{
return true;
}
return false;
}
}
}
}
#if UNITY_EDITOR
namespace Lean.Pool.Examples.Editor
{
using UnityEditor;
using TARGET = LeanPoolDebugger;
using TARGET = LeanPoolDebugger;
[CanEditMultipleObjects]
[CustomEditor(typeof(TARGET), true)]
public class LeanPoolDebugger_Editor : CwEditor
{
protected override void OnInspector()
{
TARGET tgt; TARGET[] tgts; GetTargets(out tgt, out tgts);
[CanEditMultipleObjects]
[CustomEditor(typeof(TARGET), true)]
public class LeanPoolDebugger_Editor : CwEditor
{
protected override void OnInspector()
{
TARGET tgt;
TARGET[] tgts;
GetTargets(out tgt, out tgts);
Info("This component can be added to your prefab GameObject, and it will throw warnings if it is instantiated without the use of <b>LeanPool.Spawn</b>, or despawned without the use of <b>LeanPool.Despawn</b>.");
}
}
Info(
"This component can be added to your prefab GameObject, and it will throw warnings if it is instantiated without the use of <b>LeanPool.Spawn</b>, or despawned without the use of <b>LeanPool.Despawn</b>.");
}
}
}
#endif