Unity3D使⽤⼼得(1):ModelImporter的使⽤、在代码中添
加动画⽚段。
在使⽤ Unity3d 倒⼊Fbx模型的时候,动画的动画⽚段需要⾃⼰⼿动添加模型多了以后会是⼀个不⼩的⼯作量。
Unity3d⽀持 编辑器脚本来控制资源导⼊的过程。添加⼀个 AssetPostprocessor 监听其中的 OnPreprocessModel ⽅法,在其中使
⽤ ModelImporter 的 clipAnimations 属性来为导⼊的动画添加动画⽚段。
我的项⽬中美术给的模型中,按类型划分,每⼀个类型都有⼀套动画。我是采⽤的⽅法是 分别将不同类型的模型放置到不同的⽂件夹,通过路径来判断应该添加什么样的动画⽚段。这⾥如果你的项⽬中实现了Unity3d中读取策划填写的表格的话其实也是可以的。这⾥就不展开了。
ModelImporter 的 clipAnimations 属性 接收的是⼀个定长的数组。这⾥我封装了⼀个管理器类⽤于提供⼀个更简洁、代码更少的⽅法创建该数组。
完整代码如下:
1using UnityEngine;
2using System.Collections;
3 using UnityEditor;
4 using System.Collections.Generic;
5
6 public class AnimModelSet : AssetPostprocessor
7 {
8    void OnPreprocessModel()
9    {
10
11        if (assetPath.Contains("FirstPlayers"))
12        {
13            ModelImporter textureImporter = assetImporter as ModelImporter;
14            editorImporterUtil.clipArrayListCreater creater = new editorImporterUtil.clipArrayListCreater();
15            creater.addClip("idle", 0, 50, true, WrapMode.Loop);
16            textureImporter.clipAnimations = Array();
17        }
18    }
19 }
20
21 namespace editorImporterUtil
unity3d animation
22 {
23    public class clipArrayListCreater
24    {
25        private List<ModelImporterClipAnimation> clipList = new List<ModelImporterClipAnimation>();
26        public void addClip(string name, int firstFrame, int lastFrame, bool loop, WrapMode wrapMode)
27        {
28            ModelImporterClipAnimation tempClip = new ModelImporterClipAnimation();
29            tempClip.name = name;
30            tempClip.firstFrame = firstFrame;
31            tempClip.lastFrame = lastFrame;
32            tempClip.loop = loop;
33            tempClip.wrapMode = wrapMode;
34            clipList.Add(tempClip);
35        }
36
37        public ModelImporterClipAnimation[] getArray()
38        {
39            return clipList.ToArray();
40        }
41    }
42
43 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。