===注意===
这篇文章说的是老版本的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帧了...