用tiled工具可以快速製作關卡地圖,但是,與很多國內的遊戲引擎(cocos/egret等)不同,unity天生並不支援tiled,官方說的要支援,也遲遲沒有發布。於是,就催生了很多第三方的tiled for unity 庫。
在網上搜 tiled unity,收費與不收費的可以找到很多。
其中,排名第一的tiled2unity是非常有特色的乙個。
優點完全開源,完全免費。
自動合併圖塊為mesh
與很多別的外掛程式的做法不同,tiled2unity不是用sprite來表示每乙個圖塊,而是將同一層的圖塊都合併成乙個mesh,然後把整個圖集作為紋理(texture)貼到mesh上。
這樣做的好處是,大大減少gameobject的數量。比如,乙個40x40的圖,如果圖塊覆蓋率是50%,使用sprite物件的話,那就會產生800個物件,而用tiled2unity的方法,每一層(layer)只產生1-2個物件(如果有碰撞盒)
自動合併碰撞盒
除了合併同層的圖塊,tiled2unity還會自動合併同層碰撞盒。
利用乙個第三方庫clipper,tiled2unity可將帶有矩形或者多邊形碰撞盒的圖塊,合併成到同乙個多邊形碰撞盒。這樣就大大減少了collider元件的數量。
自定義unity標籤
通過簡單的自定義屬性,可以方便的修改tag,sortinglayer,layer等屬性。
允許自定義指令碼來完成更複雜的匯入需求
一般來說,每個遊戲都有自己的一套地圖邏輯,與其提供大量的自定義標籤,tiled2unity選擇使用自定義指令碼來實現這個需求。
提供命令列工具,便於自動化匯入
詳盡的教程和文件
tiled2unity 提供了還算比較詳細的使用文件和教程,以及自己的設計思路。
好了,說了一大堆優點,再說幾個缺點:
合併圖塊為mesh
為什麼說這個也是缺點呢。因為,大部分2d遊戲中,我們都是使用sprite來作為渲染元件。
unity中,sprite的shader與普通的mesh所用的shader是不一樣的,最大的區別除了預設不響應光照,還有關閉了z緩衝器,然後引入sortinglayer和order in layer兩個值來控制的前後遮擋關係。所以,sprite物件的z軸的值通常是沒有用。
而mesh方式,預設是使用z緩衝區來做前後遮擋的,所以需要使用z軸的值。為了解決這個問題,tiled2map自己實現了一系列的shader,然後需要使用者在tiled裡使用乙個自定義屬性unity:sortinglayername來規劃好每一層的渲染順序。
這就導致,我們需要
1). 提前在unity中規劃好渲染層級
2). 讓關卡設計人員在tiled中設計好前後層關係,並新增對應的層名。
這使得工作流程產生較大的前後依賴關係,增加了手工工作量,複雜度和溝通的成本,容易產生人為錯誤。這是乙個生產工具的大忌。
在2d遊戲中,混用sprite renderer和mesh renderer
這個是我個人的潔癖,感覺這樣的用法不夠純粹。
可以看到,以上缺點其實也是伴隨著優點產生的,這只是一種策略選擇的問題。因為不管使用什麼策略,都會有它的優點和缺點。這也是我們作為乙個開發人員在技術選型時最需要考慮和評估的地方。
更多unity2018的功能介紹請到paws3d學習中心查詢。
介紹一下Tiled2Unity的優點與缺點
用tiled工具可以快速製作關卡地圖,但是,與很多國內的遊戲引擎 cocos egret等 不同,unity天生並不支援tiled,官方說的要支援,也遲遲沒有發布。於是,就催生了很多第三方的tiled for unity 庫。在網上搜 tiled unity,收費與不收費的可以找到很多。其中,排名第...
介紹一下索引
根據資料庫的功能,可以在 資料庫設計器中建立四種索引 普通索引 唯一索引 主鍵索引和 聚集索引。有關資料庫所支援的索引功能的詳細資訊,請參見資料庫文件。普通索引 這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立 建立索引,例如create index 索引的名字 o...
介紹一下Spring Cloud Config
spring cloud config為分布式系統中的外部配置提供伺服器和客戶端支援。使用config server,您可以在所有環境中管理應用程式的外部屬性。客戶端和伺服器上的概念對映與springenvironment和propertysource抽象相同,因此它們與spring應用程式非常契合...