using System; using System.Collections; using System.Collections.Generic; using DefaultNamespace.Dto; using DG.Tweening; using MotionFramework; using Newtonsoft.Json; using UnityEngine; namespace DefaultNamespace.ProcessMode { [ScriptDescription("现场场景的流程启动器")] public class SceneProcessLauncher : MonoBehaviour { private AnimationProcessManager processManager; private IEnumerator Start() { yield return new WaitForSeconds(1); processManager = MotionEngine.GetModule(); processManager.AddProcess("Training"); string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/SceneStepData.json"); StepsContainer stepsContainer = JsonConvert.DeserializeObject(json); foreach (var stepData in stepsContainer.Steps) { List actions = new List(); foreach (var actionData in stepData.Actions) { List targetObjects = new List(); foreach (var objectName in actionData.TargetObjects) { GameObject obj = GameObject.Find(objectName); if (obj != null) { targetObjects.Add(obj); } else { Debug.LogError($"Object not found: {objectName}"); } } Action action = () => { }; actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential)); } AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions); processManager.AddStepToProcess("Training", step); } InitializeFirstStep(); } private void InitializeFirstStep() { ProcessMode initialMode = ProcessMode.Training; // 假设初始模式是教学模式 MotionEngine.GetModule().SetCurrentMode(initialMode); if (MotionEngine.GetModule().CurrentProcess.Steps.Count > 0) { AnimationStep firstStep = MotionEngine.GetModule().CurrentProcess.Steps[0]; if (firstStep.Actions.Count > 0) { MotionEngine.GetModule().PrepareNextStep(initialMode, firstStep.Actions[0]); } } } } }