Атрибуты переменных и параметров метода
Item
Используется для изменения отображаемого имени элементов перечисления (enum), когда enum передается в качестве параметра метода
public class Cube : VarwinObject
{
public enum CubeColors
{
[Item(English: "white")] Default,
Red,
Green,
Blue
}
[Action(English: "Set cube color")]
public void SetCubeColor(CubeColors color)
{
// set color
}
}
Связка атрибутов UseValueList - Value - ValueList
Используется в случаях, когда в качестве параметра метода передается переменная, не являющаяся перечислением. При этом необходимо предоставить пользователю вместо поля значения выбор из списка предопределенных именованных значений
Для пользователя выглядит точно так же как и выбор из элементов перечисления
UseValueList
Атрибут параметров метода. При объявлении атрибута через запятую перечисляются имена списков, которые необходимо включить в выпадающий список в blockly. Списки определяются с помощью атрибутов [Value]
и [ValueList]
[UseValueList("sizes", "small sizes", "large sizes")]
[Action(English: "Set cube size")]
public void SetCubeSize([**UseValueList("sizes", "small sizes","large sizes")**] Vector3 size)
{
// set size
}
Value
Используется для создания именованной переменной
[Value(English:"very small")]
public Vector3 VerySmallSize = 0.25f * Vector3.one;
ValueList
Используется для создания именованного списка значений
Следующий код добавляет переменную very small
к спискам small sizes
и sizes
[ValueList("small sizes", "sizes")]
[Value(English:"very small")]
public Vector3 VerySmallSize = 0.25f * Vector3.one;
Пример использования
В следующем примере создается несколько именованных переменных, добавляются к различным именованным спискам и создается метод, принимающий в качестве аргумента переменную
С помощью атрибута [UseValueList]
в блокли появляется возможность выбрать переменную из списка
public class Cube : VarwinObject
{
[ValueList("small sizes", "sizes")]
[Value(English:"very small")]
public Vector3 VerySmallSize = 0.25f * Vector3.one;
[ValueList("small sizes", "sizes")]
[Value(English:"small")]
public Vector3 SmallSize = 0.5f * Vector3.one;
[ValueList("sizes")]
[Value(English:"medium")]
public Vector3 MediumSize = 1.0f * Vector3.one;
[ValueList("large sizes", "sizes")]
[Value(English:"large")]
public Vector3 LargeSize = 1.5f * Vector3.one;
[ValueList("large sizes", "sizes")]
[Value(English:"very large")]
public Vector3 VeryLargeSize = 2.0f * Vector3.one;
[Action(English: "Set cube size")]
public void SetCubeSize([UseValueList("sizes", "small sizes", "large sizes")] Vector3 size)
{
// set size
}
}
Подробнее Общие свойства атрибутов