将float2 / vector2属性从着色器暴露给Unity材质检查器

问题描述 投票:0回答:1

在Unity shaderlab着色器中,您可以将着色器属性公开给编辑器中的材质检查器。可以通过将要公开的属性放置在Properties部分中来完成,例如]

Properties
{
    _SomeFloat("A Float", float) = 5
}

Unity定义documentation here中的属性列表。

但是它不包括任何形式的float2或vector2,仅包含Float的单个Vectorxyzw

我尝试将属性类型设置为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着色器中,您可以将着色器属性公开给编辑器中的材质检查器。这可以通过将要公开的属性放在“属性”部分中来完成,例如...

unity3d shader hlsl shaderlab
1个回答
1
投票

通过快速搜索,我发现可以扩展MaterialPropertyDrawer以在着色器检查器中添加自定义标签(参考:https://docs.unity3d.com/ScriptReference/MaterialPropertyDrawer.html

© www.soinside.com 2019 - 2024. All rights reserved.