Odin Attributes 为Unity开发者提供了更多的自定义选项,使得开发过程更加高效和愉悦。通过使用这些特性,开发者可以创建更加专业和用户友好的编辑器界面,从而提升整个开发团队的工作效率。
Detailed Info Box 特性用于任何属性,并显示一个消息框,可以展开该消息框以显示更多详细信息。 使用它向用户传达消息,并为他们提供查看更多详细信息的选项。
不同形式的消息框
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.None)]
public string NoneMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.Info)]
public string InfoMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.Warning)]
public string WarningMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.Error)]
public string ErrorMessage = "无";
还可以通过一个方法的返回值(bool)来控制消息框是否显示,例如在这个函数中判断此字段是否为null,如果为null在出现弹窗提示等。
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True。" +
"所以此消息框可见.还可以通过一个方法的返回值(bool)来控制消息框是否显示," +
"例如在这个函数中判断此字段是否为null,如果为null在出现弹窗提示等。",
InfoMessageType = InfoMessageType.None, VisibleIf = "VisibleFunction")]
public string haveVisibleIfMessage = "";
[DetailedInfoBox("简介消息", "还可以通过一个方法的返回值(bool)来控制消息框是否显示,例如在这个函数中判断此字段是否为null,如果为null在出现弹窗提示等。", InfoMessageType = InfoMessageType.None, VisibleIf = "NoVisibleFunction")]
public string noVisibleIfMessage = "";
public bool VisibleFunction()
{
/*
* 根据情况下选择返回true或者false,让对应的消息框显示或者不显示
*/
return true;
}
public bool NoVisibleFunction()
{
return string.IsNullOrEmpty(noVisibleIfMessage);
}
完整示例代码
using Sirenix.OdinInspector;
using UnityEngine;
public class DetailedInfoBoxExample : MonoBehaviour
{
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.None)]
public string NoneMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.Info)]
public string InfoMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.Warning)]
public string WarningMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True,所以此消息框可见", InfoMessageType = InfoMessageType.Error)]
public string ErrorMessage = "无";
[DetailedInfoBox("简介消息", "默认情况下VisibleIf为True。" +
"所以此消息框可见.还可以通过一个方法的返回值(bool)来控制消息框是否显示," +
"例如在这个函数中判断此字段是否为null,如果为null在出现弹窗提示等。",
InfoMessageType = InfoMessageType.None, VisibleIf = "VisibleFunction")]
public string haveVisibleIfMessage = "";
[DetailedInfoBox("简介消息", "还可以通过一个方法的返回值(bool)来控制消息框是否显示,例如在这个函数中判断此字段是否为null,如果为null在出现弹窗提示等。", InfoMessageType = InfoMessageType.None, VisibleIf = "NoVisibleFunction")]
public string noVisibleIfMessage = "";
public bool VisibleFunction()
{
/*
* 根据情况下选择返回true或者false,让对应的消息框显示或者不显示
*/
return true;
}
public bool NoVisibleFunction()
{
return string.IsNullOrEmpty(noVisibleIfMessage);
}
}