您好,登錄后才能下訂單哦!
這篇文章主要介紹了LWGUI是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
如題,Unity有很多Shader插件經(jīng)常能看見(jiàn)1000行Shader卻有2000行ShaderGUI的情況,而對(duì)GUI接口不熟悉的人想改動(dòng)GUI又很困難。為了寫(xiě)更少的代碼,更簡(jiǎn)單靈活地排版ShaderGUI,我開(kāi)發(fā)了這個(gè)工具:
使用了內(nèi)置MaterialPropertyDrawer接口,參考了內(nèi)置Drawer實(shí)現(xiàn),踩了無(wú)數(shù)坑之后總算能用了。使用時(shí)只需在Shader Property前加上前綴即可實(shí)現(xiàn)各種自定義ShaderGUI,寫(xiě)Shader的同時(shí)進(jìn)行排版,不同Shader互不相干。Shader末尾需要添加CustomEditor "JTRP.ShaderDrawer.LWGUI"
。LWGUI內(nèi)置于JTRP,Github:https%3A//github.com/Jason-Ma-233/JasonMaToonRenderPipeline/tree/master/Assets/JTRP/Editor/Drawer。
Function List:
/// 創(chuàng)建一個(gè)折疊組
/// group:group key,不提供則使用shader property name
/// keyword:_為忽略,不填和__為屬性名大寫(xiě) + _ON
/// style:0 默認(rèn)關(guān)閉;1 默認(rèn)打開(kāi);2 默認(rèn)關(guān)閉無(wú)toggle;3 默認(rèn)打開(kāi)無(wú)toggle
Main(string group = "", string keyWord = "", float style = 0)
/// 在折疊組內(nèi)以默認(rèn)形式繪制屬性
/// group:父折疊組的group key,支持后綴KWEnum或SubToggle的KeyWord以根據(jù)enum顯示
Sub(string group)
/// n為顯示的name,k為對(duì)應(yīng)KeyWord,最多5組,float值為當(dāng)前激活的KeyWord index(0-4)
KWEnum(string group, string n1, string k1, ... string n5, string k5)
/// 以單行顯示Texture,支持額外屬性
/// extraPropName:需要顯示的額外屬性名稱
Tex(string group = "", string extraPropName = "")
/// 支持并排最多4個(gè)顏色,支持HDR/HSV
/// parameter:填入HSV則將當(dāng)前顏色轉(zhuǎn)換為HSV顏色傳入Shader,無(wú)需則填"_"
/// color:可選額外顏色的property name
/// 注意:更改參數(shù)需要手動(dòng)刷新Drawer實(shí)例,在shader中隨意輸入字符引發(fā)報(bào)錯(cuò)再撤銷(xiāo)以刷新Drawer實(shí)例
Color(string group, string parameter, string color2, string color3, string color4)
/// 以SubToggle形式顯示float
/// keyword:_為忽略,不填和__為屬性名大寫(xiě) + _ON
SubToggle(string group, string keyWord = "")
/// 同內(nèi)置PowerSlider,非線性Range
SubPowerSlider(string group, float power = 1)
/// 同內(nèi)置Header,僅與LWGUI共同使用
Title(string group, string header)
/// 繪制float以更改Render Queue
[Queue]
目前不支持折疊組嵌套,函數(shù)名帶Sub的函數(shù)一般只支持在折疊組下顯示,不帶Sub的函數(shù)group參數(shù)填“_”以在折疊組外顯示,另外Decorator與內(nèi)置Drawer不兼容,比如Header只應(yīng)在默認(rèn)屬性上使用,在LWGUI修飾的屬性上應(yīng)使用Title,否則顯示可能會(huì)出錯(cuò)。
如需實(shí)現(xiàn)自己的Drawer,可以參考JTRP\Editor\Drawer\ShaderDrawer.cs。SubDrawer類(lèi)提供了與MainDrawer配套使用的功能。請(qǐng)注意:
重寫(xiě)matchPropType以篩選特定的屬性類(lèi)型以繪制,返回false則會(huì)以默認(rèn)方式繪制
重寫(xiě)DrawProp以自定義方式繪制屬性,JTRP\Editor\Drawer\DrawerUtility.cs提供了一些工具函數(shù)
GetPropertyHeight函數(shù)在使用EditorGUILayout.GetControlRect()后不起作用,一般推薦使用GetControlRect而無(wú)需理會(huì)Height
EditorGUI.showMixedValue控制了選擇多個(gè)材質(zhì)球的情況下的繪制方式
EditorGUIUtility.labelWidth = 0時(shí)MaterialEditor.GetRectAfterLabelWidth才會(huì)得到期望的結(jié)果
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“LWGUI是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。