zoukankan      html  css  js  c++  java
  • 批量修改Project视图中Prefab的名字

    简要代码如下:

    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 + 1, strClipName.Length - nIndex - 1);
                
                AnimationClip newClip = new AnimationClip();
                EditorUtility.CopySerialized(charFbx.animation.GetClip(strClipName), newClip);
                
                string strNewAnim = AssetDatabase.GetAssetPath(charFbx);
                strNewAnim = strNewAnim.Substring(0, strNewAnim.LastIndexOf('/') + 1);
                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(0, CharDirPath.LastIndexOf('/') + 1);
    
                // 清空默认动作
                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);
            }
        }
    }

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

      

  • 相关阅读:
    [zjoi]青蛙的约会_扩展欧几里德
    [coci2012]覆盖字符串 AC自动机
    出题日志
    [zjoi2003]密码机
    矩阵乘法
    洛谷 P1064 金明的预算方案
    洛谷 P1656 炸铁路
    洛谷 P1049 装箱问题
    最长上升子序列(LIS)与最长公共子序列(LCS)
    求最大公约数与最小公倍数
  • 原文地址:https://www.cnblogs.com/sifenkesi/p/3544374.html
Copyright © 2011-2022 走看看