上面代码我想EditorGUILayout.EnumPopup("单/双向", _target.driectVaule);在这个枚举列表显示中文
时间: 2024-03-28 13:42:11 浏览: 102
要在枚举列表中显示中文,你需要在枚举类型的定义中使用中文注释。例如:
```
public enum Direction
{
单向 = 0, // 中文注释
双向 = 1, // 中文注释
}
```
然后在 `EditorGUILayout.EnumPopup` 方法中使用对应的枚举类型即可。例如:
```
EditorGUILayout.EnumPopup("单/双向", _target.directionValue);
```
这样就能在枚举列表中显示中文注释了。
相关问题
_target.driectVaule = (DriectionType)EditorGUILayout.EnumPopup("单/双向", _target.driectVaule); 这样写如何在选中时候显示中文,而不是英文
你可以在枚举类型中的每个成员上使用 `System.ComponentModel.Description` 特性,为其添加中文描述。然后在代码中使用反射获取该特性的值,从而实现在选中时显示中文。
示例代码:
```csharp
public enum DriectionType
{
[Description("单向")]
OneWay,
[Description("双向")]
TwoWay
}
_target.driectVaule = (DriectionType)EditorGUILayout.EnumPopup("单/双向", _target.driectVaule);
// 获取枚举成员的中文描述
public static string GetDescription(Enum value)
{
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
if (attributes != null && attributes.Length > 0)
{
return attributes[0].Description;
}
else
{
return value.ToString();
}
}
// 在选中时显示中文
string chineseDescription = GetDescription(_target.driectVaule);
EditorGUILayout.LabelField(chineseDescription);
```
枚举是英文但是要在EditorGUILayout.EnumPopup列表显示中文
如果你的枚举类型是英文的,但是你想在 `EditorGUILayout.EnumPopup` 方法中显示中文,你可以通过在属性上添加 `System.ComponentModel.Description` 特性来实现。具体步骤如下:
1. 首先在枚举类型中定义一个 `Description` 扩展方法,用于获取枚举值上的 `Description` 特性值,代码如下:
```
public static class EnumExtension
{
public static string GetDescription(this Enum value)
{
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : value.ToString();
}
}
```
2. 然后在枚举类型中为每个枚举值添加一个 `Description` 特性,用于存储对应的中文描述,代码如下:
```
public enum Direction
{
[Description("单向")]
Single = 0,
[Description("双向")]
Double = 1,
}
```
3. 最后在 `EditorGUILayout.EnumPopup` 方法中使用 `EnumExtension.GetDescription` 方法来获取枚举值的中文描述,代码如下:
```
EditorGUILayout.EnumPopup("单/双向", (Direction)EditorGUILayout.EnumPopup(_target.directionValue).GetHashCode());
```
这样,你就可以在 `EditorGUILayout.EnumPopup` 方法中显示中文描述了。
阅读全文