在unity项目中使用live2D,以及Render Texture的简单使用。

  ===注意===

  这篇文章说的是老版本的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脚本的空物体。

  相机上的设置如下:

  在unity项目中使用live2D,以及Render Texture的简单使用。_第1张图片

  空物体设置:

  在unity项目中使用live2D,以及Render Texture的简单使用。_第2张图片

  然后运行,发现RenderTexture里没显示东西。

  怎么回事呢?原因在于改变物体的Layer不能改变Live2D影像的Layer,而是要在代码里加一句

  live2DModel.setLayer(int layer);

  这样才能设置live2d影像的layer。

  最后就可以把设置好的RenderTexture当做普通图片那样来显示影像了,也可以很简单的做层级管理。

  最后附上实现图,可以看到图像很好的嵌入到UI的层级中了,嘿嘿~

  

话说回来,这玩意还挺吃资源的。。本来项目能跑1000帧的,加上去就只能跑300帧了...

转载于:https://www.cnblogs.com/Swallowtail/p/6514421.html

你可能感兴趣的:(在unity项目中使用live2D,以及Render Texture的简单使用。)