【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—UGUI

    每日一句 读数 学习 去更远的地方 才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例 用户名和密码 Toggle组件 案例 冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容
  • Unity单元测试流程

    文章目录 环境 流程 1 创建一个存放 单元测试程序集 的目录 2 打开 Test Runner 窗口 3 选择单元测试模式 4 创建单元测试程序集 5 创建测试脚本 6 运行测试 环境 Unity 2020 3 3f1 流程 1 创建一个
  • UE5学习笔记(一)——界面功能梳理&第一天知识点记录

    学习UE5的第一步 是软件安装 默认是安装好的 由于安装没有太多技术含量 所以就没有专门做记录 这里有个注意点 虚幻引擎是整合在Epic games launcher中的 也就是说开发引擎内嵌在游戏平台上 打个比方 就是如果你要下unity
  • Unity Animator 动画没切换

    恶魔射手 Survival Shooter 项目 有两个动画 一个是静止时的Idle 一个是走路时候的Move 如下图 设置好动画状态机后发现按方向键后还是Idle 没反应 而一直按着方向键后呢又动起来了 最后找到了真相 原来选中了 Has
  • 【Unity&C#&随机数】随机数

    一个简单的随机数获得 0或1 使用了这样的代码 想要获得0或者1 if Input anyKeyDown float i 1 if i 1 i Random Range 0 Rang i i lt 0 5 0 1 Debug Log Cou
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • c#获取cpu序列号

  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • Unity与Android的Back键冲突解决

    Unity与Android的Back键冲突解决 上一篇的最后留下了两个问题 Unity视图下横屏闪退 Unity视图下Android无法响应back返回上一activity 对于第一个问题 应该是Unity横屏下视图的某些设置跟Androi
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • Unity打开工程时卡住的问题

    自从Unity升级了一个版本后 Unity打开工程卡住的问题越来越严重了 具体表现为 选择工程后 Unity窗口消失 但进程还在 有时候等个几分钟能出来 有时候等10分钟都不见得能出来 直观感受上看 似乎是Unity加载工程的时候某一步卡了
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • unity3d 自定义的图片无法放入source image中

    须将图片的texture type改为 sprite
  • 【原神游戏开发日志1】缘起

    原神游戏开发日志1 缘起 版权声明 本文为 优梦创客 原创文章 您可以自由转载 但必须加入完整的版权声明 文章内容不得删减 修改 演绎 相关学习资源见文末 大家好 最近看到原神在TGA上频频获奖 作为一个14年经验的游戏开发行业的老兵 我就
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常用实践操作之按动任意键触发

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

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐

  • 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绘制一组互斥的按钮