1
我想用一個簡單的用戶界面來改變我的着色器中的屬性。如何從C中訪問着色器的屬性範圍
我有這樣的着色器宣佈一些屬性:
name ("display name", Range (min, max)) = number
但性質有不同的範圍和滑塊動態創建基於屬性的數目。
我想知道是否有辦法訪問上述着色器屬性的範圍,以便我可以設置我的滑塊的最大值和最小值。
我想用一個簡單的用戶界面來改變我的着色器中的屬性。如何從C中訪問着色器的屬性範圍
我有這樣的着色器宣佈一些屬性:
name ("display name", Range (min, max)) = number
但性質有不同的範圍和滑塊動態創建基於屬性的數目。
我想知道是否有辦法訪問上述着色器屬性的範圍,以便我可以設置我的滑塊的最大值和最小值。
否。這不可能。您無法訪問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)
函數中的值相匹配。
您是否希望在UnityEditor中使用此功能(這應該是可以的),或者在遊戲本身(在這種情況下,接受的答案是正確的) –