当前位置:网站首页>【unity编译器扩展之模型动画拷贝】
【unity编译器扩展之模型动画拷贝】
2022-08-05 00:02:00 【的成长之路】
首先得拿到要拷贝动画的模型,路径或者object
有一些类不熟悉的直接查官方API:unity官方API
关键类:AssetDatabase,AssetImporter
如果是UnityEngine.Object 类型的文件话,可以直接使用
AssetDatabase.GetAssetPath(Object):拿到文件路径(相对路径)
AssetDatabase.LoadAllAssetsAtPath(path):可以直接拿到文件身上的组件,例如FBX文件身上的AnimationClip等(相对路径)
AssetImporter.GetAtPath(Path):可以通过路径获取资源(相对路径),AssetImporter类下有多个子类,对于各种unity资源,可以转换
AnimatorController :动画状态机(动画控制器)
首先获得模型身上的动画
List<AnimationClip> tempAnim= new List<AnimationClip>;
UnityEngine.Object[] objs = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(fbx));
foreach(var item in objs){
if(item is AnimationClip){
tempAnim.Add(item);
}
}
拿到模型后去选择我们要拷贝的某个动画,我这就默认随便选择一个了,如果是选择多个,那么就同理就好
然后进行拷贝
拷贝需要拿到新拷贝的名字,和要拷贝的动画,还有就是模型的路径或者模型本身
static void CopyAnimationClip(UnityEngine.Object obj, string clipName, string newName)
{
string path = AssetDatabase.GetAssetPath(obj);
ModelImporter modelImporter = AssetImporter.GetAtPath(path) as ModelImporter;
if. (modelImporter.clipAnimations = null && modelImporter.clipAnimations.Length › 0)
{
ModelImporterClipAnimation[] clips = new ModelImporterClipAnimation(modelImporter.clipAnimations.Length+1];
modelImporter.clipAnimations.CopyTo(clips,0);
List<ModelImporterClipAnimation> clipList = new List<ModelImporterClipAnimation>(modelImporter.clipAnimations);
ModelImporterClipAnimation srcClip = clipList.Find( (× ) =› ( return x.name.Equals (clipName); });
ModelImporterClipAnimation newClip = new ModelImporterClipAnimation();
Type t = newClip.GetType();
foreach (var item Propertyinfo in srcClip.GetType().GetProperties())
{
if (item.GetSetMethod (false) == null)
continue;
if (item.GetValue(srcClip) == null)
continue;
t.GetProperty(item Name). SetValue ( newClip, item.GetValue(srcClip));
}
newClip.name = newName;
clips[clips. Length - 1] = newClip;
modelImporter.clipAnimations = clips;
AssetDatabase.ImportAsset(path);
AssetDatabase.Refresh();
}
}
代码纯手敲,有问题该巴该巴就好了
边栏推荐
- 情人节---快来学习一下程序员的专属浪漫吧
- 学会反射后,我被录取了(干货)
- 网站最终产品页使用单一入口还是多入口?
- 【七夕情人节特效】-- canvas实现满屏爱心
- 数据类型及输入输出初探(C语言)
- The applicable scenarios and common product types of the KT148A electronic voice chip ic solution
- Xiaohei's leetcode journey: 95. Longest substring with at least K repeating characters
- 4 - "PyTorch Deep Learning Practice" - Backpropagation
- Vscode连接远程服务器(一套配置成功)
- 矩阵数学原理
猜你喜欢

What is next-generation modeling (with learning materials)

3. Actual combat---crawl the result page corresponding to Baidu's specified entry (a simple page collector)

Bidding Announcement | Operation and Maintenance Project of Haina Baichuang Official Account

jenkins发送邮件系统配置

KT148A voice chip ic working principle and internal architecture description of the chip

uniapp sharing function - share to friends group chat circle of friends effect (sorting)

MongoDB permission verification is turned on and mongoose database configuration

Develop a SpaceX website based on the Appian low-code platform
![情侣牵手[贪心 & 抽象]](/img/7d/1cafc000dc58f1c5e2e92150be7953.png)
情侣牵手[贪心 & 抽象]
Handwritten Distributed Configuration Center (1)
随机推荐
如何写好测试用例
中日颜色风格
uniapp sharing function - share to friends group chat circle of friends effect (sorting)
什么是次世代建模(附学习资料)
2022年华数杯数学建模
Basic web in PLSQL
Metasploit-域名上线隐藏IP
Handwritten Distributed Configuration Center (1)
图解 Canvas 入门
KT148A语音芯片怎么烧录语音进入芯片里面通过串口和电脑端的工具
资深游戏建模师告知新手,游戏场景建模师必备软件有哪些?
【数据挖掘概论】数据挖掘的简单描述
MongoDB permission verification is turned on and mongoose database configuration
【云原生--Kubernetes】Pod控制器
uniapp横向选项卡(水平滚动导航栏)效果demo(整理)
招标公告 | 海纳百创公众号运维项目
建模师经验分享:模型学习方法
KT148A语音芯片ic工作原理以及芯片的内部架构描述
【CVA估值训练营】财务建模指南——第一讲
【无标题】