using System; using System.Collections.Generic; using UnityEngine; using Yarn.Unity; namespace AibisDream { [Serializable] public class SceneExit { [Tooltip("出口名称,用于Yarn命令指定跳转目标,如 good_end / bad_end / default")] public string exitName; public TalkSceneSO targetScene; } /// /// 章节类型数据 /// [CreateAssetMenu(menuName = AibisAssetMenus.NarrativeTalkScene)] public class TalkSceneSO : ScriptableObject { private const string DEFAULT_EXIT_NAME = "default"; public List exits = new(); public YarnProject yarnProject; public string firstSceneName; #region 用于显示的字段 public string title; [Tooltip("章节面板显示用本地化 Key,对应 ChapterInfo 表条目;为空则回退 title")] public string titleKey; public string description; public Sprite coverPic; public string chapter; #endregion #region 仅编辑器使用 [HideInInspector] public Vector2 graphPosition; public Color nodeColor = new(0.85f, 0.45f, 0.45f); #endregion public TalkSceneSO GetNextScene(string exitName = null) { if (exits == null || exits.Count == 0) return null; if (string.IsNullOrEmpty(exitName)) exitName = DEFAULT_EXIT_NAME; foreach (var exit in exits) { if (exit.exitName == exitName) return exit.targetScene; } return null; } } }