批量修改Project视图中Prefab的名字
2024-10-11 21:40:20
简要代码如下:
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Collections;
using System.Collections.Generic; public class RenameEffect
{
[MenuItem("XiYouEditor/Effect/RenameEffect-AddPrefix")]
static void Execute()
{
foreach (Object o in Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets))
{
if (!(o is Object))
continue;
AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(o), "P-" + o.name);
}
}
}
其处理拷贝动作文件:
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Collections;
using System.Collections.Generic; public class AnimationBatch
{
[MenuItem("XiYouEditor/Animation/Copy Batch")]
static void Execute()
{
List<string> lstAnimName = new List<string>(); foreach (Object o in Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets))
{
if (!(o is GameObject))
continue;
if (!o.name.Contains("@"))
continue; GameObject charFbx = (GameObject)o; string strClipName = charFbx.name;
int nIndex = strClipName.LastIndexOf('@');
strClipName = strClipName.Substring(nIndex + , strClipName.Length - nIndex - ); AnimationClip newClip = new AnimationClip();
EditorUtility.CopySerialized(charFbx.animation.GetClip(strClipName), newClip); string strNewAnim = AssetDatabase.GetAssetPath(charFbx);
strNewAnim = strNewAnim.Substring(, strNewAnim.LastIndexOf('/') + );
strNewAnim += strClipName;
strNewAnim += ".anim"; if(!File.Exists(strNewAnim))
AssetDatabase.CreateAsset(newClip, strNewAnim); lstAnimName.Add(strClipName);
} foreach (Object o in Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets))
{
if (!(o is GameObject))
continue;
if (o.name.Contains("@"))
continue; GameObject charFbx = (GameObject)o; string CharDirPath = AssetDatabase.GetAssetPath(charFbx);
CharDirPath = CharDirPath.Substring(, CharDirPath.LastIndexOf('/') + ); // 清空默认动作
charFbx.animation.clip = null; foreach (string name in lstAnimName)
{
AnimationClip DestClip = (AnimationClip)AssetDatabase.LoadAssetAtPath(CharDirPath + name + ".anim", typeof(AnimationClip));
charFbx.animation.RemoveClip(name);
charFbx.animation.AddClip(DestClip, name);
} // 重设默认动作
AnimationClip defaultClip = charFbx.animation.GetClip("Idle1");
if (defaultClip != null)
charFbx.animation.clip = defaultClip; charFbx.animation.cullingType = AnimationCullingType.AlwaysAnimate; EditorUtility.SetDirty(o);
}
}
}
具体代码根据项目需求进行定制~
最新文章
- MySQL入门04-MySQL主从配置
- sqlalchemy多表联合查询(join)
- 由pthread_create引起的段错误
- 解决jQuery ajax跨域问题,Google、IE、Firefox亲测有效
- angularJS自定义指令间的“沟通”
- [SAP ABAP开发技术总结]日期函数
- 项目ppt演讲与阶段性总结
- struts1 和 struts2中Action什么时候实例化
- code manager tools svn服务安装配置
- AE开发 入门教程
- 自定义ShareDialog视图
- 理解hadoop的Map-Reduce数据流(data flow)
- ASP.NET MVC轻教程 Step By Step 12——客户端验证
- Oracle临时表on commit preserver rows和on commit delete rows区别
- 提高Delphi的编译速度(bpl和bcp)
- Handler总结
- hdu3974(线段树+dfs)
- 第二章	JavaScript核心语法
- 本地复现Flash 0day漏洞(CVE-2018-4878)
- Mybatis框架基础支持层——反射工具箱之Reflector&;ReflectorFactory(3)