diff --git a/Assets/Scripts/Actions/ActionHelper.cs b/Assets/Scripts/Actions/ActionHelper.cs index 813c31c2..aa776072 100644 --- a/Assets/Scripts/Actions/ActionHelper.cs +++ b/Assets/Scripts/Actions/ActionHelper.cs @@ -157,8 +157,8 @@ public class ActionHelper } case "CameraLock": { - var strAction = (XMLTool.StringListAction)act; - return CameraLockAction.Allocate(strAction.args[0], strAction.args[1]); + var strAction = (XMLTool.DictionaryAction)act; + return CameraLockAction.Allocate(strAction.args); } case "Video": { diff --git a/Assets/Scripts/Actions/CameraLockAction.cs b/Assets/Scripts/Actions/CameraLockAction.cs index 5a2d87bc..2dd41eae 100644 --- a/Assets/Scripts/Actions/CameraLockAction.cs +++ b/Assets/Scripts/Actions/CameraLockAction.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using UnityEngine; namespace QFramework @@ -18,14 +19,14 @@ namespace QFramework new SimpleObjectPool(() => new CameraLockAction(), null, 10); string isMove; string isRotate; - public static CameraLockAction Allocate(string isMove, string isRotate, System.Action OnFinished = null) + public static CameraLockAction Allocate(Dictionary datas, System.Action OnFinished = null) { var retNode = mPool.Allocate(); retNode.ActionID = ActionKit.ID_GENERATOR++; retNode.Deinited = false; retNode.Reset(); - retNode.isMove = isMove; - retNode.isRotate = isRotate; + retNode.isMove = datas.ContainsKey("isMove") ? datas["isMove"] : "true"; + retNode.isRotate = datas.ContainsKey("isRotate") ? datas["isRotate"] : "true"; retNode.OnFinished = OnFinished; return retNode; } diff --git a/Assets/Scripts/Actions/CameraSwitchAction.cs b/Assets/Scripts/Actions/CameraSwitchAction.cs index a4993937..48f0e77d 100644 --- a/Assets/Scripts/Actions/CameraSwitchAction.cs +++ b/Assets/Scripts/Actions/CameraSwitchAction.cs @@ -63,7 +63,10 @@ namespace QFramework data.normalPos = Utility.GetVector3FromStrArray(datas["normalPos"]); data.normalRot = Utility.GetVector3FromStrArray(datas["normalRot"]); } - + if (datas.ContainsKey("isOn")) + { + data.isOn = datas["isOn"]; + } float.TryParse(datas["nearTime"], out data.nearTime); float.TryParse(datas["normalTime"], out data.normalTime); diff --git a/Assets/Scripts/Item/DeviceItem.cs b/Assets/Scripts/Item/DeviceItem.cs index 03612200..51687e3e 100644 --- a/Assets/Scripts/Item/DeviceItem.cs +++ b/Assets/Scripts/Item/DeviceItem.cs @@ -46,7 +46,10 @@ public class DeviceItem : MonoBehaviour { bool isActive = true; bool.TryParse(obj[0], out isActive); - gameObject.GetComponent().enabled = isActive; + if (obj.Length == 1 || (obj.Length > 1 && obj[1] == device.Name)) + { + gameObject.GetComponent().enabled = isActive; + } } } diff --git a/Assets/Scripts/UI/UIBtns.cs b/Assets/Scripts/UI/UIBtns.cs index 4b9414ca..61c0e263 100644 --- a/Assets/Scripts/UI/UIBtns.cs +++ b/Assets/Scripts/UI/UIBtns.cs @@ -18,7 +18,6 @@ namespace QFramework.Example { mData = uiData as UIBtnsData ?? new UIBtnsData(); // please add init code here - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -29,6 +28,7 @@ namespace QFramework.Example protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); mData = uiData as UIBtnsData ?? new UIBtnsData(); BtnContent.RemoveAllChildren(); foreach (var item in mData.btns) diff --git a/Assets/Scripts/UI/UICameraSwitch.cs b/Assets/Scripts/UI/UICameraSwitch.cs index 4020e826..839b2ac1 100644 --- a/Assets/Scripts/UI/UICameraSwitch.cs +++ b/Assets/Scripts/UI/UICameraSwitch.cs @@ -16,6 +16,7 @@ namespace QFramework.Example public Vector3 normalRot; public float nearTime; public float normalTime; + public string isOn; } public partial class UICameraSwitch : UIPanel @@ -58,14 +59,28 @@ namespace QFramework.Example protected override void OnOpen(IUIData uiData = null) { mData = uiData as UICameraSwitchData ?? new UICameraSwitchData(); - - if (Near.isOn) + if (string.IsNullOrEmpty(mData.isOn)) { - SetNear(); + if (Near.isOn) + { + SetNear(); + } + if (Far.isOn) + { + SetNormal(); + } } - if (Far.isOn) + else { - SetNormal(); + switch (mData.isOn) + { + case "near": + SetNear(); + break; + case "normal": + SetNormal(); + break; + } } } diff --git a/Assets/Scripts/UI/UIHint.cs b/Assets/Scripts/UI/UIHint.cs index 6a30db99..a504b769 100644 --- a/Assets/Scripts/UI/UIHint.cs +++ b/Assets/Scripts/UI/UIHint.cs @@ -22,7 +22,6 @@ namespace QFramework.Example { mData = uiData as UIHintData ?? new UIHintData(); SetItem(0); - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -32,6 +31,7 @@ namespace QFramework.Example } protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); mData = uiData as UIHintData ?? new UIHintData(); if (curAction != null) { diff --git a/Assets/Scripts/UI/UIOperationList.cs b/Assets/Scripts/UI/UIOperationList.cs index 12ab9209..82693fb9 100644 --- a/Assets/Scripts/UI/UIOperationList.cs +++ b/Assets/Scripts/UI/UIOperationList.cs @@ -142,7 +142,6 @@ namespace QFramework.Example } protected override void OnClose() { - TypeEventSystem.Global.UnRegister(OnStepChanged); } } } diff --git a/Assets/Scripts/UI/UIPointQuestion.cs b/Assets/Scripts/UI/UIPointQuestion.cs index 8f60f828..6f078693 100644 --- a/Assets/Scripts/UI/UIPointQuestion.cs +++ b/Assets/Scripts/UI/UIPointQuestion.cs @@ -17,7 +17,6 @@ namespace QFramework.Example { mData = uiData as UIPointQuestionData ?? new UIPointQuestionData(); // please add init code here - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -28,6 +27,7 @@ namespace QFramework.Example protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); mData = uiData as UIPointQuestionData ?? new UIPointQuestionData(); Content.RemoveAllChildren(); diff --git a/Assets/Scripts/UI/UIResultTip.cs b/Assets/Scripts/UI/UIResultTip.cs index 288574e1..5d685ef9 100644 --- a/Assets/Scripts/UI/UIResultTip.cs +++ b/Assets/Scripts/UI/UIResultTip.cs @@ -20,7 +20,6 @@ namespace QFramework.Example mData = uiData as UIResultTipData ?? new UIResultTipData(); Right.gameObject.SetActive(false); Wrong.gameObject.SetActive(false); - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -30,6 +29,7 @@ namespace QFramework.Example } protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); Right.gameObject.SetActive(false); Wrong.gameObject.SetActive(false); mData = uiData as UIResultTipData ?? new UIResultTipData(); diff --git a/Assets/Scripts/UI/UITextQuestion.cs b/Assets/Scripts/UI/UITextQuestion.cs index 3069230a..ea98985e 100644 --- a/Assets/Scripts/UI/UITextQuestion.cs +++ b/Assets/Scripts/UI/UITextQuestion.cs @@ -34,7 +34,6 @@ namespace QFramework.Example { mData = uiData as UITextQuestionData ?? new UITextQuestionData(); // please add init code here - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -44,6 +43,7 @@ namespace QFramework.Example } protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); mData = uiData as UITextQuestionData ?? new UITextQuestionData(); Title.text = mData.title; OptionContent.transform.RemoveAllChildren(); diff --git a/Assets/Scripts/UI/UITextTip.cs b/Assets/Scripts/UI/UITextTip.cs index 154c5dec..6b66d0cc 100644 --- a/Assets/Scripts/UI/UITextTip.cs +++ b/Assets/Scripts/UI/UITextTip.cs @@ -22,8 +22,6 @@ namespace QFramework.Example { mData = uiData as UITextTipData ?? new UITextTipData(); - TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenGameObjectDestroyed(this); - TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -34,6 +32,7 @@ namespace QFramework.Example protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); mData = uiData as UITextTipData ?? new UITextTipData(); Des.text = Regex.Replace(mData.text, @"\\n", "\n"); BtnContent.RemoveAllChildren(); diff --git a/Assets/Scripts/UI/UITipWindow.cs b/Assets/Scripts/UI/UITipWindow.cs index 0ed8613c..bebe56dc 100644 --- a/Assets/Scripts/UI/UITipWindow.cs +++ b/Assets/Scripts/UI/UITipWindow.cs @@ -27,7 +27,6 @@ namespace QFramework.Example mData = uiData as UITipWindowData ?? new UITipWindowData(); // please add init code here - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -39,6 +38,7 @@ namespace QFramework.Example protected override void OnOpen(IUIData uiData = null) { mData = uiData as UITipWindowData ?? new UITipWindowData(); + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); Label.text = mData.txt; BtnContent.RemoveAllChildren(); if (mData != null) diff --git a/Assets/Scripts/UI/UITools.cs b/Assets/Scripts/UI/UITools.cs index 49bc1571..368bf262 100644 --- a/Assets/Scripts/UI/UITools.cs +++ b/Assets/Scripts/UI/UITools.cs @@ -30,7 +30,6 @@ namespace QFramework.Example { mData = uiData as UIToolsData ?? new UIToolsData(); // please add init code here - TypeEventSystem.Global.Register(OnStepChanged); TypeEventSystem.Global.Register(OnModuleQuit).UnRegisterWhenGameObjectDestroyed(gameObject); } @@ -41,6 +40,7 @@ namespace QFramework.Example protected override void OnOpen(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnStepChanged).UnRegisterWhenDisabled(gameObject); mResLoader = ResLoader.Allocate(); mData = uiData as UIToolsData ?? new UIToolsData(); if (string.IsNullOrEmpty(mData.answer) == false) diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index b894aabf..970508a6 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -666,29 +666,26 @@ namespace XMLTool { act.args.Add("normalTime", "0"); } + XAttribute isOn = action.Attribute("isOn"); + if (isOn != null) + { + act.args.Add("isOn", isOn.Value); + } newAction = act; } break; case "CameraLock": { - var act = new StringListAction(); + var act = new DictionaryAction(); XAttribute isMove = action.Attribute("isMove"); if (isMove != null) { - act.args.Add(isMove.Value); - } - else - { - act.args.Add("true"); + act.args.Add("isMove", isMove.Value); } XAttribute isRotate = action.Attribute("isRotate"); if (isRotate != null) { - act.args.Add(isRotate.Value); - } - else - { - act.args.Add("true"); + act.args.Add("isRotate", isRotate.Value); } newAction = act; } diff --git a/Doc/Xml配置文档.xml b/Doc/Xml配置文档.xml index c8c19d72..35b20095 100644 --- a/Doc/Xml配置文档.xml +++ b/Doc/Xml配置文档.xml @@ -51,8 +51,9 @@ - + @@ -128,7 +129,7 @@