feat: 添加场景过渡类型支持,优化场景加载逻辑

This commit is contained in:
2026-05-19 15:18:13 +08:00
parent be96b326de
commit ee0f659c97
12 changed files with 259 additions and 20 deletions

View File

@@ -12,16 +12,36 @@ namespace BaseGames.World
[Tooltip("+1 = 朝右出生,-1 = 朝左出生")]
[SerializeField] private int _facingDirection = 1;
public string TransitionId => _transitionId;
public Vector2 SpawnPosition => transform.position;
[Tooltip("(可选)此出生点对应的出口门。\n" +
"玩家在此出生后,调用 TriggerExitDoor() 播放门的进入动画(玩家从门里走出)。\n" +
"仅在使用 DoorTransition 的场景中需要配置。")]
[SerializeField] private DoorTransition _exitDoor;
public string TransitionId => _transitionId;
public Vector2 SpawnPosition => transform.position;
/// <summary>玩家出生时的朝向(+1 右,-1 左)。</summary>
public int FacingDirection => _facingDirection;
public int FacingDirection => _facingDirection;
/// <summary>此出生点关联的出口门(可为 null。</summary>
public DoorTransition ExitDoor => _exitDoor;
/// <summary>
/// 触发出口门的进入动画(玩家从门内侧走出)。
/// 无关联门时静默跳过。由负责放置玩家的系统在玩家落点后调用。
/// </summary>
public void TriggerExitDoor() => _exitDoor?.PlayEnterAnimation();
private void OnDrawGizmos()
{
Gizmos.color = Color.green;
Gizmos.DrawWireSphere(transform.position, 0.3f);
Gizmos.DrawLine(transform.position, transform.position + Vector3.up * 0.5f);
// 门关联指示线
if (_exitDoor != null)
{
Gizmos.color = new Color(0.7f, 0.3f, 1f, 0.6f);
Gizmos.DrawLine(transform.position, _exitDoor.transform.position);
}
}
}
}