在 Unity shaderlab 着色器中,您可以在编辑器中向材质检查器公开着色器属性。这可以通过将要公开的属性放置在Properties
部分中来完成,如下所示
Properties
{
_SomeFloat("A Float", float) = 5
}
Unity 在此处的文档中定义了一个属性列表。
但是,这不包括任何形式的 float2 或 vector2,只是单个Float
或Vector
由xyzw
.
我尝试将属性类型设置为float2
And 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
,但这会导致 UI 不清楚,因为检查器中现在有两个未使用的元素,并且找不到HideInInspector
允许您隐藏zw
值的 Property Attribute 或 Drawer(例如)检查员。
那么有没有办法使用属性类型公开 float2 ?或者,您可以在编辑器中将两个浮动属性彼此相邻放置,例如平铺/偏移抽屉是标准2D
属性类型(可能类似于[EditorGUILayout.BeginHorizontal][2]
)?