using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using DefaultNamespace; using DefaultNamespace.Dto; using DefaultNamespace.ProcessMode; using MotionFramework; using Newtonsoft.Json; using UnityEngine; namespace ToolsPack { [ScriptDescription("工具间场景的流程启动器")] public class ToolsSceneProcessLauncher : MonoBehaviour { private AnimationProcessManager processManager; private async void Start() { await Task.Delay(TimeSpan.FromSeconds(1)); processManager = MotionEngine.GetModule(); processManager.ClearProcess(); processManager.AddProcess( MotionEngine.GetModule().GetProcessMode().ToString()); string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/ToolsSceneStepData.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,stepData.StepDescription)); } AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions); processManager.AddStepToProcess(MotionEngine.GetModule().GetProcessMode().ToString(), step); } InitializeFirstStep(); } private void InitializeFirstStep() { MotionEngine.GetModule().SetCurrentMode(MotionEngine.GetModule().GetProcessMode()); if (MotionEngine.GetModule().CurrentProcess.Steps.Count > 0) { AnimationStep firstStep = MotionEngine.GetModule().CurrentProcess.Steps[0]; if (firstStep.Actions.Count > 0) { MotionEngine.GetModule().PrepareNextStep(MotionEngine.GetModule().GetProcessMode(), firstStep.Actions[0]); } } } } }