NGUI之UI模块基类
来源:互联网 发布:java开源crm系统 编辑:程序博客网 时间:2024/06/11 19:39
using UnityEngine;using System.Collections;using System.Collections.Generic;/// <summary>/// 所有UI模块的基类/// 作者:小唐/// 时间:2015.8.1/// UI格式:/// Root --XXRoot.cs/// -Panel1 --XX.cs(继承 BaseUI)/// -Panel2 --XX.cs(继承 BaseUI)/// -Panel3 --XX.cs(继承 BaseUI)/// -。。。/// 使用规则:/// 1、预设体根部的脚本以Root结尾,并在Awake中完成初始化(给子panel加脚本),Root中应当只有Panel1,Panel2,Panel3的GameObject、Script的静态字段/// 2、将所有需要设置属性值的控件的Tag设置为UIGameObject,如果是需要重复的(如ScrollView的Item),Tag设置为UIGobjItem/// 3、Panel1,2,3中的属性访问器应在Root中访问/// 3、每个挂载载Panel1,2,3上的脚本应当有m_data数据源属性、SetInfo方法、以及若干OnClick,事件注册/撤销的方法/// </summary>public class BaseUI : MonoBehaviour{ private bool isInit = false; private Dictionary<string, GameObject> UI; /// <summary> /// 初始化UI预制体中需要赋值的GameObject /// </summary> /// <param name="BaseTag"> 如果是重复的(如ScrollView的Item),传入UIGobjItem </param> public void UIInit(string BaseTag = "UIGameObject") { // 避免子类不必要的初始化,初始化一次就可以了 if (!isInit) { UI = new Dictionary<string, GameObject>(); Transform[] child = GetComponentsInChildren<Transform>(true); for (int i = 0, imax = child.Length; i < imax; ++i) { if (child[i].tag.Equals(BaseTag)) { //有异常打开下面 //if (UI.ContainsKey(child[i].name)) Debug.LogError(child[i]); UI.Add(child[i].name, child[i].gameObject); } } Init(); UI.Clear(); UI = null; isInit = true; } } /// <summary> /// 返回指定属性控件的GameObject /// </summary> /// <param name="InpropertyName"> 必须与预制体中相应属性控件的GameObject的名字一致 </param> /// <returns> 指定属性控件的GameObject </returns> public T GetProperty<T>(string InpropertyName) where T : MonoBehaviour { if (UI.ContainsKey(InpropertyName)) return UI[InpropertyName].GetComponent<T>(); Debug.LogError("请在脚本挂载的UI预制体内查找是否包含" + InpropertyName + ",或者是否将Tag设置为UIGameObject/UIGobjItem"); return null; } public GameObject GetProperty(string InpropertyName) { if (UI.ContainsKey(InpropertyName)) return UI[InpropertyName]; Debug.LogError("请在脚本挂载的UI预制体内查找是否包含" + InpropertyName + ",或者是否将Tag设置为UIGameObject/UIGobjItem"); return null; } public virtual void Init() { } protected void OnClickCloseButton(GameObject go) { gameObject.SetActive(false); }}
0 0
- NGUI之UI模块基类
- NGUI学习之聊天窗口UI设计
- 【UI】NGUI和UGUI
- 【NGUI】 NGUI 防止UI穿透物体事件
- NGUI v2.0 UI_1:UIAnchor UI锚定类
- NGUI v2.0 UI_3:UICamera UI摄像机类
- NGUI v2.0 UI_4:UIFilledSprite UI填充精灵类
- NGUI v2.0 Interaction_2:UIButtonColor UI按钮颜色类
- NGUI v2.0 Interaction_3:UIButtonKeys UI按钮按键类
- NGUI v2.0 Interaction_4:UIButtonMessage UI按钮消息类
- NGUI v2.0 Interaction_5:UIButtonOffset UI按钮偏移类
- NGUI v2.0 Interaction_6:UIButtonPlayAnimation UI按钮播放动画类
- NGUI v2.0 Interaction_7:UIButtonRotation UI按钮旋转类
- NGUI v2.0 Interaction_13:UIDragCamera UI拖拽摄像机类
- NGUI v2.0 Interaction_14:UIDraggableCamera UI可拖拽摄像机类
- angularJs模块ui-router之路由控制
- angularJs模块ui-router之状态管理
- NGUI 制作简易背包UI
- 父子进程与父子线程退出分析
- Java基础——IO流(三)
- 一个TThread类多线程实例
- NSString及NSMutableString的小结
- 游戏开发中常用的设计模式
- NGUI之UI模块基类
- EasyUI学习网站
- android studio MissingTranslation 3种解决方式
- java多态简单例子 one
- 从Action中传值到JSP页面的方法
- BootStray CSS代码
- Python进阶之装饰器@decorator
- 数据库设计--数据流图(DFD)
- GCJ 2009 Round2 A 构造贪心策略