UIEditorPanel.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class UIEditorPanel : MonoBehaviour, EventObserver
  7. {
  8. public event Action<GameObject> OnClickRemoveBtn;
  9. [SerializeField] private Button UCBtn;
  10. [SerializeField] private Button TicBtn;
  11. [SerializeField] private Button RemoveBtn;
  12. [SerializeField] private Image UCElenemt;
  13. [SerializeField] private Button AddSize;
  14. [SerializeField] private Button SubSize;
  15. [SerializeField] private Button SubY;
  16. [SerializeField] private Button AddY;
  17. [SerializeField] private Button SubX;
  18. [SerializeField] private Button AddX;
  19. [SerializeField] private SCButton SubRot;
  20. [SerializeField] private SCButton AddRot;
  21. [SerializeField] private Image TicElenemt;
  22. [SerializeField] private Button ADDXBtn;
  23. [SerializeField] private Button SubXBtn;
  24. [SerializeField] private Button ADDYBtn;
  25. [SerializeField] private Button SubYBtn;
  26. [SerializeField] private Button AddZBtn;
  27. [SerializeField] private Button SubZBtn;
  28. [SerializeField] private Button InitiativeBtn;
  29. [SerializeField] private Button RevocationBtn;
  30. [SerializeField] private Button SaveBtn;
  31. private Transform MaterialObj;
  32. /// <summary>
  33. /// 当前物体移动旋转缩放的操作步骤
  34. /// </summary>
  35. private List<objectData> listAlter;
  36. /// <summary>
  37. /// 当前景点信息
  38. /// </summary>
  39. private SpoitValue listSpoits;
  40. private void Awake()
  41. {
  42. InitEvent();
  43. MaterialObj = null;
  44. listAlter = new List<objectData>();
  45. listSpoits = new SpoitValue();
  46. EventManager.Instance.Register(this, EventID.EVENT_1);
  47. }
  48. public void Init()
  49. {
  50. }
  51. private void InitEvent()
  52. {
  53. UCBtn.onClick.AddListener(() =>
  54. {
  55. if (UCElenemt.gameObject.activeSelf)
  56. return;
  57. UCElenemt.gameObject.SetActive(true);
  58. TicElenemt.gameObject.SetActive(false);
  59. });
  60. TicBtn.onClick.AddListener(() =>
  61. {
  62. if (TicElenemt.gameObject.activeSelf)
  63. return;
  64. UCElenemt.gameObject.SetActive(false);
  65. TicElenemt.gameObject.SetActive(true);
  66. });
  67. RemoveBtn.onClick.AddListener(() =>
  68. {
  69. if (MaterialObj == null)
  70. return;
  71. if (MaterialObj.tag == "TriggerBox")
  72. return;
  73. if (OnClickRemoveBtn != null)
  74. {
  75. OnClickRemoveBtn(MaterialObj.gameObject);
  76. }
  77. });
  78. //RemoveBtn.gameObject.SetActive(false);
  79. AddSize.onClick.AddListener(() =>
  80. {
  81. if (MaterialObj == null)
  82. return;
  83. SaveAlter();
  84. MaterialObj.localScale += new Vector3(MaterialObj.localScale.x / 10.0f, MaterialObj.localScale.y / 10.0f, MaterialObj.localScale.z / 10.0f);
  85. });
  86. SubSize.onClick.AddListener(() =>
  87. {
  88. if (MaterialObj == null)
  89. return;
  90. SaveAlter();
  91. MaterialObj.localScale -= new Vector3(MaterialObj.localScale.x / 10.0f, MaterialObj.localScale.y / 10.0f, MaterialObj.localScale.z / 10.0f);
  92. });
  93. AddRot.onClick.AddListener(() =>
  94. {
  95. if (MaterialObj == null)
  96. return;
  97. SaveAlter();
  98. MaterialObj.localEulerAngles += new Vector3(0, 10, 0);
  99. });
  100. SubRot.onClick.AddListener(() =>
  101. {
  102. if (MaterialObj == null)
  103. return;
  104. SaveAlter();
  105. MaterialObj.localEulerAngles -= new Vector3(0, 10, 0);
  106. });
  107. AddX.onClick.AddListener(() =>
  108. {
  109. if (MaterialObj == null)
  110. return;
  111. SaveAlter();
  112. MaterialObj.localPosition -= new Vector3(0.1f, 0, 0);
  113. });
  114. SubX.onClick.AddListener(() =>
  115. {
  116. if (MaterialObj == null)
  117. return;
  118. SaveAlter();
  119. MaterialObj.localPosition += new Vector3(0.1f, 0, 0);
  120. });
  121. AddY.onClick.AddListener(() =>
  122. {
  123. if (MaterialObj == null)
  124. return;
  125. SaveAlter();
  126. MaterialObj.localPosition += new Vector3(0, 0.1f, 0);
  127. });
  128. SubY.onClick.AddListener(() =>
  129. {
  130. if (MaterialObj == null)
  131. return;
  132. SaveAlter();
  133. MaterialObj.localPosition -= new Vector3(0, 0.1f, 0);
  134. });
  135. ADDXBtn.onClick.AddListener(() =>
  136. {
  137. if (MaterialObj == null)
  138. return;
  139. SaveAlter();
  140. MaterialObj.localPosition -= new Vector3(0.1f, 0, 0);
  141. });
  142. SubXBtn.onClick.AddListener(() =>
  143. {
  144. if (MaterialObj == null)
  145. return;
  146. SaveAlter();
  147. MaterialObj.localPosition += new Vector3(0.1f, 0, 0);
  148. });
  149. ADDYBtn.onClick.AddListener(() =>
  150. {
  151. if (MaterialObj == null)
  152. return;
  153. SaveAlter();
  154. MaterialObj.localPosition += new Vector3(0, 0.1f, 0);
  155. });
  156. SubYBtn.onClick.AddListener(() =>
  157. {
  158. if (MaterialObj == null)
  159. return;
  160. SaveAlter();
  161. MaterialObj.localPosition -= new Vector3(0, 0.1f, 0);
  162. });
  163. AddZBtn.onClick.AddListener(() =>
  164. {
  165. if (MaterialObj == null)
  166. return;
  167. SaveAlter();
  168. MaterialObj.localPosition += new Vector3(0, 0, 0.1f);
  169. });
  170. SubZBtn.onClick.AddListener(() =>
  171. {
  172. if (MaterialObj == null)
  173. return;
  174. SaveAlter();
  175. MaterialObj.localPosition -= new Vector3(0, 0, 0.1f);
  176. });
  177. InitiativeBtn.onClick.AddListener(() =>
  178. {
  179. if (MaterialObj == null)
  180. return;
  181. InitMaterialObj();
  182. });
  183. RevocationBtn.onClick.AddListener(() =>
  184. {
  185. if (MaterialObj == null)
  186. return;
  187. if (listAlter.Count >= 1)
  188. {
  189. MaterialObj.localPosition = listAlter[listAlter.Count - 1].pos;
  190. MaterialObj.localEulerAngles = listAlter[listAlter.Count - 1].rot;
  191. MaterialObj.localScale = listAlter[listAlter.Count - 1].scale;
  192. listAlter.RemoveAt(listAlter.Count - 1);
  193. }
  194. });
  195. SaveBtn.onClick.AddListener(() =>
  196. {
  197. if (MaterialObj == null)
  198. return;
  199. GameManager.Instance.SaveSpoitObjs();
  200. });
  201. }
  202. /// <summary>
  203. /// 选择素材
  204. /// </summary>
  205. /// <param name="MaterialObj"></param>
  206. public void SelectMaterial(Transform MaterialObj)
  207. {
  208. this.MaterialObj = MaterialObj;
  209. listAlter.Clear();
  210. listAlter = new List<objectData>();
  211. }
  212. /// <summary>
  213. /// 初始化素材
  214. /// 只初始化当前素材
  215. /// </summary>
  216. private void InitMaterialObj()
  217. {
  218. if (MaterialObj == null)
  219. return;
  220. string name = MaterialObj.name;
  221. listAlter.Clear();
  222. listAlter = new List<objectData>();
  223. GameManager.Instance.InitSpoitObjs();
  224. }
  225. private void SaveAlter()
  226. {
  227. objectData data = new objectData();
  228. data.pos = MaterialObj.localPosition;
  229. data.rot = MaterialObj.localEulerAngles;
  230. data.scale = MaterialObj.localScale;
  231. listAlter.Add(data);
  232. }
  233. public void HandleEvent(EventData data)
  234. {
  235. switch (data.ID)
  236. {
  237. case EventID.EVENT_1:
  238. EventData1 data1 = (EventData1)data;
  239. if (data1.SelectObj != null)
  240. {
  241. SelectMaterial(data1.SelectObj.transform);
  242. }
  243. else
  244. {
  245. MaterialObj = null;
  246. listAlter.Clear();
  247. }
  248. break;
  249. case EventID.EVENT_2:
  250. break;
  251. default:
  252. break;
  253. }
  254. }
  255. private void OnDestroy()
  256. {
  257. //EventManager.Instance.Remove(this);
  258. }
  259. }