ugui 通用页签管理器
一直是个痛点,这次解决了, ugui通用
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
/// <summary>
/// UGUI页签管理器
///
/// 管理器挂上UITabManager
/// 页签按钮挂上UITabButton
/// 页签内容挂上继承了ITabContent接口的脚本
/// 注意面板赋值
/// </summary>
public class UITabManager : MonoBehaviour
{
//页签按钮列表
public List<UITabButton> tabButtonList;
//页签列表
private List<GameObject> tabContentList = new List<GameObject>();
//当前页签
//private GameObject curContentObj;
private UITabButton curButton;
// Start is called before the first frame update
void Start()
{
foreach (var one in tabButtonList)
{
tabContentList.Add(one.tabContent);
//默认打开第一个
if (tabContentList.Count == 1)
{
curButton = one;
OpenCurTabContent();
}
else
{
CloseTabContent(one);
}
one.btn.onClick.AddListener(() =>
{
//避免重复点击
if (curButton != one)
{
CloseTabContent(curButton);
curButton = one;
OpenCurTabContent();
}
});
}
}
// Update is called once per frame
void Update()
{
}
//打开当前页签
public void OpenCurTabContent()
{
if (curButton != null)
{
curButton.tabContent.GetComponent<ITabContent>().OpenTabContent();
curButton.select.SetActive(true);
curButton.unselect.SetActive(false);
}
}
public void CloseTabContent(UITabButton tabButton)
{
tabButton.tabContent.GetComponent<ITabContent>().CloseTabContent();
tabButton.select.SetActive(false);
tabButton.unselect.SetActive(true);
}
}
按钮挂载,并拖到UITabManager的tabButtonList上去
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UITabButton : MonoBehaviour
{
public Button btn;
public GameObject select;
public GameObject unselect;
public GameObject tabContent;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
接口
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public interface ITabContent
{
void OpenTabContent();
void CloseTabContent();
}
ugui 通用页签管理器的更多相关文章
- Gitea v1.17.0 正式发布 | 集成软件包管理器、容器镜像仓库
我们自豪地宣布 Gitea v1.17.0 发布了.本次发布带来了诸多新特性和累积的更新,我们强烈建议用户在更新到最新版本之前仔细阅读发行注记. 在 1.17.0 版本的开发中我们一共合并了 645 ...
- dock停靠管理器
DockManager停靠管理器可以对它所拥有的 停靠面板 的行为和外观设置进行集中控制.DockPanel停靠面板是停靠应用程序的主要构成部件. 常规面板 DockPanel.ParentPanel ...
- .NET零基础入门之02:源码控制管理器的使用
一:概述 源码控制管理器,也叫"版本控制"软件,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是专业软件公司的基础工具.它主要是协助在多人团队中控制代码,防 ...
- 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全
基于角色的安全是从 Windows NT 的第一个版本开始在 Windows 平台上发展而来的.使用角色,操作系统可以通过检查称为 BUILTIN\Administrators 的组的安全上下文做出一 ...
- nuget 包管理器
nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端, =======================nuget项目 ...
- 订单业务楼层化 view管理器和model管理器进行了model和view的全面封装处理 三端不得不在每个业务入口上线时约定好降级开关,于是代码中充满了各种各样的降级开关字段
京东APP订单业务楼层化技术实践解密 原创 杜丹 留成 博侃 京东零售技术 2020-09-29 https://mp.weixin.qq.com/s/2oExMjh70Kyveiwh8wOBVA 用 ...
- Django基础-004 上下文管理器&中间件&前端公共代码复用
一.上下文管理器 在views中重复使用的代码,可以在上下文管理器中实现 上下文管理器的处理流程如下: 1.先走完views里面的代码,将结果返回给前端 2.然后再将上下文的结果返回给前端 3.上下文 ...
- FIXMAP内存管理器
fixed map是被linux kernel用来解决一类问题的机制,这类问题的共同特点是: (1)在很早期的阶段需要进行地址映射,而此时,由于内存管理模块还没有完成初始化,不能动态分配内存,也就是无 ...
- Duilib源码分析(四)绘制管理器—CPaintManagerUI
接下来,分析uilib.h中的UIManager.h,在正式分析CPaintManagerUI前先了解前面的一些宏.结构: 枚举类型EVENTTYPE_UI:定义了UIManager.h中事件通告类型 ...
- 无法为目标平台“Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider”创建扩展管理器
很久没写博客了,这段时间情绪不那么稳定,还是心态的问题... 就简单写个问题的解决方法吧,其实最近遇到的问题蛮多的,就拿这个解决过后又遇到的来写吧. 正如标题一样:VS2013 无法为目标平台“Mic ...
随机推荐
- 仿EXCEL插件,智表ZCELL产品V2.1 版本发布,增加列标、行标自定义设置及单元格属性自定义相关功能,优化公式随动功能
详细请移步 智表(ZCELL)官网www.zcell.net 更新说明 这次更新主要应用户要求,增加列标.行标自定义设置及单元格属性自定义相关功能,优化公式随动功能 ,欢迎大家体验使用. 本次版本更 ...
- centos6分区要点
安装centos6系统时,为了以后能够扩展存储,分区时要注意几点: 1.boot引导分区要选固定分区类型存储,大小是500M 2.其余分区全部做成物理卷lvm pyshiic类型存储 3.在这个物理 ...
- 从零开始搭建React+vite企业级项目框架
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- VMware NSX Manager SSL证书更新
安装 NSX 后,管理器节点和集群具有自签名证书.证书有效期为825天,到期后需要进行证书重新更新.如图所示,本环境中此次将有三个类型的证书即将到期需要替换:1.NSX 联合身份验证 PI(Local ...
- 秒杀/高并发解决方案+落地实现 (技术栈: SpringBoot+Mysql + Redis +RabbitMQ +MyBatis-Plus +Maven + Linux + Jmeter )-01
秒杀/高并发方案-介绍 @ 目录 秒杀/高并发方案-介绍 秒杀/高并发解决方案+落地实现 (技术栈: SpringBoot+Mysql + Redis +RabbitMQ +MyBatis-Plus ...
- 在Mac上使用docker运行gitlab-ce
首先创建相关路径,并设置权限: mkdir -p /opt/gitlab/{config,data,logs} sudo chmod -R 777 /opt/gitlab 使用如下docker-com ...
- java XML字符串和bean实体类互转
pom引入依赖 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artif ...
- `.NC`文件的读取与使用
.NC文件的读取与使用 前言 NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准.目前,NetCDF广泛应用于大气科学 ...
- Springboot笔记<12>数据访问
springboot数据访问 springboot整合JDBC JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用.JdbcTemplate是Spring的一部分.J ...
- 使用 TRL 训练Reward Model奖励模型
训练过程 在此示例中,将微调"distilroberta-base"模型. 该formatting_func函数将指令与所选和拒绝的响应相结合,创建两个新字符串.这些字符串被标记化 ...