Unity NGUI panel 实现层级管理 即点谁谁置顶

该博客介绍了一个用于Unity3D的NGUI系统的实用工具类,包括UI事件处理、对象的遍历、UI元素的更新和维护等。特别地,它提供了一个方法来实现点击时将指定面板置顶的功能,通过调整UIPanel的深度来控制显示层级。此外,还涉及到头像图片的加载和管理,以及自定义头像的保存和刷新机制。
摘要由CSDN通过智能技术生成
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using System.IO;

using Afuse.Data;
using Afuse.Foundation.Util;
using Afuse.Core.UnityHelper;
/// <summary>
/// 一些常用UI操作 比如下头像什么的。 自己写的
/// </summary>
public class UITools : MonoBehaviour
{
    public static void AddInputErrorTips(GameObject g)
    {
        UIEventListener.Get(g).onHover += ErrorTip_Hover;
    }
    static void ErrorTip_Hover(GameObject g, bool b)
    {
        if (g)
        {
            string str = "";
            if (g.GetComponent<UIInput>() && !string.IsNullOrEmpty(g.GetComponent<LocalWidget_Error>().ErrorTipName))
            {
                str = TipsContent.Instance.GetTipValue(g.GetComponent<LocalWidget_Error>().ErrorTipName);    
            }
            if (b)
            {
                LocalTooltipError.instance.ShowText(str, g);
            }
            else
            {
                LocalTooltipError.instance.ShowText("", g);
            }
        }
    }

    #region 常用小工具
    public static void UpdateWidgetCollider(GameObject go)
    {
        if (!go.GetComponent<BoxCollider>())
        {
            NGUITools.AddWidgetCollider(go);
        }
        NGUITools.UpdateWidgetCollider(go);
    }
    public static int ChildNum(Transform t)
    {
        int num = 0;
        for (int i = 0; i < t.childCount; i++)
        {
            if (t.GetChild(i).gameObject.activeInHierarchy)
            {
                num++;
            }
        }
        return num;
    }
    public static void Float_Int(Transform item)
    {
        item.transform.localPosition = new Vector3((int)item.transform.localPosition.x, (int)item.transform.localPosition.y, (int)item.transform.localPosition.z);
    }
    /// <summary>
    /// 中间字符开始判断stringA  前面有stringB 后面有stringC
    /// </summary>
    /// <param name="str"></param>
    /// <param name="stringA"></param>
    /// <param name="stringB"></param>
    /// <param name="stringC"></param>
    /// <returns></returns>
    public static string StringRemove(string str, string stringA, string stringB, string stringC)
    {
        //Debug.Log(str.IndexOf(stringA));
        if (str.Contains(stringA))
        {
            // Debug.Log(str.Substring(0, str.IndexOf(stringA)).Contains(stringB));
            if (str.Substring(0, str.IndexOf(stringA)).Contains(stringB))
            {
                //Debug.Log(str.Substring(str.IndexOf(stringA)).Contains(stringC));
                if (str.Substring(str.IndexOf(stringA) + stringA.Length).Contains(stringC))
                {
                    //Debug.Log(str.IndexOf(stringB));

                    int b = str.Substring(0, str.IndexOf(stringA)).LastIndexOf(stringB);
                    int c = str.IndexOf(stringA) + stringA.Length + str.Substring(str.IndexOf(stringA) + stringA.Length).IndexOf(stringC);
                    //Debug.Log(b); 
                    // Debug.Log(c);
                    return str.Remove(b, (c - b) + stringC.Length);
                }
            }

        }

        return str;
    }
    #region 遍历获取对象所有子对象<ComponentName>的list
    private static List<Transform> trans = new List<Transform>();
    private static void GetObject(Transform tran, string componentName)
    {

        if (tran.GetComponent(componentName))
        {
            trans.Add(tran);
        }

        if (tran.childCount > 0)
        {
            foreach (Transform item in tran)
            {
                GetObject(item, componentName);
            }
        }
    }
    public static List<Tr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值