using System; using System.Collections.Generic; using NaughtyAttributes; using UnityEngine; namespace Framework.Manager { /// /// 引导步骤类型枚举 /// public enum GuideStepType { MustClickUI, // 必须点击指定UI才能继续 ClickNextButton, // 点击下一步按钮继续 Click3DObject // 点击3D物体继续 } [Serializable] public class GuideStepConfig { public string stepName; // 步骤名称 public string uiObjectName; // UI对象名称 [ReadOnly] public int order; // 顺序 public bool isOpenUI = false; // [Header("引导类型设置")] // [Tooltip("引导步骤类型,决定用户需要如何操作才能继续")] // public GuideStepType stepType = GuideStepType.MustClickUI; // // [Tooltip("是否严格要求点击正确目标才能继续(false时允许容错)")] // public bool requireExactClick = true; // [TextArea(1, 3)] // public string description; // 步骤描述 } [CreateAssetMenu(fileName = "TutorialGuideConfig", menuName = "Framework/Config/引导配置")] public class TutorialGuideConfig : ScriptableObject { public List guideSteps = new List(); // // 根据步骤名称获取配置 // public GuideStepConfig GetStepByName(string stepName) // { // return guideSteps.Find(step => step.stepName == stepName); // } // 根据UI对象名称获取配置 public GuideStepConfig GetStepByUIName(string uiName) { return guideSteps.Find(step => step.uiObjectName == uiName); } // 获取所有步骤,按顺序排序 public List GetOrderedSteps() { var orderedSteps = new List(guideSteps); orderedSteps.Sort((a, b) => a.order.CompareTo(b.order)); return orderedSteps; } // 在编辑器中自动更新order值 private void OnValidate() { UpdateOrderValues(); } // 根据列表位置更新order值 private void UpdateOrderValues() { for (int i = 0; i < guideSteps.Count; i++) { guideSteps[i].order = i + 1; } } } }