这两年小游戏割草狂火,3D游戏的角色已经有多个GPU动画插件,这里讲一下spine的优化。
1、Spine要想实现GPU动画,首先就需要转成蒙皮动画,这个是Spiine官方自带的功能。找到一个Spine的SkeletonData文件,点击右上角的三个小点,如下截图:
然后弹出:
点击下面的Bake就能将Spine格式的动画文件转成Unity的蒙皮动画。关于2D的层级问题,我在SkeletonBaker文件 中添加了一下处理:
```csharp
//////////// 利用自身的Layer转换成Mesh顶点的Z值//////////////////////////
Renderer[] renderers = prefabRoot.GetComponentsInChildren<Renderer>(true);
foreach (var item in renderers)
{
int layer = item.sortingOrder;
Debug.LogError("层级 " + layer + " 节点 " + item.gameObject.name);
var sm = item.gameObject.GetComponent<SkinnedMeshRenderer>();
var mr = item.gameObject.GetComponent<MeshRenderer>();
Mesh mesh;
if(sm != null)
{
mesh = sm.sharedMesh;
}
else
{
mesh = item.gameObject.GetComponent<MeshFilter>().sharedMesh;
}
Vector3[] verticles = mesh.vertices;
for (int i = 0; i < verticles.Length; i++)
{
verticles[i] = new Vector3(verticles[i].x, verticles[i].y, -(float)(layer));
}
mesh.SetVertices(verticles);
mesh.RecalculateBounds();
mesh.RecalculateNormals();
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Debug.LogError(prefabRoot.name + " 转换完毕!!!!");
GameObject.DestroyImmediate(prefabRoot);
//////////////////////////////////////////////////////////
添加位置
2、去找个MeshBaker插件,烘焙一下Mesh文件。
3、网上拔一个2D GPU动画烘焙插件,烘焙一下就可以使用了。
这几个步骤只是将Spine转成了GPU动画,工程最终使用还是看自己修改。需要看例子的可以看我上传的资源。没完全没问题,纯属研究玩的。
CSDN有点搞笑了,自己传的资源还需要VIP下载。