diff --git a/Assets/Scripts/Item/Show3DCamera.cs b/Assets/Scripts/Item/Show3DCamera.cs index c5dcb910..648e2ac0 100644 --- a/Assets/Scripts/Item/Show3DCamera.cs +++ b/Assets/Scripts/Item/Show3DCamera.cs @@ -73,6 +73,33 @@ public class Show3DCamera : MonoBehaviour + public void ResetCamera(Transform target, RectTransform inputRect = null, bool isRenderTexture = true) + { + if (target == null) + { + Debug.LogError("Target is not assigned!"); + return; + } + + yaw = 0; + pitch = 0; + // 初始化相机位置 + this.inputRect = inputRect; + this.targetPos = target.transform.position; + // 初始化相机位置 + offset = new Vector3(0, 0, -distance); + + if (isRenderTexture) + { + self.targetTexture = texture; + } + else + { + self.targetTexture = null; + } + UpdateCameraPosition(-1); + } + void Update() { if (targetPos != null && lockMove == false && EventSystem.current.IsPointerOverGameObject() == false) diff --git a/Assets/Scripts/UI/UIBody3D.cs b/Assets/Scripts/UI/UIBody3D.cs index 186e7fd4..b83de90e 100644 --- a/Assets/Scripts/UI/UIBody3D.cs +++ b/Assets/Scripts/UI/UIBody3D.cs @@ -57,6 +57,7 @@ namespace QFramework.Example Dictionary bodyListIndex = new Dictionary(); protected override void OnInit(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnModuleQuithandler).UnRegisterWhenGameObjectDestroyed(this); DragBtn.onValueChanged.AddListener(isOn => { DragBtn.transform.Find("SubBtns").gameObject.SetActive(isOn); @@ -149,6 +150,10 @@ namespace QFramework.Example } + private void OnModuleQuithandler(OnModuleQuit quit) + { + Hide(); + } private void OnUIDrawClose() { @@ -244,7 +249,7 @@ namespace QFramework.Example public void ResetCamera(float moveTime) { - Show3DCamera.instance.Set(root.transform, distance: 5, isRenderTexture: false, moveTime: moveTime, pitchMin: -80); + Show3DCamera.instance.ResetCamera(root.transform); } protected override void OnShow() diff --git a/Assets/Scripts/UI/UIBody3DInfo.cs b/Assets/Scripts/UI/UIBody3DInfo.cs index 14892a76..1d40613f 100644 --- a/Assets/Scripts/UI/UIBody3DInfo.cs +++ b/Assets/Scripts/UI/UIBody3DInfo.cs @@ -18,6 +18,7 @@ namespace QFramework.Example float bgH; protected override void OnInit(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnModuleQuithandler).UnRegisterWhenGameObjectDestroyed(this); bgH = Content.sizeDelta.y; Group.onValueChanged.AddListener(isOn => { @@ -122,6 +123,11 @@ namespace QFramework.Example } + private void OnModuleQuithandler(OnModuleQuit quit) + { + Hide(); + } + public void RefreshTipPath() { ListContent.RemoveAllChildren(); diff --git a/Assets/Scripts/UI/UIBody3DMenuTree.cs b/Assets/Scripts/UI/UIBody3DMenuTree.cs index 97a5cb4e..211ef38f 100644 --- a/Assets/Scripts/UI/UIBody3DMenuTree.cs +++ b/Assets/Scripts/UI/UIBody3DMenuTree.cs @@ -4,6 +4,7 @@ using XMLTool; using System.Collections.Generic; using TMPro; using DG.Tweening; +using System; namespace QFramework.Example { @@ -204,6 +205,7 @@ namespace QFramework.Example DOTweenAnimation contentAnim; protected override void OnInit(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnModuleQuithandler).UnRegisterWhenGameObjectDestroyed(this); contentAnim = RootContent.GetComponent(); // please add init code here Close.onClick.AddListener(() => @@ -233,7 +235,10 @@ namespace QFramework.Example }); } - + private void OnModuleQuithandler(OnModuleQuit quit) + { + Hide(); + } protected override void OnOpen(IUIData uiData = null) { diff --git a/Assets/Scripts/UI/UIBody3DMouse.cs b/Assets/Scripts/UI/UIBody3DMouse.cs index 05095ca5..0929d1ab 100644 --- a/Assets/Scripts/UI/UIBody3DMouse.cs +++ b/Assets/Scripts/UI/UIBody3DMouse.cs @@ -15,6 +15,7 @@ namespace QFramework.Example private bool isObjectHit; // 标记是否有物体被击中 protected override void OnInit(IUIData uiData = null) { + TypeEventSystem.Global.Register(OnModuleQuithandler).UnRegisterWhenGameObjectDestroyed(this); mData = uiData as UIBody3DMouseData ?? new UIBody3DMouseData(); dragItem = Content.GetComponent(); @@ -31,6 +32,11 @@ namespace QFramework.Example }); } + private void OnModuleQuithandler(OnModuleQuit quit) + { + Hide(); + } + private void OnEndDrag() { Show3DCamera.instance.lockMove = false; diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 585ab642..1d795f54 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -405,9 +405,10 @@ namespace XMLTool Name = bodyElement.Attribute("name")?.Value, Path = bodyElement.Attribute("path")?.Value, Tip = bodyElement.Attribute("tip")?.Value, - Audio = bodyElement.Attribute("audio")?.Value + Audio = bodyElement.Attribute("audio")?.Value, + FocusDistance = bodyElement.Attribute("FocusDistance")?.Value }; - + var isShow = bodyElement.Attribute("isShow"); if (isShow != null) { diff --git a/Doc/Xml閰嶇疆鏂囨。.xml b/Doc/Xml閰嶇疆鏂囨。.xml index adae8340..b8f57467 100644 --- a/Doc/Xml閰嶇疆鏂囨。.xml +++ b/Doc/Xml閰嶇疆鏂囨。.xml @@ -380,4 +380,96 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +