【Unity】实现枚举类序列化之后复选效果

文章介绍了如何在Unity中通过[Flags]特性实现枚举类的复选功能,包括单选、多选、全选和不全选的效果。定义枚举时,每个值设为2的幂,利用位运算符进行选择和判断。通过这种方式,可以方便地处理多个选项的状态组合。
摘要由CSDN通过智能技术生成

学习目标:

实现在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日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值