如何从C#访问着色器的属性范围

时间:2017-10-13 14:11:39

标签: c# unity3d shader

我想创建一个简单的用户界面,用滑块更改着色器中的属性。

我在着色器中声明了一些属性,如下所示:

name ("display name", Range (min, max)) = number

但属性具有不同的范围,并且滑块是根据属性的数量动态创建的。

我想知道是否有办法访问所述着色器属性的范围,以便我可以为我的滑块设置最大值和最小值。

1 个答案:

答案 0 :(得分:2)

即可。这是不可能的。您无法从C#访问Range (min, max)中的范围最小值和最大值。您有两种选择:

1 。在常量变量中对来自C#的最小值,最大值进行硬编码。确保它们与Range (min, max)函数中的值匹配。

2 。对着色器本身的最小值,最大值进行硬编码,然后使用HideInInspector将其隐藏在Inspector中,因为您只需要阅读它们。

[HideInInspector]
min("Min", Float) = 0

[HideInInspector]
max("Max", Float) = 1

现在,您可以使用Material.GetFloat函数将其从C#读取为float。确保它们与Range (min, max)函数中的值匹配。