Unity3d使用心得(1):ModelImporter的使用、在代码中添加动画片段。
2012-09-25 15:03
204 查看
在使用 Unity3d 倒入Fbx模型的时候,动画的动画片段需要自己手动添加模型多了以后会是一个不小的工作量。
Unity3d支持 编辑器脚本来控制资源导入的过程。添加一个 AssetPostprocessor 监听其中的 OnPreprocessModel 方法,在其中使用 ModelImporter 的 clipAnimations 属性来为导入的动画添加动画片段。
我的项目中美术给的模型中,按类型划分,每一个类型都有一套动画。我是采用的方法是 分别将不同类型的模型放置到不同的文件夹,通过路径来判断应该添加什么样的动画片段。这里如果你的项目中实现了Unity3d中读取策划填写的表格的话其实也是可以的。这里就不展开了。
ModelImporter 的 clipAnimations 属性 接收的是一个定长的数组。这里我封装了一个管理器类用于提供一个更简洁、代码更少的方法创建该数组。
完整代码如下:
1 using UnityEngine; 2using System.Collections;
3 using UnityEditor;
4 using System.Collections.Generic;
5
6 public class AnimModelSet : AssetPostprocessor
7 {
8 void OnPreprocessModel()
9 {
if (assetPath.Contains("FirstPlayers"))
{
ModelImporter textureImporter = assetImporter as ModelImporter;
editorImporterUtil.clipArrayListCreater creater = new editorImporterUtil.clipArrayListCreater();
creater.addClip("idle", 0, 50, true, WrapMode.Loop);
textureImporter.clipAnimations = creater.getArray();
}
}
}
namespace editorImporterUtil
{
public class clipArrayListCreater
{
private List<ModelImporterClipAnimation> clipList = new List<ModelImporterClipAnimation>();
public void addClip(string name, int firstFrame, int lastFrame, bool loop, WrapMode wrapMode)
{
ModelImporterClipAnimation tempClip = new ModelImporterClipAnimation();
tempClip.name = name;
tempClip.firstFrame = firstFrame;
tempClip.lastFrame = lastFrame;
tempClip.loop = loop;
tempClip.wrapMode = wrapMode;
clipList.Add(tempClip);
}
public ModelImporterClipAnimation[] getArray()
{
return clipList.ToArray();
}
}
}
Unity3d支持 编辑器脚本来控制资源导入的过程。添加一个 AssetPostprocessor 监听其中的 OnPreprocessModel 方法,在其中使用 ModelImporter 的 clipAnimations 属性来为导入的动画添加动画片段。
我的项目中美术给的模型中,按类型划分,每一个类型都有一套动画。我是采用的方法是 分别将不同类型的模型放置到不同的文件夹,通过路径来判断应该添加什么样的动画片段。这里如果你的项目中实现了Unity3d中读取策划填写的表格的话其实也是可以的。这里就不展开了。
ModelImporter 的 clipAnimations 属性 接收的是一个定长的数组。这里我封装了一个管理器类用于提供一个更简洁、代码更少的方法创建该数组。
完整代码如下:
1 using UnityEngine; 2using System.Collections;
3 using UnityEditor;
4 using System.Collections.Generic;
5
6 public class AnimModelSet : AssetPostprocessor
7 {
8 void OnPreprocessModel()
9 {
if (assetPath.Contains("FirstPlayers"))
{
ModelImporter textureImporter = assetImporter as ModelImporter;
editorImporterUtil.clipArrayListCreater creater = new editorImporterUtil.clipArrayListCreater();
creater.addClip("idle", 0, 50, true, WrapMode.Loop);
textureImporter.clipAnimations = creater.getArray();
}
}
}
namespace editorImporterUtil
{
public class clipArrayListCreater
{
private List<ModelImporterClipAnimation> clipList = new List<ModelImporterClipAnimation>();
public void addClip(string name, int firstFrame, int lastFrame, bool loop, WrapMode wrapMode)
{
ModelImporterClipAnimation tempClip = new ModelImporterClipAnimation();
tempClip.name = name;
tempClip.firstFrame = firstFrame;
tempClip.lastFrame = lastFrame;
tempClip.loop = loop;
tempClip.wrapMode = wrapMode;
clipList.Add(tempClip);
}
public ModelImporterClipAnimation[] getArray()
{
return clipList.ToArray();
}
}
}
相关文章推荐
- Unity3D使用心得(1):ModelImporter的使用、在代码中添加动画片段。
- Unity3d使用心得(1):ModelImporter的使用、在代码中添加动画片段。
- Unity3D使用心得(1):ModelImporter的使用、在代码中添加动画片段。
- (转)Unity3d使用心得(1):ModelImporter的使用、在代码中添加动画片段。
- ModelImporter的使用、在代码中添加动画片段
- XCode: 添加自定义代码片段到Code Snippets Library(常见代码段高效使用)
- (转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦
- VS2015使用技巧 为console.readkey添加代码片段
- VS2015使用技巧 为console.readkey添加代码片段
- Visual Studio 核心代码模型(Addin+CodeModel)使用心得
- Sublime Text 2使用:如何为它添加编译环境(如Lua编译环境)和代码片段
- UIView基础动画(推荐多使用Block)---能实现很多效果,透明--不透明 缩放--从无到整 Block之间添加代码也就是开始动画与结束动画之间
- (转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦
- Sublime Text 2使用:如何为它添加编译环境(如Lua编译环境)和代码片段
- Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用
- Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- Unity3d 梦魇射手--动画贞添加 “贞”点获取脚本代码
- uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
- Visual Studio 核心代码模型(Addin+CodeModel)使用心得 .