中如何不寫guieditor就能實現的預定義ui。
1、寫在前面
出於效能原因,editorguilayout 函式不能與 materialpropertydrawers 一起使用。
2、enum類(列舉)
列舉,最多可指定 7 個名稱。常用的列舉類如下。
當然也可以自定義列舉,可以通過keywrod來控制。
混合模式
[enum(unityengine.rendering.blendop)] _blendop ("blendop", float) = 0
[enum(unityengine.rendering.blendmode)] _srcblend ("srcblend", float) = 1
[enum(unityengine.rendering.blendmode)] _dstblend ("dstblend", float) = 0
深度開關
[enum(off, 0, on, 1)]_zwritemode ("zwritemode", float) = 1
zwritemode是沒有內建的,實際上也只有on和off兩個狀態,所以用toogle其實也可以,我這裡是直接用[enum(off, 0, on, 1)]這樣的寫法宣告了個新的自定義enum
剔除模式
[enum(unityengine.rendering.cullmode)]_cullmode ("cullmode", float) = 2
深度測試
[enum(unityengine.rendering.comparefunction)]_ztestmode ("ztestmode", float) = 4
顏色通道寫入遮罩
[enum(unityengine.rendering.colorwritemask)]_colormask ("colormask", float) = 15
[enum(unityengine.rendering.comparefunction)]_stencilcomp ("stencil comparison", float) = 8
[enum(unityengine.rendering.stencilop)]_stencilpass ("stencil pass", float) = 0
[enum(unityengine.rendering.stencilop)]_stencilfail ("stencil fail", float) = 0
[enum(unityengine.rendering.stencilop)]_stencilzfail ("stencil zfail", float) = 0
3、intrange
顯示乙個適用於 range 著色器屬性的整數滑動條。
[intrange]_stencilwritemask ("stencil write mask", range(0,255)) = 255
[intrange]_stencilreadmask ("stencil read mask", range(0,255)) = 255
[intrange]_stencil ("stencil id", range(0,255)) = 0
4、header
顯示乙個頭部名稱。
[header()]
[header(a group of things)] _prop1 ("prop1", float) = 0
不支援漢字,數字以及大部分符號
在著色器屬性之前建立乙個標題文字。
5、space
在著色器屬性之前建立垂直空間。
[space] _prop1 ("prop1", float) = 0
[space(50)] _prop2 ("prop2", float) = 0
6、keywordenum
關鍵字列舉,並啟用相應的著色器關鍵字。它可在著色器中與「#pragma multi_compile」配合使用,以啟用或禁用部分著色器**。每個名稱都將 採用「屬性名」+ 下劃線 +「列舉名」這種形式的大寫著色器關鍵字。最多可提供 9 個名稱。
[keywordenum(none, add, multiply)] _overlay ("overlay mode", float) = 0
#pragma multi_compile _overlay_none _overlay_add _overlay_multiply
7、toggle類(開關)
以開關形式顯示浮點值。屬性值為 0 或 1,具體取決於開關狀態。當開關處於開啟狀態時,將設定乙個帶有大寫屬性名稱 +「_on」 的著色器關鍵字,或者乙個顯式指定的著色器關鍵字。
[toggle] _invert ("invert?", float) = 0
[toggle(enable_fancy)] _fancy ("fancy?", float) = 0
8、powerslider
[powerslider(3.0)] _shininess ("shininess", range (0.01, 1)) = 0.08
顯示乙個具有對應於 range 著色器屬性的非線性響應的滑動條。意思就是,讓range滑桿更加方便調整細微的值。以[powerslider(1.0)]為分界,當值為1.0時,效果與range一致。當值<1.0時,值越大可調整的範圍越大。當值》1.0時,值越小可調整的範圍越大。可以更精細地在這些區間進行微調。
當值為0.1時
當值為10時
powerslider值類似曲線的控制值,值越大,小值的範圍越好調整,值越小,大值的可調整範圍越大。
預定義,巨集定義
巨集定義 其作用就是 換其名曰 給程式中的一段特殊的 函式,資料取了個簡單明瞭的名字。不過有一點這傢伙的作用範圍是全域性的。即使它是在某乙個函式塊中定義的。這個其實也容易理解。因為巨集定義是預定義的一種,在我們的程式之前,由預編譯器 cpp 提前編譯出來了,那個時候程式裡的結構是個啥樣子編譯器壓根就...
預定義知識
1.巨集指令 define error import undef elif if include else ifdef line endif ifndef pragma 2 define define width 80 define length width 10 define test f1,f2...
預定義知識
預定義知識 寫於2005年12月26日 1.巨集指令 define error import undef elif if include else ifdef line endif ifndef pragma 2 define define width 80 define length width ...