using UnityEngine; using UnityEngine.UI; using XMLTool; using TMPro; namespace QFramework.Example { public class UIBody3DData : UIPanelData { public Body3D.Body body = new Body3D.Body(); } public partial class UIBody3D : UIPanel { GameObject root; protected override void OnInit(IUIData uiData = null) { DragBtn.onValueChanged.AddListener(isOn => { DragBtn.transform.Find("SubBtns").gameObject.SetActive(isOn); Body3DController.Instance.allowDrag = isOn; Body3DController.Instance.SetStatus(Body3DController.Status.Drag, isOn); TypeEventSystem.Global.Send(); }); DragBack.onClick.AddListener(() => { GameObject obj = Body3DController.Instance.PopMoveObj(); if (obj != null) { obj.GetComponent().OnDoubleClick(); } }); ActiveBtn.onValueChanged.AddListener(isOn => { ActiveBtn.transform.Find("SubBtns").gameObject.SetActive(isOn); Body3DController.Instance.SetStatus(Body3DController.Status.Active, isOn); }); ActiveBack.onClick.AddListener(() => { Body3DController.Instance.PopActiveObj()?.gameObject.SetActive(true); }); ResetBtn.onClick.AddListener(() => { ResetCamera(0.5f); }); } protected override void OnOpen(IUIData uiData = null) { mData = uiData as UIBody3DData ?? new UIBody3DData(); BodyContent.RemoveAllChildren(); root = Utility.FindObj(mData.body.Path); root.SetActive(true); foreach (var bodyData in mData.body.subBody) { var body = bodyData.Value; var bodyItem = GameObject.Instantiate(BodyItem.gameObject, BodyContent); bodyItem.transform.Find("Label").GetComponent().text = body.Name; var bodyToggle = bodyItem.GetComponent(); bodyToggle.isOn = body.isShow; GameObject obj = Utility.FindObj(body.Path); obj.SetActive(body.isShow); bodyToggle.onValueChanged.AddListener(isOn => { obj.SetActive(isOn); }); } FreeCameraController.instance.gameObject.SetActive(false); Show3DCamera.instance.gameObject.SetActive(true); ResetCamera(-1); } public void ResetCamera(float moveTime) { Show3DCamera.instance.Set(root.transform, distance: 5, isRenderTexture: false, moveTime: moveTime); } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { } } }