private static void ParseDataToContainer(AutoActionContainer container, JsonData content) { for (int i = 0; i < content.Count; i++) { string key = content[i].TryGetString("name"); JsonData data = content[i]["data"]; AutoAction action = null; switch (key) { case "Container": action = Parse(data); break; case "WaitScene": string waitSceneName = data.TryGetString("scene_name"); action = new AutoWaitScene(waitSceneName); break; case "WaitObjectAppear": string objectAppear = data.TryGetString("object_name"); action = new AutoWaitObjectAppear(objectAppear); break; case "WaitObjectDisappear": string objectDisappear = data.TryGetString("object_name"); action = new AutoWaitObjectAppear(objectDisappear); break; case "WaitComponentAppear": string componentAppear = data.TryGetString("component_name"); action = new AutoWaitComponentAppear(Type.GetType(componentAppear)); break; case "WaitComponentDisappear": string componentDisappear = data.TryGetString("component_name"); action = new AutoWaitComponentDisappear(Type.GetType(componentDisappear)); break; case "LabelTextAppear": string labelObjectName = data.TryGetString("object_name"); string textContent = data.TryGetString("content"); action = new AutoLabelTextAppear(labelObjectName, textContent); break; case "Timer": string time = data.TryGetString("time_length"); action = new AutoTimer(float.Parse(time)); break; case "WaitButtonAccessible": string buttonName = data.TryGetString("button_name"); action = new AutoWaitButtonAccessiable(buttonName); break; case "Click": float x = float.Parse(data.TryGetString("pos_x")); float y = float.Parse(data.TryGetString("pos_y")); float z = float.Parse(data.TryGetString("pos_z")); action = new AutoClick(new UnityEngine.Vector3(x, y, z)); break; case "PressUI": string uiName = data.TryGetString("ui_name"); action = new AutoPressUI(uiName); break; case "LoadScene": string loadSceneName = data.TryGetString("scene_name"); action = new AutoLoadScene(loadSceneName); break; } if (action != null) { container.AddAction(action); } } }
private void OnGUI() { if (GUI.Button(new Rect(50, 50, 50, 50), "test")) { AutoActionContainer container = new AutoActionContainer(); AutoLoadScene loadScene = new AutoLoadScene("test"); AutoClick click = new AutoClick(new Vector3(10, 20, 30)); AutoTimer timer = new AutoTimer(5); AutoPressUI pressUI = new AutoPressUI("bg"); container.AddAction(loadScene); container.AddAction(click); container.AddAction(timer); container.AddAction(pressUI); AutoActionContainer container2 = new AutoActionContainer(); AutoWaitObjectAppear objectAppear = new AutoWaitObjectAppear("page"); AutoWaitObjectAppear objectDisappear = new AutoWaitObjectAppear("pageDis"); AutoWaitComponentAppear componentAppear = new AutoWaitComponentAppear(typeof(Image)); AutoWaitComponentDisappear componentDisappear = new AutoWaitComponentDisappear(typeof(Button)); AutoLabelTextAppear labelText = new AutoLabelTextAppear("label", "hello world"); container2.AddAction(container); container2.AddAction(objectAppear); container2.AddAction(labelText); container2.AddAction(objectDisappear); container2.AddAction(componentAppear); container2.AddAction(componentDisappear); string json = AutoActionJsonWriter.Write(container2); Debug.Log("json is:" + json); JsonData data = JsonMapper.ToObject(json); AutoActionContainer newContainer = AutoActionJsonParser.Parse(data) as AutoActionContainer; foreach (AutoAction action in newContainer.ActionList) { Debug.Log(action.GetType().Name); if (action.GetType().Name == "AutoActionContainer") { foreach (AutoAction childAction in (action as AutoActionContainer).ActionList) { Debug.Log(childAction.GetType().Name); } } } } }