В шейдере Unity Shaderlab вы можете открыть свойства шейдера для инспектора материалов в редакторе. Это можно сделать, поместив свойства, которые вы хотите предоставить, в раздел Properties
следующим образом:
Properties
{
_SomeFloat("A Float", float) = 5
}
Unity определяет список свойств в документации здесь .
Однако это не включает в себя любую форму float2 или vector2, только один Float
или Vector
, который состоит из xyzw
.
Я попытался установить тип свойства на float2
И Vector2
_SomeFloat("A Float", float2) = (5,5)
_SomeFloat2("A Float2", Vector2) = (5,5)
, которые оба возвращают ошибку Parse error: syntax error, unexpected TVAL_ID at line 7
или пытаются сократить Vector
пополам, установив только половину членов
_SomeFloat("A Float", Vector) = (5,5)
, которые возвращают ошибка Parse error: syntax error, unexpected ')', expecting ','
Я мог бы просто использовать тип Vector и использовать только его xy
, но это делает неясным интерфейс пользователя, поскольку в инспекторе теперь есть два неиспользуемых элемента, и я не смог найти атрибут свойства или Ящик (например, HideInInspector
), который позволяет скрыть значения zw
от инспектора.
Так есть ли способ выставить float2, используя тип свойства? Или, может быть, альтернатива, в которой вы можете поместить два свойства с плавающей точкой рядом друг с другом в редакторе, например, блок Tiling / Offset, находится в стандартном типе свойства 2D
(может быть, что-то похожее на [EditorGUILayout.BeginHorizontal][2]
)?