feat: Implement Room Streaming System

- Add RoomStreamingManager to manage room loading and unloading based on player proximity.
- Create StreamingBudgetConfigSO for memory and performance budgeting of the streaming system.
- Introduce TransitionDirector to handle seamless and atmospheric fade transitions between rooms.
- Develop WorldGraph to represent room connectivity and facilitate neighbor queries and distance calculations.
- Implement RoomNode and RoomEdge classes to structure room data and connections.
This commit is contained in:
2026-05-23 19:10:29 +08:00
parent 81c326af53
commit a1b4e629aa
165 changed files with 7904 additions and 313 deletions

View File

@@ -0,0 +1,46 @@
using UnityEngine;
namespace BaseGames.Enemies.Abilities
{
/// <summary>
/// 能力配置包(架构 07_EnemyModule §8.2)。
/// 一个能力 = 一组攻击段 + 公共参数(冷却/预警/中断规则)。
/// 由对应 EnemyAbilityBase 子类组件读取并执行。
/// </summary>
[CreateAssetMenu(menuName = "BaseGames/Enemies/Enemy Ability", fileName = "EAB_")]
public class EnemyAbilitySO : ScriptableObject
{
[Header("标识")]
[Tooltip("BD 任务通过此 Id 调用能力(如 \"melee_combo\" / \"blink_strike\"")]
public string abilityId = "ability_id";
[Header("攻击序列")]
public EnemyAttackSO[] attackSequence;
[Header("冷却(秒,从能力执行结束开始计)")]
[Min(0f)] public float cooldown = 1.5f;
[Header("预警Telegraph")]
[Tooltip("预警 VFX keyIObjectPoolService.Spawn 的池 key为空则跳过")]
public string telegraphVfxKey = "";
[Min(0f)] public float telegraphDuration = 0f;
[Header("中断规则")]
[Tooltip("受击时是否打断能力false=能力具霸体)")]
public bool interruptOnHurt = true;
[Tooltip("Stagger 时是否打断(一般为 true")]
public bool interruptOnStagger = true;
[Header("调度提示(供 AI 选择参考,不强制)")]
[Min(0f)] public float preferredMinRange = 0f;
[Min(0f)] public float preferredMaxRange = 5f;
public bool requiresLineOfSight = true;
public bool requiresGrounded = true;
[Header("互斥组与调度优先级")]
[Tooltip("互斥组名:同组能力只能有一个同时执行,执行时自动中断同组其他能力;为空 = 无互斥")]
public string exclusionGroup = "";
[Tooltip("AI 调度优先级(值越高越优先被选择,冷却就绪时对比)")]
[Min(0)] public int priority = 0;
}
}