Ngui之UI框架的层级处理
#region 处理层级问题
void DepthIncrease(UIWndBase uiWnd)
{
DepthIncrease(uiWnd.transform, UIFlag);
}
public static void DepthIncrease(Transform root, UIFlag selfUIFlag)
{
if (UIManager.SingleUIMgr.AllUIWnd == null)
return;
int maxDepth = ;
foreach (var pair in UIManager.SingleUIMgr.AllUIWnd)
{
if (pair.Value.UIID != selfUIFlag && pair.Value.UIID != UIFlag.ui_novice_guide)
{
int d = GetUIMaxDepth(pair.Value.transform);
if (d > maxDepth)
maxDepth = d;
}
}
// lua wnd
GameObject objNguiRoot = NGUIAssetHelp.NGUIRoot;
if (objNguiRoot)
{
LuaComponentLoader[] luaLoaders = objNguiRoot.transform.GetComponentsInChildren<LuaComponentLoader>();
for (int i = ; i < luaLoaders.Length; i++)
{
LuaComponentLoader luaLoader = luaLoaders[i];
if (luaLoader && !string.IsNullOrEmpty(luaLoader.ComponentName) && luaLoader.ComponentName.ToLower().Contains("wnd"))
{
int d = GetUIMaxDepth(luaLoader.transform);
if (d > maxDepth)
maxDepth = d;
}
}
}
SetUIDepth(root, maxDepth + );
}
// 设置ui界面中UIPanel的层级
static void SetUIDepth(Transform root, int depth)
{
UIPanel[] panels = root.GetComponentsInChildren<UIPanel>(true);
if (panels == null || panels.Length < )
return;
Array.Sort(panels, (a, b) => a.depth - b.depth);
for (int i = ; i < panels.Length; i++)
{
UIPanel p = panels[i];
if (p != null)
p.depth = i + depth;
}
}
// 获得ui界面的UIPanel的最大层级
static int GetUIMaxDepth(Transform root)
{
UIPanel[] panels = root.GetComponentsInChildren<UIPanel>(false);
if (panels == null || panels.Length < )
return ;
Array.Sort(panels, (a, b) => a.depth - b.depth);
UIPanel lastPanel = panels.LastOrDefault();
return lastPanel != null ? lastPanel.depth : ;
}
#endregion
转载请注明出处:https://www.cnblogs.com/jietian331/p/10911991.html
Ngui之UI框架的层级处理的更多相关文章
- 【转】发布一个基于NGUI编写的UI框架
发布一个基于NGUI编写的UI框架 1.加载,显示,隐藏,关闭页面,根据标示获得相应界面实例 2.提供界面显示隐藏动画接口 3.单独界面层级,Collider,背景管理 4.根据存储的导航信息完成界面 ...
- 游戏UI框架设计(三) : 窗体的层级管理
游戏UI框架设计(三) ---窗体的层级管理 UI框架中UI窗体的"层级管理",最核心的问题是如何进行窗体的显示管理.窗体(预设)的显示我们前面定义了三种类型: 普通.隐藏其他.反 ...
- Unity3D 搭建优雅的UI框架
为什么要使用UI框架?直接使用NGUI或UGUI一拖一拉直接搭载出界面不就行了? 我相信很多小白,包括我在刚学习Unity3D UI的时候都这样想过. 我的第一款款Unity2D游戏<山地赛车& ...
- Activity中UI框架基本概念
Activity中UI框架基本概念 Activity 是应用程序的基本组成部分,提供了可视的界面,UI容器, 与用户进行交互: 具体Acitivity是怎么样显示这些事视图元素以及响应事件交互的. 一 ...
- 游戏UI框架设计(一) : 架构设计理论篇
游戏UI框架设计(一) ---架构设计理论篇 前几天(2017年2月)看到一篇文章,国内王健林.马云等大咖们看好的未来十大最有"钱途"产业中,排名第一的就是"泛娱乐&qu ...
- 游戏UI框架设计(二) : 最简版本设计
游戏UI框架设计(二) --最简版本设计 为降低难度决定先讲解一个最简版本,阐述UI框架的核心设计理念.这里先定义三个核心功能: 1:UI窗体的自动加载功能. 2:缓存UI窗体. 3:窗体生命周期(状 ...
- 游戏UI框架设计(四) : 模态窗体管理
游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗 ...
- 【设计和开发一套简单自己主动化UI框架】
!有兴趣的朋友请直接移步Github,本帖子已经不做更新,框架的详细的实现已经做了优化和代码整理,本文仅仅介绍了详细的设计思路! 目标:编写一个简单通用UI框架用于管理页面和完毕导航跳转 终于的实现效 ...
- 《开源框架那些事儿22》:UI框架设计实战
UI是User Interface的缩写.通常被觉得是MVC中View的部分,作用是提供跟人机交互的可视化操作界面. MVC中Model提供内容给UI进行渲染,用户通过UI框架产生响应,一般而言会由控 ...
随机推荐
- 管理mysql
要管理MySQL,可以使用可视化图形界面MySQL Workbench. MySQL Workbench可以用可视化的方式查询.创建和修改数据库表,但是,归根到底,MySQL Workbench是一个 ...
- CSScomb.js --- 自定义 CSS 编写风格配置文件
一.排序分类 1. content overflow position z-index display float ... 表示定位/布局的属性(content比较特殊,作为伪元素不可少的,经常放置于 ...
- NOIP模拟测试17
T1:入阵曲 题目大意:给定一个N*M的矩形,问一共有多少个子矩形,使得矩形内所有书的和为k的倍数. 60%:N,M<=80 枚举矩形的左上角和右下角,用二维前缀和求出数字之和. 时间复杂度$O ...
- cartographer和ROS的坐标系关系
参考定义见:backpack_3d.lua Local map frame是一次slam过程中的原点.但是现在cartographer支持Incremental mapping.global m ...
- 架构-软件系统体系结构-B/S架构:B/S架构
ylbtech-架构-软件系统体系结构-B/S架构:B/S架构 B/S架构即浏览器和服务器架构模式.它是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构.在这种架构下,用户工作界面 ...
- 架构-软件系统体系结构-C/S架构:C/S架构
ylbtech-架构-软件系统体系结构-C/S架构:C/S架构 Client/Server架构,即客户端/服务器架构.是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端, ...
- CSS:CSS 表格
ylbtech-CSS:CSS 表格 1.返回顶部 1. CSS 表格 使用 CSS 可以使 HTML 表格更美观. Company Contact Country Alfreds Futterkis ...
- java IO 类概述表
列举常用的类方便查看,温故知新! byte input byte output character input character output Basic InputStream OutputStr ...
- Feign 系列(03)Feign 工作原理
目录 Feign 系列(03)Feign 工作原理 1. Feign 是如何设计的 2. Feign 动态代理 2.1 ReflectiveFeign 构建 2.2 生成代理对象 2.3 Method ...
- docker 详细安装及问题排查
一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看 ...