在Unity shaderlab着色器中,您可以将着色器属性公开给编辑器中的材质检查器。可以通过将要公开的属性放置在Properties
部分中来完成,例如]
Properties { _SomeFloat("A Float", float) = 5 }
Unity定义documentation here中的属性列表。
但是它不包括任何形式的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
,但这使UI不清楚,因为检查器中现在有两个未使用的元素,并且找不到属性或抽屉(例如HideInInspector
)允许您从检查器中隐藏zw
值。
因此,有一种使用属性类型公开float2的方法吗?或者,您可以在编辑器中像“平铺/偏移”抽屉那样将两个float属性彼此相邻放置的替代方法是标准2D
属性类型(也许类似于[EditorGUILayout.BeginHorizontal][2]
)吗?
在Unity shaderlab着色器中,您可以将着色器属性公开给编辑器中的材质检查器。这可以通过将要公开的属性放在“属性”部分中来完成,例如...
通过快速搜索,我发现可以扩展MaterialPropertyDrawer
以在着色器检查器中添加自定义标签(参考:https://docs.unity3d.com/ScriptReference/MaterialPropertyDrawer.html。