using UnityEngine; /// /// 单个实验步骤的数据配置(ScriptableObject)。 /// 在 Unity Editor 中为每个实验创建一份 StepData 列表。 /// [CreateAssetMenu(fileName = "StepData", menuName = "VFS/Step Data")] public class StepData : ScriptableObject { [Header("=== 评分 ===")] [Tooltip("本步骤满分(考核模式下使用,总分 100 分)")] [Range(0f, 100f)] public float ScoreWeight = 10f; [Tooltip("本步骤的子项数量(如伤情检查有 5 个子项,用于 SequenceClick 按比例计分)")] public int SubStepCount = 1; [Header("基础信息")] [Tooltip("步骤序号,从 0 开始")] public int StepIndex; [Tooltip("步骤名称(内部标识)")] public string StepName; [Header("学习模式文案")] [TextArea(2, 4)] public string TipText; // 顶部 Tip 提示框文案 [TextArea(2, 4)] public string DialogueText; // 角色对话气泡文案 [Header("学习模式 - 详细操作说明(甲方补充内容)")] [TextArea(3, 8)] public string DetailedContent; // 伤情检查/夹板固定等详细操作须知 [Header("考核模式文案")] [TextArea(2, 4)] public string ExamQuestionText; // 考核弹窗题目文案 [Header("考核选项")] public string[] ExamOptions; // 选择题选项(如 {"5cm", "10cm", "20cm"}) public int CorrectOptionIndex; // 正确选项的索引(-1 表示非选择题) public string ErrorFeedback; // 答错时的反馈文案 [Header("交互配置")] public StepCompleteType CompleteType = StepCompleteType.ClickObject; [Tooltip("交互目标的 Tag(如 InjuryLeg, Shoe, Bandage)")] public string TargetTag; [Tooltip("考核模式点击顺序(SequenceClick 类型时使用)")] public string[] ClickSequenceTags; [Header("额外配置")] [Tooltip("是否为夹板固定专属步骤")] public bool IsSplintOnly; [Tooltip("是否需要播放画中画视频")] public bool ShowPipVideo; [Tooltip("画中画视频文件名(StreamingAssets 下)")] public string VideoFileName; }