摄像机区域的架构改动

This commit is contained in:
2026-05-15 14:47:24 +08:00
parent 1b37297585
commit f264329751
3591 changed files with 1687228 additions and 446503 deletions

View File

@@ -0,0 +1,50 @@
using UnityEngine;
using BaseGames.Core.Events;
namespace BaseGames.World
{
/// <summary>
/// 死亡遗骸Death Shade。玩家死亡时在死亡地点留下遗骸
/// 再次到达并交互后回收存储的 LingZhu。
/// 实现 <see cref="IInteractable"/> 接口以接入通用交互系统。
/// </summary>
public class DeathShade : MonoBehaviour, IInteractable
{
[SerializeField] private IntEventChannelSO _onLingZhuRecovered;
[SerializeField] private StringEventChannelSO _onShadeCollected;
private int _storedLingZhu;
private string _sceneId;
// ── IInteractable ────────────────────────────────────────────────
public bool CanInteract => true;
public string InteractPrompt => "回收遗骸";
/// <summary>
/// 由死亡系统调用:设定存储 LingZhu 数量、所在场景 ID并移动到死亡坐标。
/// </summary>
public void Initialize(int lingZhu, string sceneId, Vector2 position)
{
_storedLingZhu = lingZhu;
_sceneId = sceneId;
transform.position = position;
}
public void OnPlayerEnterRange(Transform player) { }
public void OnPlayerExitRange() { }
/// <summary>
/// 玩家交互:广播 LingZhu 回收事件和场景标记,然后销毁自身。
/// PlayerStats 订阅 _onLingZhuRecovered 事件并自行添加 LingZhu保持零耦合。
/// </summary>
public void Interact(Transform player)
{
if (_storedLingZhu > 0)
_onLingZhuRecovered?.Raise(_storedLingZhu);
_onShadeCollected?.Raise(_sceneId);
Destroy(gameObject);
}
}
}