【Unity】实现枚举类序列化之后复选效果
学习目标:
实现在Unity中序列化出枚举类可以进行复选,多选,不全选效果
实现过程:
定义
使用Unity自带的 [Flags]
标签即可
在要实现复选功能的枚举类上使用 [Flags]
标签
[Flags] public enum SystemType { Player = 1 << 0, // 玩家 Equipment = 1 << 1, // 装备 Enemy = 1 << 2, // 敌人 Costume = 1 << 3, // 皮肤/服饰 Skill = 1 << 4, // 技能 Pet = 1 << 5, // 宠物 Task = 1 << 6, // 任务 UI = 1 << 7, // UI }
在枚举类中,每个枚举值的值必须是唯一的2的幂。这是因为在实现复选时,每个值都需要表示二进制位的状态。例如,如果您希望同时选择 Option1 和 Option3,则需要设置枚举变量的值为 5(即 1 | 4)。
- 直接标明值 保证是2的幂即可
- 可以使用位运算符中的左移
<<
实现
实现多选
在代码中通过位运算符|
将要复选的值连接起来
实现全选以及不全选
在Unity中使用[Flags]
标签标记会自带两个值
Nothing
表示全不选Everything
表示全选
解析复选的值
通过&
进行运算判定是否选中某个值
if ((settings.type & SystemType.Player) == SystemType.Player) { //表示已选中指定的值 }
效果展示:
单选
多选
全选
不全选
学习时间:
2023年5月24日
本文来自博客园,作者:星空探险家,转载请注明原文链接:https://www.cnblogs.com/PuppetLazy/p/17840900.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了