UI简易框架-----泰斗社区

using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;

public class UIManager
{
        public enum EUI
        {
                UILogin,

                Num,
        }

        private static Dictionary<EUI, UIBase> dUIs = new Dictionary<EUI, UIBase>();
        public static UIBase GetUI(EUI eUI)
        {
                if (dUIs.ContainsKey(eUI))
                {
                        return dUIs[eUI];
                }
                return null;
        }

        public static UIBase CreateUI(EUI eUI)
        {
                if (dUIs.ContainsKey(eUI))
                {
                        if (dUIs[eUI] != null)
                        {
                                return dUIs[eUI];
                        }
                        else
                        {
                                dUIs.Remove(eUI);
                        }
                }

                Transform tr = Resources.Load<Transform>("UI/" + eUI);
                Transform uiTr = null;
                if (tr == null)
                {
                        //加载AssetBundle
                }
                else
                {
                        uiTr = GameObject.Instantiate(tr) as Transform;
                }
                uiTr.name = eUI.ToString();

                UIBase ui = uiTr.GetComponent<UIBase>();
                if (ui == null)
                {
                        ui = uiTr.gameObject.AddComponent(Type.GetType(eUI.ToString())) as UIBase;
                }
                ui.transform.localPosition = Vector3.zero;
                dUIs.Add(eUI, ui);
                return ui;
        }
}

using UnityEngine;
using System.Collections;
 
public abstract class UIBase : MonoBehaviour
{
        public virtual UIManager.EUI eUI
        {
                get
                {
                        return UIManager.EUI.Num;
                }
        }
         
        protected bool bInited;
        void Awake()
        {
                InitComponents();
                bInited = true;
        }
 
        protected virtual void InitComponents()
        {
 
        }
 
        public virtual void OnCloseUI()
        {
                Destroy(this.gameObject);
        }
}

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine.UI;
 
public class UILogin : UIBase
{
        public override UIManager.EUI eUI
        {
                get
                {
                        return UIManager.EUI.UILogin;
                }
        }
    InputField usernameInput;
    InputField passwordInput;
    Button btnLogin;
    protected override void InitComponents()
    {
        usernameInput = UStaticFuncs.FindChildComponent<InputField>(transform, "username");
        passwordInput = UStaticFuncs.FindChildComponent<InputField>(transform, "username");
        btnLogin = UStaticFuncs.FindChildComponent<Button>(transform, "Login");
 
        btnLogin.onClick.AddListener(
            delegate ()
            {
                string username = usernameInput.text;
                string password = passwordInput.text;
                //do login
            });
    }
}

附赠两个递归查找子物体的方法:
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;
 
public static class UStaticFuncs
{
        public static Transform FindChild(Transform tr, string childName)
        {
                for (int i = 0;i<tr.childCount;i++)
                {
                        if (tr.GetChild(i).name == childName)
                        {
                                Transform t = tr.GetChild(i);
                                if (t != null)
                                {
                                        return t;
                                }
                        }
                        else
                        {
                                Transform t = FindChild(tr.GetChild(i), childName);
                                if (t != null)
                                {
                                        return t;
                                }
                        }
                }
                return null;
        }
        public static T FindChildComponent<T>(Transform tr, string childName)
        {
                Transform t = FindChild(tr, childName);
                return t.GetComponent<T>();
        }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值