using Ookii.Dialogs; using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using UnityEngine.UIElements; /// /// 所有的视图管理器 /// public class NoteEditWindowsView : MonoBehaviour { /// /// 自身变换组件 /// public Transform _Transform { get; private set; } public TextMeshProUGUI Title { get; private set; } public TMP_InputField Start_x { get; private set; } public TMP_InputField Start_y { get; private set; } public TMP_InputField TargetTime { get; private set; } public TMP_InputField End_x { get; private set; } public TMP_InputField End_y { get; private set; } public TMP_InputField EndTime { get; private set; } public TMP_InputField GroupNum { get; private set; } public TMP_Dropdown Type { get; private set; } void Awake() { _Transform = gameObject.GetComponent(); Title = _Transform.Find("Title").GetComponent(); Start_x = _Transform.Find("X_InputField").GetComponent(); Start_y = _Transform.Find("Y_InputField").GetComponent(); TargetTime = _Transform.Find("TargetTimeTitle_InputField").GetComponent(); End_x = _Transform.Find("EndX_InputField").GetComponent(); End_y = _Transform.Find("EndY_InputField").GetComponent(); EndTime = _Transform.Find("EndTime_InputField").GetComponent(); GroupNum = _Transform.Find("GroupNum_InputField").GetComponent(); Type = _Transform.Find("TypeDropdown").GetComponent(); } //这里将声明一个事件,叫做被编辑事件,当这里的数据发生更改时,这个视觉系统将触发这个事件 //此时主控会通过预先预先留好的接口获取数据 //那之后,这些数据将会更新主数据库 /// /// 该接口用于更新窗口中的数据,识别传入的数据类型,并且更新为对应的模样 /// public void UpdateWindowData(RuntimeBaseNoteData data) { Debug.Log(this.name + ":窗口编辑器中显示数据的类型为:" + data.GetType()); switch (data) { case RuntimeTapData: { 初始化窗口(); Title.text = "Tap"; Start_x.text = data.xPos.ToString(); Start_y.text = data.yPos.ToString(); TargetTime.text = data.targetTime.ToString(); break; } case RuntimeDragData: { 初始化窗口(); Title.text = "Drag"; Start_x.text = data.xPos.ToString(); Start_y.text = data.yPos.ToString(); TargetTime.text = data.targetTime.ToString(); break; } case RuntimeFlickData: { var flickData = data as RuntimeFlickData; 初始化窗口(); Title.text = "Flick"; Start_x.text = data.xPos.ToString(); Start_y.text = data.yPos.ToString(); TargetTime.text = data.targetTime.ToString(); //遍历枚举的方法 var flickDirection = Enum.GetValues(typeof(FlickDirection)); foreach (var item in flickDirection) { Type.options.Add(new TMP_Dropdown.OptionData(item.ToString())); } Type.SetValueWithoutNotify((int)flickData.direction); break; } case RuntimeSnakeData: { var slider = data as RuntimeSnakeData; 初始化窗口(); Title.text = "Slider"; Start_x.text = data.xPos.ToString(); Start_y.text = data.yPos.ToString(); TargetTime.text = data.targetTime.ToString(); End_x.text = slider.endXPos.ToString(); End_y.text = slider.endYPos.ToString(); EndTime.text = slider.endTime.ToString(); //遍历枚举的方法 var referencePointLocation = Enum.GetValues(typeof(ReferencePointLocation)); foreach (var item in referencePointLocation) { Type.options.Add(new TMP_Dropdown.OptionData(item.ToString())); } Type.SetValueWithoutNotify((int)slider.referencePoint); break; } } } private void 初始化窗口() { Title.text = "null"; Start_x.text = "null"; Start_y.text = "null"; TargetTime.text = "null"; End_x.text = "null"; End_y.text = "null"; EndTime.text = "null"; GroupNum.text = "null"; Type.ClearOptions(); } }