unity3d 自动变化大小_一种可扩展的Unity3d资源检查方式
unity3d的資源使用是一件十分費(fèi)心的事,通常都需要自動化的手段來檢查與處理資源,以保證游戲性能不會因資源規(guī)格的變化出現(xiàn)劇烈波動。
一般來說貼圖、模型、動作、特效、prefab是最常見的幾種需要按規(guī)范設(shè)置的資源,最簡單的方式是對每一種資源單獨(dú)寫一套處理,這種方式對于規(guī)則固定的情形比較適合,但如果項(xiàng)目很復(fù)雜,經(jīng)常需要對不同用處的資源進(jìn)行不一樣的處理,那就會很麻煩。比如雖然是貼圖,顏色圖與法線圖的處理不一樣,光照圖又是另外一套規(guī)則。按用處,也可能不一樣,比如玩家用的圖和Npc的不一樣,特效的、UI的又是另外幾套等等。另外,還可能有一些特定的資源,沒法按通用規(guī)則處理,而必須針對性的進(jìn)行個(gè)性化特殊設(shè)置。
這時(shí)候,一種可配置的資源處理方式會比較好。很自然的,我想到用DSL元語言來描述這種配置。
考慮前面資源設(shè)置的過程,有兩個(gè)關(guān)鍵,一個(gè)是找出可以使用同一種設(shè)置方法的資源,一個(gè)是不同的資源設(shè)置方法是可配置的。所以資源的處理過程可以分兩步完成:
1、先得到一個(gè)資源集合;
2、逐一用同樣的方法處理。
這就又很像gpu shader了,如果我們是用一個(gè)腳本片斷表示處理方法,處理過程就是對資源集合的每個(gè)資源執(zhí)行一次腳本片斷。如果不需要設(shè)置只是檢查,也是類似的過程,只是輸出不是修改后的資源,而是檢查結(jié)果。
和《基于DSL元語言的地形生成》一樣,這個(gè)腳本也是描述性+解釋執(zhí)行結(jié)合的。也就是采用描述性的方式得到資源集合,然后逐一對各資源調(diào)用腳本片斷進(jìn)行設(shè)置或檢查。實(shí)際上DSL相對于通用語言的最大的不同就是允許定制這種一半描述一半解釋執(zhí)行的腳本。我們以后還會經(jīng)常看到這樣的應(yīng)用形式。
基于DSL元語言設(shè)計(jì)的資源處理腳本類似下面的樣子:
一個(gè)資源處理腳本分為三部分,input為描述性部分,指明了腳本處理的資源類型(用文件擴(kuò)展名識別),以及用于進(jìn)一步過濾資源的一些屬性,資源處理工具可以為這些屬性生成交互界面,允許使用者在處理時(shí)指定。filter部分是用于過濾資源的腳本片斷,它可以使用input部分由使用者指定或默認(rèn)的屬性值。process部分是用于設(shè)置資源的腳本片斷。
這里貼個(gè)資源處理工具的截圖:
【擴(kuò)展】
這種處理方式很顯然可以用于unity3d之外的其他資源,比如策劃配表的檢查(此時(shí)數(shù)據(jù)行是處理的單元)。
這里有一些實(shí)際的資源設(shè)置腳本與資源檢查腳本。
對應(yīng)的資源處理工具的實(shí)現(xiàn)在這里,這個(gè)代碼量還是比較大的,就不貼出來了。
總結(jié)
以上是生活随笔為你收集整理的unity3d 自动变化大小_一种可扩展的Unity3d资源检查方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10装sql2000卡在选择配置_
- 下一篇: bytes转16进制整数 python_