Button Attribute特性:用于為一個方法在檢查器中繪制一個觸發該方法的功能按鈕
【Button】在檢查器上繪制哥哥按鈕,如果含有參數,默認以折頁的方式展示
[Button]
private void Default()
{
}
[Button]
private void Default(float a, float b, GameObject c)
{
}
[Button]
private void Default(float t, float b, float[] c)
{
}
以為為這個button指定一個名稱,而且也可以通過特殊字符$引用一個字段作為名稱
public string ButtonName = "Dynamic button name";
public bool Toggle;
[Button("$ButtonName")]
private void DefaultSizedButton()
{
this.Toggle = !this.Toggle;
}
可以通過特殊字符@ 寫入方法體調用
[Button("@\"Expression label: \" + DateTime.Now.ToString(\"HH:mm:ss\")")]
public void ExpressionLabel()
{
this.Toggle = !this.Toggle;
}
【ButtonSizes】指定不同尺寸的按鈕
[Button(ButtonSizes.Small), GUIColor(0.3f, 0.8f, 1)]
private void SmallButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Medium), GUIColor(0.4f, 0.4f, 1)]
private void MediumSizedButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Large), GUIColor(0.5f, 0.8f, 0.5f)]
private void LargeButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Gigantic),GUIColor(0.6f, 0.8f, 0)]
private void GiganticButton()
{
this.Toggle = !this.Toggle;
}
也是自定義尺寸
[Button(90)]
private void CustomSizedButton()
{
this.Toggle = !this.Toggle;
}
【ButtonStyle】指定展示樣式
[Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton)]
private int FoldoutButton(int a = 2, int b = 2)
{
return a + b;
}
[Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton)]
private void FoldoutButton(int a, int b, ref int result)
{
result = a + b;
}
[Button(ButtonSizes.Large, ButtonStyle.Box)]
private void Box(float a, float b, out float c)
{
c = a + b;
}
[Button(ButtonSizes.Large, ButtonStyle.Box)]
private void Box(int a, float b, out float c)
{
c = a + b;
}
[Button(ButtonSizes.Large, ButtonStyle.CompactBox)]
public void CompactBox(int a, float b, out float c)
{
c = a + b;
}
【Expanded】如果有參數的控制是否強制展開折頁(去除折頁方式)
[Button(ButtonStyle.CompactBox, Expanded = true)]
private void CompactExpanded(float a, float b, GameObject c)
{
}
[Button(ButtonSizes.Medium, ButtonStyle.Box, Expanded = true)]
private void FullExpanded(float a, float b)
{
}
完整示例代碼
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ButtonAttributeExample : MonoBehaviour
{
[Button]
private void Default()
{
}
[Button]
private void Default(float a, float b, GameObject c)
{
}
[Button]
private void Default(float t, float b, float[] c)
{
}
public string ButtonName = "Dynamic button name";
public bool Toggle;
[Button("$ButtonName")]
private void DefaultSizedButton()
{
this.Toggle = !this.Toggle;
}
[Button("@\"Expression label: \" + DateTime.Now.ToString(\"HH:mm:ss\")")]
public void ExpressionLabel()
{
this.Toggle = !this.Toggle;
}
[Button("Name of button")]
private void NamedButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Small), GUIColor(0.3f, 0.8f, 1)]
private void SmallButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Medium), GUIColor(0.4f, 0.4f, 1)]
private void MediumSizedButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Large), GUIColor(0.5f, 0.8f, 0.5f)]
private void LargeButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Gigantic),GUIColor(0.6f, 0.8f, 0)]
private void GiganticButton()
{
this.Toggle = !this.Toggle;
}
[Button(90)]
private void CustomSizedButton()
{
this.Toggle = !this.Toggle;
}
[Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton)]
private int FoldoutButton(int a = 2, int b = 2)
{
return a + b;
}
[Button(ButtonSizes.Medium, ButtonStyle.FoldoutButton)]
private void FoldoutButton(int a, int b, ref int result)
{
result = a + b;
}
[Button(ButtonSizes.Large, ButtonStyle.Box)]
private void Box(float a, float b, out float c)
{
c = a + b;
}
[Button(ButtonSizes.Large, ButtonStyle.Box)]
private void Box(int a, float b, out float c)
{
c = a + b;
}
[Button(ButtonSizes.Large, ButtonStyle.CompactBox)]
public void CompactBox(int a, float b, out float c)
{
c = a + b;
}
[Button(ButtonStyle.CompactBox, Expanded = true)]
private void CompactExpanded(float a, float b, GameObject c)
{
}
[Button(ButtonSizes.Medium, ButtonStyle.Box, Expanded = true)]
private void FullExpanded(float a, float b)
{
}
}