(转)Unity3d使用心得:Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦

Posted slgkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)Unity3d使用心得:Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦相关的知识,希望对你有一定的参考价值。

引言:  

在使用 Unity3d 开发微端、或者网页游戏的时候常常须要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源。今天要分享的是我再动态下载 Animation 骨骼动画的时候走的一些弯路和自己最后的解决方式。

我们的项目中的动画资源有上百套之多,每一套动画大概在300KB 到 900KB 之前,所以有一个非常重要的需求就是动态的下载须要的动画。

错误的方法:

我看到需求后想到的第一种方法是将 FBX 倒入的 Prefab 实例化,将当中的 Animation 通过 ScriptObject 保存成Asset文件,然后导出成 AssetBundle 文件。

在游戏执行的时候将下载回来的 Animation 组件赋值给相应的 GameObject 的 Animation 变量中。

悲剧的是我在这个时候才发现 Animation 存取器是仅仅读的。

 正确的做法:

 导出 Animation 中的 全部AnimationClip 对象作为数组加入到 ScriptObject 中,保存成Asset文件,然后导出成 AssetBundle 文件。在游戏执行时,将下载回来的Clip对象加入到 Animation组件其中完毕动画的动态载入。

AnimationClip 中包括了动画的数据,能够灵活的从Animation中加入删除。

 还有一个看似可行的方法:

  将 Fbx 倒入的 Prefab 实例化的游戏对象中。占用空间较大的数据 —— SkinnedMeshRenderer 组件中 Mesh(网格数据)、Shader 中的 Texture 分别导出成AssetBundle。将删除了这两个数据的剩余的 GameObject 连同动画一起打成一个Prefab。在执行的时候动态的拼装。

假设项目中的动态下载角色资源的方式是这样的方式的话。能够在一定程度上的绕开前文中遇到的问题。可是前一种解决方式是比較准确解决这个问题的一种方案。

以上是关于(转)Unity3d使用心得:Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D初学心得

Unity3d游戏开发unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(转载)

C# WinForm程序中使用Unity3D控件 (转)

[转]unity3D游戏开发之GUI

转UNITY3D 游戏开发之四有关实现2D帧序列帧播放相关—Animating Tiledtexture

转UNITY3D 游戏开发之七C# 中的委托事件匿名函数Lambda 表达式