using UnityEngine; using UnityEngine.UI; using QFramework; using DG.Tweening; namespace QFramework.Example { public class UICameraSwitchData : UIPanelData { public Vector3 nearPos; public Vector3 nearRot; public Vector3 normalPos; public Vector3 normalRot; public bool isNear = false; } public partial class UICameraSwitch : UIPanel { protected override void OnInit(IUIData uiData = null) { mData = uiData as UICameraSwitchData ?? new UICameraSwitchData(); // please add init code here Near.onValueChanged.AddListener(isOn => { if (isOn) { Camera.main.transform.DOMove(mData.nearPos, 0); Camera.main.transform.DORotate(mData.nearRot, 0); } Near.transform.Find("Bg/Line").gameObject.SetActive(isOn); }); Far.onValueChanged.AddListener(isOn => { if (isOn) { Camera.main.transform.DOMove(mData.normalPos, 0); Camera.main.transform.DORotate(mData.normalRot, 0); } Far.transform.Find("Bg/Line").gameObject.SetActive(isOn); }); } protected override void OnOpen(IUIData uiData = null) { mData = uiData as UICameraSwitchData ?? new UICameraSwitchData(); if (mData.isNear) { if (Near.isOn == false) { Near.isOn = true; } else { Camera.main.transform.DOMove(mData.nearPos, 0); Camera.main.transform.DORotate(mData.nearRot, 0); } } else { if (Far.isOn == false) { Far.isOn = true; } else { Camera.main.transform.DOMove(mData.normalPos, 0); Camera.main.transform.DORotate(mData.normalRot, 0); } } } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { } } }