【Unity】模仿GUILayout.SelectionGird绘制一组互斥的按钮

2023-10-29

        /// <summary>
        /// 绘制一组互斥的按钮
        /// 模仿GUILayout.SelectionGird绘制一组互斥的按钮,
        /// 做了一点修改, 传入的string数组改为KeyValuePair<int, string>的数组,
        /// 返回的不再是button在这个组合中的位置,而是我们给定的id(KeyValue中的int)
        /// </summary>
        /// <param name="ActiveID"></param>
        /// <param name="toggleDes"></param>
        /// <param name="colCount">Colum Count</param>
        /// <param name="style">GUIStyle</param>
        /// <param name="options">params GUILayoutOption[]</param>
        /// <returns></returns>
        public static int MutexToggles(int ActiveID, IList<KeyValuePair<int, string>> toggleDes, int colCount = 1, GUIStyle style = null, params GUILayoutOption[] options)
        {
            style = style == null ? new GUIStyle("button") : style;

            int rowCount = Mathf.CeilToInt(((float)toggleDes.Count) / colCount);
            GUILayout.BeginVertical();
            for (int row = 1; row <= rowCount; row++)
            {
                GUILayout.BeginHorizontal();
                for (int col = 1; col <= colCount; col++)
                {
                    int index = (row - 1) * colCount + col - 1;

                    if (index >= toggleDes.Count)
                        break;
                    bool flag = GUILayout.Toggle(toggleDes[index].Key == ActiveID, toggleDes[index].Value, style, options);
                    if (flag != (toggleDes[index].Key == ActiveID))
                        return toggleDes[index].Key;

                }
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();

            return ActiveID;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Unity】模仿GUILayout.SelectionGird绘制一组互斥的按钮 的相关文章

  • unity粒子特效附上贴图后播放动画

    转自 http jingyan baidu com article f96699bbb1a0d6894f3c1b77 html 参考 http www unitymanual com thread 2993 1 1 html dsign a
  • UnityLuaMvvM Lua 带通知的Mode类

    实现数据更新UI自动刷新的核心代码 欢迎关注https gitee com xiongks UnityMVVM mode function modeType local obj obj modeType modeType obj filds
  • Unity 安卓打包

    Unity打包的方式有很多种 自动打包和手动打包 今天小弟就鼓捣鼓捣unity手动打包 如果想动态打包的话 可以去看其他大佬的帖帖哈 unity打包先配置环境 下载unity的时候可以顺道把unity的安卓包下载下来 如果忘了也没事 可以从
  • c#获取cpu序列号

  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作梳理之小地图的制作

    游戏中一般存在小地图系统 实际上就是设置一个新的摄像机放置在玩家的正上方 然后在小地图上显示新摄像机看见的东西就可以了 在小地图上一般存在放大地图和缩小地图的按钮可以方便放大和缩小地图 这些操作是如何实现的呢 接下来直接上核心代码 usin
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void

随机推荐

  • JEESITE快速开发平台(五)用户-角色-部门-区域-菜单-权限表关系

    一 表关系 一共有8张表分别用来实现用户 角色 部门 区域 菜单 权限管理 详细如下 二 SQL语句 java view plain copy 一共八张表 select from sys user 用户表 select from sys m
  • Vue 打包优化之 生产环境删除 console 日志

    使用 vue cli 3 0 vue cli 脚手架构建的项目 一般在本地开发过程中 会有不少 console 调试信息 如果不处理这些日志信息 默认情况下 即使是构建生产环境的包 这些 console 打印也不会被移除 这显然是不够严谨的
  • 蓝桥杯-时间模拟

    蓝桥杯 时间模拟 引言 时间模拟 是蓝桥杯最常见的题型 我愿意把他称作小白和入门画的界限 接下来就让我来带大家入门把 一 模板 include
  • 操作系统学习提升篇——进程同步

    进程的线程共享进程资源 进程共享计算机资源 因此进程和线程一样都需要信息同步 共享内存 在某种程度上 多进程是共同使用物理内存的 由于操作系统的进程管理 进程间的内存空间是独立的 进程默认是不能访问进程空间之外的内存空间的 一个进程不能访问
  • 在java项目中如何使用Lucene搜索引擎(入门篇)

    什么是lucene 就是一个简单的工具包 java语言特有的 做全文检索用的 为什么不用数据库的模糊查询 两者都什么区别 1 模糊查询只适用于结构化数据 如数据库中存储的数据 非结构化数据就是文档 图片 音频等等 2 模糊查询速度慢 3 不
  • tcp/udp socket 网络通信中超时时间的设置

    1 connect函数的超时时间设置只对TCP有效 UDP由于是无连接的connect都会返回success 有两种方法 第一种方法 默认的socket是阻塞模式 我们只需要设置其为非阻塞模式 然后调用select去查询其状态 代码如下 s
  • 【实时更新】LaTeX公式编辑(希腊字母/分数/上下标/加粗/关系符/点乘/无穷大)

    一 基本用法 1 行内公式加 2 行间公式加 二 常用代码 1 常用小写希腊字母 希腊字母 代码 alpha alpha
  • vscode 终端集成bash

    windows 版本的 vs code 终端默认是没有集成bash的 虽然也能在vscode 终端可以提交git 但是没有高亮 没有提示 很不方便 这时候就需要我们将bash集成到vs code的终端 就可以愉快的使用git的分支高亮 提示
  • 为什么需要脉冲成形

    数字信号在传输的过程中难免会受到干扰 从而出现了波形失真 为了解决电报传输问题 提出了数字波形在无噪声线性信道传输时的无失真条件 称为奈奎斯特准则 其中奈奎斯特第一准则便是抽样点无失真准则 是关于接收机不产生码间串扰的问题 对于基带传输系统
  • win7官方原版iso镜像_教你从微软官网下载 Windows 10 原版 ISO 镜像

    到微软官网只能下载到Windows升级助手 或者Media Creation Tool 但这个工具制作U盘启动真是有点慢 不如直接下载Windows 10 的ISO镜像 再制作U盘工具 而且可以收藏 从第三方的渠道的确可以下载到Win10的
  • Subquery and Wrapping query

    Subquery Progressive query Into Wrapping query 1 Using fluent syntax string names Tom Dick Harry Mary Jay IEnumerable
  • odoo15 owl 组件实验

    视图有两种形式 一种是利用odoo MVC框架的QWeb模板引擎进行渲染 另一种是独立于odoo的模板引擎 利用前端框架搭建视图与用户交互 并调用odoo的控制器与odoo交互 odoo15提供了一套全新的前端框架owl 最主要的是owl的
  • 利用 AES 对 log4j 日志文件加密

    总览 本文简要介绍了 AES 算法加密的方式 以及如何利用 AES 对 log4j 输出的日志进行加密 背景 在互联网时代下 JAVA 大多用来做后端开发 由于后端的程序大多都部署在自己的服务器上 客户接触不到程序的日志文件 因此 多数情况
  • nacos无法正常下线问题记录

    问题描述 公司搭建了nacos集群 但是在微服务下线时会无法正常下线 点击下线提示 caused errCode 500 errMsg do metadata operation failed caused com alibaba naco
  • 基于vue2和element-ui的项目框架模板加强版

    前言 我的上篇博客讲了如何基于vue2和element ui搭建一个基础的项目框架模板 有兴趣的可以看下 文章有点长 这篇博客就谈谈可以在基础框架模板上增添哪些功能 ie兼容 ie兼容之前是让我很头痛的一件事 但经过我的反复摸索 百度 哈哈
  • Unity新手基础知识系列—序

    前提提要 本系列主要内容是根据 Unity中文文档来总结的 其实本人也是现在正在学习Unity相关基础 可能有一些理解不到位或者理解错误的地方 望大家指正 为什么写这个系列 1 为了记录自己学习的内容 方便以后自己再查阅 2 巩固知识体系
  • 力扣:只出现一次的数字

    给定一个非空整数数组 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 class Solution public int singleNumber int nums int result 0 for int
  • c语言字符串替换函数StrReplace(char strRes[],char from[], char to[])可直接使用

    将如下函数添加到文件中 可直接调用 StrReplace char strRes char from char to strRes 原始字符串 rom 需要替换的字符 串只替换第一次出现的位置 to 需要替换成什么字符串 成功返回 1 失败
  • 【牛客·剑指offer】Python JZ4二维数组查找、JZ3 数组中的重复数字、JZ5 替换空格、JZ6 从尾到头打印链表

    一 JZ4二维数组查找 描述 在一个二维数组array中 每个一维数组的长度相同 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序 请完成一个函数 输入这样的一个二维数组和一个整数 判断数组中是否含有该整数 1 2 8
  • 【Unity】模仿GUILayout.SelectionGird绘制一组互斥的按钮