2017-10-13 55 views
1

我想用一個簡單的用戶界面來改變我的着色器中的屬性。如何從C中訪問着色器的屬性範圍

我有這樣的着色器宣佈一些屬性:

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

但性質有不同的範圍和滑塊動態創建基於屬性的數目。

我想知道是否有辦法訪問上述着色器屬性的範圍,以便我可以設置我的滑塊的最大值和最小值。

+0

您是否希望在UnityEditor中使用此功能(這應該是可以的),或者在遊戲本身(在這種情況下,接受的答案是正確的) –

回答

2

。這不可能。您無法訪問C#中的Range (min, max)範圍內的最小值和最大值。你有兩種選擇:

。硬編碼C#中的最小值,最大值在一個常量變量中。確保它們與Range (min, max)函數中的值相匹配。

。硬編碼來自着色器本身的最小值,最大值然後使用HideInInspector將它們從Inspector中隱藏起來,因爲您只需要讀取它們。

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

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

您現在可以從C#閱讀它們作爲與Material.GetFloat功能的float。確保它們與Range (min, max)函數中的值相匹配。