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