using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UIEditorPanel : MonoBehaviour, EventObserver { public event Action OnClickRemoveBtn; [SerializeField] private Button UCBtn; [SerializeField] private Button TicBtn; [SerializeField] private Button RemoveBtn; [SerializeField] private Image UCElenemt; [SerializeField] private Button AddSize; [SerializeField] private Button SubSize; [SerializeField] private Button SubY; [SerializeField] private Button AddY; [SerializeField] private Button SubX; [SerializeField] private Button AddX; [SerializeField] private SCButton SubRot; [SerializeField] private SCButton AddRot; [SerializeField] private Image TicElenemt; [SerializeField] private Button ADDXBtn; [SerializeField] private Button SubXBtn; [SerializeField] private Button ADDYBtn; [SerializeField] private Button SubYBtn; [SerializeField] private Button AddZBtn; [SerializeField] private Button SubZBtn; [SerializeField] private Button InitiativeBtn; [SerializeField] private Button RevocationBtn; [SerializeField] private Button SaveBtn; private Transform MaterialObj; /// /// 当前物体移动旋转缩放的操作步骤 /// private List listAlter; /// /// 当前景点信息 /// private SpoitValue listSpoits; private void Awake() { InitEvent(); MaterialObj = null; listAlter = new List(); listSpoits = new SpoitValue(); EventManager.Instance.Register(this, EventID.EVENT_1); } public void Init() { } private void InitEvent() { UCBtn.onClick.AddListener(() => { if (UCElenemt.gameObject.activeSelf) return; UCElenemt.gameObject.SetActive(true); TicElenemt.gameObject.SetActive(false); }); TicBtn.onClick.AddListener(() => { if (TicElenemt.gameObject.activeSelf) return; UCElenemt.gameObject.SetActive(false); TicElenemt.gameObject.SetActive(true); }); RemoveBtn.onClick.AddListener(() => { if (MaterialObj == null) return; if (MaterialObj.tag == "TriggerBox") return; if (OnClickRemoveBtn != null) { OnClickRemoveBtn(MaterialObj.gameObject); } }); //RemoveBtn.gameObject.SetActive(false); AddSize.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localScale += new Vector3(MaterialObj.localScale.x / 10.0f, MaterialObj.localScale.y / 10.0f, MaterialObj.localScale.z / 10.0f); }); SubSize.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localScale -= new Vector3(MaterialObj.localScale.x / 10.0f, MaterialObj.localScale.y / 10.0f, MaterialObj.localScale.z / 10.0f); }); AddRot.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localEulerAngles += new Vector3(0, 10, 0); }); SubRot.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localEulerAngles -= new Vector3(0, 10, 0); }); AddX.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition -= new Vector3(0.1f, 0, 0); }); SubX.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition += new Vector3(0.1f, 0, 0); }); AddY.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition += new Vector3(0, 0.1f, 0); }); SubY.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition -= new Vector3(0, 0.1f, 0); }); ADDXBtn.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition -= new Vector3(0.1f, 0, 0); }); SubXBtn.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition += new Vector3(0.1f, 0, 0); }); ADDYBtn.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition += new Vector3(0, 0.1f, 0); }); SubYBtn.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition -= new Vector3(0, 0.1f, 0); }); AddZBtn.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition += new Vector3(0, 0, 0.1f); }); SubZBtn.onClick.AddListener(() => { if (MaterialObj == null) return; SaveAlter(); MaterialObj.localPosition -= new Vector3(0, 0, 0.1f); }); InitiativeBtn.onClick.AddListener(() => { if (MaterialObj == null) return; InitMaterialObj(); }); RevocationBtn.onClick.AddListener(() => { if (MaterialObj == null) return; if (listAlter.Count >= 1) { MaterialObj.localPosition = listAlter[listAlter.Count - 1].pos; MaterialObj.localEulerAngles = listAlter[listAlter.Count - 1].rot; MaterialObj.localScale = listAlter[listAlter.Count - 1].scale; listAlter.RemoveAt(listAlter.Count - 1); } }); SaveBtn.onClick.AddListener(() => { if (MaterialObj == null) return; GameManager.Instance.SaveSpoitObjs(); }); } /// /// 选择素材 /// /// public void SelectMaterial(Transform MaterialObj) { this.MaterialObj = MaterialObj; listAlter.Clear(); listAlter = new List(); } /// /// 初始化素材 /// 只初始化当前素材 /// private void InitMaterialObj() { if (MaterialObj == null) return; string name = MaterialObj.name; listAlter.Clear(); listAlter = new List(); GameManager.Instance.InitSpoitObjs(); } private void SaveAlter() { objectData data = new objectData(); data.pos = MaterialObj.localPosition; data.rot = MaterialObj.localEulerAngles; data.scale = MaterialObj.localScale; listAlter.Add(data); } public void HandleEvent(EventData data) { switch (data.ID) { case EventID.EVENT_1: EventData1 data1 = (EventData1)data; if (data1.SelectObj != null) { SelectMaterial(data1.SelectObj.transform); } else { MaterialObj = null; listAlter.Clear(); } break; case EventID.EVENT_2: break; default: break; } } private void OnDestroy() { //EventManager.Instance.Remove(this); } }