using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace UI { public class DevMenuUI : UIBase { public GameObject menuContent; public Prefab.TextPrefab textTemplate; public Prefab.ButtonPrefab buttonTemplate; void Awake() { actionButton = KeyCode.F1; } void Start() { Init(); } void Init() { InitEvent(); InitCharacter(); } void InitEvent() { var title = InstantiatePrefab(textTemplate, menuContent.transform); title.Label = "事件菜单"; // for (int i = 0; i < 30; i++) // { // var button= InstantiatePrefab(buttonTemplate, menuContent.transform); // button.text.text = i.ToString(); // } } void InitCharacter() { var title = InstantiatePrefab(textTemplate, menuContent.transform); title.Label = "点击切换人物"; var defList = Managers.DefineManager.Instance.QueryNamedDefinesByType(); foreach (var def in defList) { var button=InstantiatePrefab(buttonTemplate, menuContent.transform); button.Label = def.label; } } /// /// 通用的实例化函数,返回实例化的预制件脚本组件。 /// /// 预制件脚本的类型 /// 要实例化的预制件 /// 实例化对象的父对象 /// 实例化的预制件脚本组件 T InstantiatePrefab(T prefab, Transform parent) where T : Component { if (prefab == null || parent == null) { Debug.LogError("Prefab or parent is null!"); return null; } // 实例化预制件 GameObject instance = Instantiate(prefab.gameObject, parent); // 获取实例化对象的脚本组件 T instantiatedComponent = instance.GetComponent(); if (instantiatedComponent == null) { Debug.LogError($"Failed to get component of type {typeof(T).Name} from the instantiated prefab!"); } return instantiatedComponent; } } }