===注意===
這篇文章說的是老版本的live2d,新版本的尚在研究中
==========
好久沒有寫博客了,前段時間找到了一個二次元手游開發的工作,職位是客戶端主程(雖然工資不高就是了),作為個unity新人現在想想還是有點后怕,不過車到山前必有路嘛。
言歸正傳,這次的項目中用到了live2d,總的來說導入的很順利,也沒碰上什么坑~
首先這里有對應的教程和sdk下載(需翻牆):
http://www.live2d.com/usermanual/cubism2_cn/lets-do-it/my-first-lapp.html
SDK里包括了幾個demo,不要一口氣把里面的東西全部拖到unity工程里,會報錯,sample文件夾下面的每個文件夾都是單獨的工程,每次選一個就行了。
官網里提供了兩種繪制live2d模型的方式,分別是L2D_RENDER_DRAW_MESH和L2D_RENDER_DRAW_MESH_NOW。看了一下文檔是比較推薦第二種的,這種方式用sdk里提供的方式在OnRenderObject方法中進行繪制,同時官方文檔也提到了這種方法的缺點在於不能在live2d上繪制其他物體。
當然在項目中肯定不能愣愣的把live2d放在最上層,好在unity提供了一個叫做Render Texture的東西。這個東西簡單的理解就是一張圖片資源,但里面的東西是動態的,可以把相機接受到的畫面放在上面。(你想到了什么?對,很多游戲的小地圖就是用一個高空相機,再把畫面用RenderTexture轉換到GUI里面)
那么首先在自己的Resources目錄下新建一個RenderTexture,隨后在場景中新建一個相機和一個放live2d腳本的空物體。
相機上的設置如下:
空物體設置:
然后運行,發現RenderTexture里沒顯示東西。
怎么回事呢?原因在於改變物體的Layer不能改變Live2D影像的Layer,而是要在代碼里加一句
live2DModel.setLayer(int layer);
這樣才能設置live2d影像的layer。
最后就可以把設置好的RenderTexture當做普通圖片那樣來顯示影像了,也可以很簡單的做層級管理。
最后附上實現圖,可以看到圖像很好的嵌入到UI的層級中了,嘿嘿~
話說回來,這玩意還挺吃資源的。。本來項目能跑1000幀的,加上去就只能跑300幀了...