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

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

      

  • 相关阅读:
    VS2019 离线安装方法详解
    VS2019 实用操作
    WIN7 X64位系统安装SQL SERVER2008失败总结
    给reportview传参数的操作过程
    山寨dell mini 3i的问题
    sql backup
    基于wince.net的环境,使用pocketBuilder调用webservice所需安装环境和步骤
    写了一个通用的用户选择页面,记录一下调用方法
    回顾这几年开发医药CRM的历程
    Cumulative Update package 3 for SQL Server 2008 R2三个补丁下载地址,官网下载不直接给地址,不知为什么
  • 原文地址:https://www.cnblogs.com/sifenkesi/p/3544374.html
Copyright © 2011-2022 走看看