Passion & UI

This commit is contained in:
SoulliesOfficial
2026-06-12 17:11:39 -04:00
parent 7bc1e1722c
commit 6d7ebc5825
3444 changed files with 865284 additions and 463132 deletions

View File

@@ -0,0 +1,33 @@
using SLSUtilities.Narrative;
using UnityEngine;
namespace Cielonos.MainGame.Narrative
{
/// <summary>
/// 区域剧情触发器。
/// 挂载在具有 Trigger 碰撞体 (Collider) 的 GameObject 上,当玩家角色进入该触发区域时激活剧情。
/// </summary>
public class AreaNarrativeTrigger : NarrativeTrigger
{
[Header("Area Trigger Settings")]
[SerializeField]
[Tooltip("触发所对应的玩家 GameObject 标签 (Tag) 标识,默认为 'Player'")]
private string playerTag = "Player";
private void OnTriggerEnter(Collider other)
{
// 如果是一次性触发器且已经激活过,直接忽略
if (once && hasTriggered)
{
return;
}
// 校验进入触发器的对象是否为玩家
if (other.CompareTag(playerTag))
{
Debug.Log($"[AreaNarrativeTrigger] 玩家进入区域 '{gameObject.name}',激活剧情故事 ID: '{storyId}'");
Trigger();
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3a08b8fe643b308499ea9a7ead5ac007

View File

@@ -0,0 +1,41 @@
using SLSUtilities.Narrative;
using UnityEngine;
namespace Cielonos.MainGame.Narrative
{
/// <summary>
/// 自动计时器剧情触发器。
/// 当场景加载完成并且该脚本执行 Start 生命周期时,自动启动指定剧情(常用于关卡旁白、开场白或开局引导)。
/// </summary>
public class TimerNarrativeTrigger : NarrativeTrigger
{
[Header("Start Trigger Settings")]
[SerializeField]
[Tooltip("延迟触发时间。0 表示立即触发。")]
private float delaySeconds = 0f;
private void Start()
{
if (delaySeconds > 0f)
{
Invoke(nameof(ExecuteStartTrigger), delaySeconds);
}
else
{
ExecuteStartTrigger();
}
}
private void ExecuteStartTrigger()
{
// 一次性触发器安全保护
if (once && hasTriggered)
{
return;
}
Debug.Log($"[StartNarrativeTrigger] 场景启动自动触发剧情故事 ID: '{storyId}',延迟: {delaySeconds} 秒");
Trigger();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1bfd027ade5bcbe458cdae47837fa986