【发布时间】:2019-09-12 23:30:19
【问题描述】:
我正在开发一种输入系统,该系统允许用户在不同输入设备和操作系统之间转换输入映射,并可能定义自己的映射。
我正在尝试为编辑器窗口创建一个 MaskField,用户可以在其中从 RuntimePlatforms 列表中进行选择,但选择单个值会导致选择多个值。
主要用于调试,我将其设置为生成它使用的等效枚举 RuntimePlatformFlags,而不是 RuntimePlatform:
[System.Flags]
public enum RuntimePlatformFlags: long
{
OSXEditor=(0<<0),
OSXPlayer=(0<<1),
WindowsPlayer=(0<<2),
OSXWebPlayer=(0<<3),
OSXDashboardPlayer=(0<<4),
WindowsWebPlayer=(0<<5),
WindowsEditor=(0<<6),
IPhonePlayer=(0<<7),
PS3=(0<<8),
XBOX360=(0<<9),
Android=(0<<10),
NaCl=(0<<11),
LinuxPlayer=(0<<12),
FlashPlayer=(0<<13),
LinuxEditor=(0<<14),
WebGLPlayer=(0<<15),
WSAPlayerX86=(0<<16),
MetroPlayerX86=(0<<17),
MetroPlayerX64=(0<<18),
WSAPlayerX64=(0<<19),
MetroPlayerARM=(0<<20),
WSAPlayerARM=(0<<21),
WP8Player=(0<<22),
BB10Player=(0<<23),
BlackBerryPlayer=(0<<24),
TizenPlayer=(0<<25),
PSP2=(0<<26),
PS4=(0<<27),
PSM=(0<<28),
XboxOne=(0<<29),
SamsungTVPlayer=(0<<30),
WiiU=(0<<31),
tvOS=(0<<32),
Switch=(0<<33),
Lumin=(0<<34),
BJM=(0<<35),
}
In this linked screenshot, only the first 4 options were selected. "Platforms:" 旁边的整数是掩码本身。
我不是一个很大的按位向导,但我的假设是发生这种情况是因为 EditorGUILayout.MaskField 返回一个 32 位 int 值,并且有超过 32 个枚举选项。是否有任何解决方法或其他原因导致此问题?
【问题讨论】:
标签: unity3d enums bitmask unity-editor