Odin-Inspector-系列教程—–InfoBoxAttribute

Info Box Attribute:可用于任何属性,并在检查器中在属性上方显示一个文本框。使用它来添加注释或警告使用不同的属性。

【InfoBox】添加不同提示类型的文本框

    [Title("InfoBox message types")]
    [InfoBox("Default info box.")]
    public int A;

    [InfoBox("Warning info box.", InfoMessageType.Warning)]
    public int B;

    [InfoBox("Error info box.", InfoMessageType.Error)]
    public int C;

    [InfoBox("Info box without an icon.", InfoMessageType.None)]
    public int D;
【visibleIfMemberName】根据条件控制文本显示

    [InfoBox("This info box is only shown while in editor mode.", InfoMessageType.Error, "IsInEditMode")]
    public float G;
    private static bool IsInEditMode()
    {
        return !Application.isPlaying;
    }
也可以通过$特殊符号引用相应属性的value作为实参,或者使用@特殊符输入表达式

    [InfoBox("$InfoBoxMessage")]
    [InfoBox("@\"Time: \" + DateTime.Now.ToString(\"HH:mm:ss\")")]
    public string InfoBoxMessage = "My dynamic info box message";

示例完整代码

using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InfoBoxAttributeExample : MonoBehaviour
{
    [Title("InfoBox message types")]
    [InfoBox("Default info box.")]
    public int A;

    [InfoBox("Warning info box.", InfoMessageType.Warning)]
    public int B;

    [InfoBox("Error info box.", InfoMessageType.Error)]
    public int C;

    [InfoBox("Info box without an icon.", InfoMessageType.None)]
    public int D;

    [Title("有条件的信息框")]
    public  bool ToggleInfoBoxes;

    [InfoBox("This info box is only shown while in editor mode.", InfoMessageType.Error, "IsInEditMode")]
    public float G;
    private static bool IsInEditMode()
    {
        return !Application.isPlaying;
    }

    [InfoBox("此信息框可由静态字段隐藏.", "ToggleInfoBoxes")]
    public float E;

    [InfoBox("此信息框可由静态字段隐藏.", "ToggleInfoBoxes")]
    public float F;

    [InfoBox("$InfoBoxMessage")]
    [InfoBox("@\"Time: \" + DateTime.Now.ToString(\"HH:mm:ss\")")]
    public string InfoBoxMessage = "My dynamic info box message";
}

更多教程内容详见:革命性Unity 编辑器扩展工具 — Odin Inspector 系列教程

发表评论