mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 08:37:13 +08:00
(client) feat:支持定义实体的碰撞体大小和偏移;建筑支持定义实体建筑和瓦片建筑,建筑支持指定按钮回调;添加存档管理器;Dev支持设置是否暂停;实体允许定义事件组;添加基地界面 (#57)
Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com> Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/57
This commit is contained in:
@@ -132,12 +132,7 @@ namespace Base
|
||||
{
|
||||
ApplyBufferedChanges();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
// 在对象销毁时,取消订阅场景加载事件,避免潜在的内存泄漏。
|
||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 单例的初始化方法,在Clock实例的生命周期开始时调用(Unity的Awake后)。
|
||||
@@ -145,48 +140,14 @@ namespace Base
|
||||
/// </summary>
|
||||
protected override void OnStart()
|
||||
{
|
||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||
Init(); // 初始化时清空所有列表并重新填充
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 场景加载完成时回调,用于重置所有Tick列表,以适应新场景中的对象。
|
||||
/// </summary>
|
||||
/// <param name="scene">已加载的场景。</param>
|
||||
/// <param name="mode">场景加载模式。</param>
|
||||
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||
{
|
||||
Init(); // 场景加载时重置
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化或重置计时器系统。清空所有注册列表和缓冲列表,并重新扫描场景中的所有MonoBehaviour以注册相应的Tick接口。
|
||||
/// </summary>
|
||||
public void Init()
|
||||
{
|
||||
// 清空所有主列表
|
||||
_ticks.Clear();
|
||||
_tickPhysics.Clear();
|
||||
_tickUIs.Clear();
|
||||
|
||||
|
||||
// 清空所有缓冲区列表
|
||||
_ticksToAdd.Clear();
|
||||
_tickPhysicsToAdd.Clear();
|
||||
_tickUIsToAdd.Clear();
|
||||
|
||||
_ticksToRemove.Clear();
|
||||
_tickPhysicsToRemove.Clear();
|
||||
_tickUIsToRemove.Clear();
|
||||
|
||||
// 扫描场景中所有MonoBehaviour并注册它们实现的Tick接口。
|
||||
// 使用HashSet会自动处理重复添加,确保列表唯一性。
|
||||
foreach (var obj in FindObjectsByType<MonoBehaviour>(FindObjectsSortMode.None))
|
||||
{
|
||||
if (obj is ITick tickObj) _ticks.Add(tickObj);
|
||||
if (obj is ITickPhysics physicsObj) _tickPhysics.Add(physicsObj);
|
||||
if (obj is ITickUI uiObj) _tickUIs.Add(uiObj);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将一个ITick对象添加到待添加缓冲区。它将在下一个LateUpdate中被添加到主Tick列表。
|
||||
|
||||
Reference in New Issue
Block a user