简要代码如下:

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);
}
}
}

具体代码根据项目需求进行定制~

  

批量修改Project视图中Prefab的名字的更多相关文章

  1. [SQL]批量修改存储过程视图

    存储过程与视图适用 ); )='w_sp_Sms_ExpeOrKeepEmpl'; DECLARE C_TABLES CURSOR FAST_FORWARD FOR SELECT NAME FROM ...

  2. Unity查找Editor下Project视图中特定的资源

    [MenuItem("Tools/Check Text Count")] public static void CheckText () { //查找指定路径下指定类型的所有资源, ...

  3. Unity3D Editor模式下批量修改prefab

    最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的.废话不多说直接上代码: [ExecuteInEditM ...

  4. 如何在Protel99se中批量修改元件的封装

    有时候需要批量修改元件的封装,可在原理图和PCB中批量修改.本文以批量修改电阻AXIAL0.3 的封装为AXIAL0.4 为例. 1. 在原理图中批量修改1.1. 方法1双击需要修改封装的其中一个元件 ...

  5. Unity3D中Prefab

    Prefab概念: Prefab是一种资源类型--存储在项目视图中的一种可反复使用的游戏对象.因而当游戏中须要非常多反复使用的对象.资源等时,Prefab就有了用武之地.它拥有下面特点: 能够放到多个 ...

  6. 3D Slicer Hide 3D Cube and Axis Labels Programmatically 使用代码隐藏三维视图中的方框和坐标轴标签

    在3D Slicer中,我们如果想在自己写的插件中来修改三维视图中的默认设置的话,那么首先就需要获得三维视图的结点,其类型为vtkMRMLViewNode,获得了这个结点后,我们就可以用代码来修改一系 ...

  7. [Unity工具]批量修改Texture

    BatchModifyTexture.cs using UnityEngine; using System.Collections; using UnityEditor; using System.I ...

  8. rename 批量修改文件名

    1.rename的用法 rename与mv的区别就是mv只能对单个文件重命名,而rename可以批量修改文件名 linux中的rename有两种版本,一种是C语言版的,一种是Perl版的.早期的Lin ...

  9. bat批量修改图片的名字实现(两种方法)

    问题描述: 业务中遇到需要批量修改大量图片的名字. 如下图,需要修改为图片名字“u=”之后和“,”之前的那一串 解决思路1: bat批处理,网上查找相关代码如下: @echo off SetLocal ...

随机推荐

  1. java封装性

    原先是class Person{ public string name; public  int age } public void main{ Person person=new person(); ...

  2. 重学JAVA基础(七):线程的wait、notify、notifyAll、sleep

    /** * 测试thread的wait notify notifyAll sleep Interrupted * @author tomsnail * @date 2015年4月20日 下午3:20: ...

  3. android: PendingIntent的使用

    PendingIntent的Flags的类型: * Flags的类型: FLAG_ONE_SHOT:得到的pi只能使用一次,第二次使用该pi时报错 FLAG_NO_CREATE: 当pi不存在时,不创 ...

  4. linux环境内存分配原理 mallocinfo

    Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...

  5. Initializing a collection

    Before Java 1.7, only this one is permitted: ArrayList<String> a = new ArrayList<String> ...

  6. mysql 优化配置参数详解

    在 my.cnf 文件中 各设置参数的含义如下: innodb_data_home_dir 这是InnoDB表的目录共用设置.如果没有在 my.cnf 进行设置,InnoDB 将使用MySQL的 da ...

  7. Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入) 转

    http://www.crazyant.net/2011/10/29/linux%E4%B8%8Bgcc%E5%92%8Cmakefile%E5%AE%9E%E4%BE%8B%EF%BC%88%E4% ...

  8. 线程互斥与析构函数中mutex的销毁

    正在实现一个线程池的pthread包装器,突然发现有人在讨论关于http://blog.csdn.net/Solstice/article/details/5238671 是一篇比较老的文章,考虑了下 ...

  9. 寻找倒数第K个结点

    #include<stdio.h> #include<iostream> using namespace std; /** * 找到链表中的倒数第k个节点 */ //定义结构体 ...

  10. EventBus 3.0使用

    在没用eventBus之前一直用Android广播方式通知消息更新UI 广播写法 首先发送广播通知 Intent intent = new Intent(); intent.setAction(&qu ...