Unity 批量修改命名(重命名)

这篇具有很好参考价值的文章主要介绍了Unity 批量修改命名(重命名)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 效果展示

unity 批量改名,Unity开发,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-518671.html

二、代码

#if UNITY_EDITOR
using System.IO;
using UnityEditor;
using UnityEngine;

namespace CustomEditorWindow
{
    public class RenameTool : EditorWindow
    {
        #region members
        private Vector2 scrollPos;
        private int charSize;
        private string targetName = string.Empty;
        private string startNum_str = "0";
        private int startNum_int = 0;
        #endregion
        #region get window
        [MenuItem("Tools/Rename Tool")]
        private static void OpenWindow()
        {
            GetWindow<RenameTool>("Rename Tool").Show();
        }
        #endregion
        #region render the window
        private void OnGUI()
        {
            scrollPos = GUILayout.BeginScrollView(scrollPos);
            {
                #region tool title
                charSize = GUI.skin.label.fontSize;
                GUI.color = Color.yellow;
                GUILayout.Space(10);                
                GUI.skin.label.fontSize = 24;
                GUI.skin.label.alignment = TextAnchor.MiddleCenter;
                GUILayout.Label("Rename Tool");
                GUI.skin.label.fontSize = charSize;
                GUI.skin.label.alignment = TextAnchor.MiddleLeft;
                GUI.color = Color.white;
                GUILayout.Space(20);
                #endregion

                GUILayout.BeginVertical();
                {
                    #region text input
                    GUILayout.BeginHorizontal();
                    {
                        GUILayout.Label("Name Style: ");
                        GUILayout.FlexibleSpace();
                        targetName = GUILayout.TextField(targetName, GUILayout.Width(140));
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.Space(10);

                    GUILayout.BeginHorizontal();
                    {
                        GUILayout.Label("Start Number: ");
                        GUILayout.FlexibleSpace();
                        startNum_str = GUILayout.TextField(startNum_str, GUILayout.Width(60));
                        try
                        {
                            startNum_int = int.Parse(startNum_str);
                        }
                        catch
                        {

                        }
                    }
                    GUILayout.EndHorizontal();
                    #endregion
                    #region button
                    GUILayout.Space(30);
                    bool hasObject = (Selection.objects.Length > 0);
                    GUI.enabled = hasObject;

                    GUILayout.FlexibleSpace();
                    if (!hasObject)
                    {
                        GUI.color = Color.red;
                        GUILayout.Button("No Selected Objects!");
                        GUI.color = Color.white;

                    }
                    else
                    {
                        if (GUILayout.Button("Rename"))
                        {
                            Rename(targetName, startNum_int);
                        }
                    }
                    GUILayout.Space(20);
                    #endregion
                }
                GUILayout.EndVertical();
            }
            GUILayout.EndScrollView();
        }
        #endregion
        #region Rename Function
        private void Rename(string t_name, int t_index)
        {
            string name = t_name.Trim();//去除头尾空白字符串
            int index = t_index;
            if ((name + index) != string.Empty)//若名字不为空
            {
                bool isAssetsObject = false;//flag, 是否是assets文件夹的资源

                foreach (Object o in Selection.objects)
                {
                    string path_g = AssetDatabase.GetAssetPath(o);//获得选中物的路径
                    //查看路径后缀
                    if (Path.GetExtension(path_g) != "")//若后缀不为空, 则为assets文件夹物体
                    {
                        if (name.Length >=2 && name.Substring(0, 2) == "m_")// m_ 开头会被吞
                        {
                            //用 M_ 修正
                            string temp_name = name.Remove(0, 1);
                            name = temp_name.Insert(0, "M");
                        }
                        AssetDatabase.RenameAsset(path_g, name + index);//改名API
                        if (!isAssetsObject)
                        {
                            isAssetsObject = true;//修改flag
                        }
                    }
                    else//后缀为空, 是场景物体
                    {
                        o.name = name + index;
                    }
                    index++;
                }
                if (isAssetsObject)//若是assets文件夹资源, 则刷新assets
                {
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();
                }
            }
        }
        #endregion
    }
}
#endif

到了这里,关于Unity 批量修改命名(重命名)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 吐槽laya:H5小游戏开发应该用什么引擎好?laya、cocos还是unity?

    我看有人推荐laya,放在H5小游戏的前三排名,这压根不靠谱。 laya只能算个半成品,整体非常垃圾,如果是首次选择游戏引擎,至少转去cocos,实在选laya,那也没办法了。 下面说说laya有什么问题,如果只是一些简单的bug什么的,我是不会花这个时间吐槽的,但是如下的问题实

    2024年02月13日
    浏览(48)
  • 游戏开发常用引擎工具介绍对比区别(UE4,Unity,Cocos,LayaAir,[egret-白鹭])

    是一套为开发实时技术而存在的引擎工具。目前广泛应用于3D建模渲染、游戏开发中。它完善的工具套件以及简易的工作流程能够使开发者快速修改或查看成果,对于代码的依赖性很低。而完整公开的源代码则能让使用者自由修改和扩展引擎功能。 是面向开发人员的 3D/2D 游戏

    2024年02月13日
    浏览(46)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(一)

    目录 一、引言 C语言在游戏开发中的重要地位与优势 游戏引擎插件机制与C语言的价值 二、C语言基础与游戏开发特性 C语言核心特性及其在游戏开发中的应用 游戏引擎API对接关键概念与技巧 C语言在游戏开发领域占据着无可替代的重要地位,尤其在应对高性能计算需求与底层

    2024年04月29日
    浏览(54)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(四)

    目录 一、C插件开发最佳实践与常见问题解析 性能优化: 跨平台兼容性: 版本管理与升级: 二、结论 C语言在游戏引擎插件开发中的关键作用与优势: 对开发者提出建议: 性能优化: 内存管理: 智能指针 :利用UE的 TSharedPtr 、 TWeakPtr 等智能指针管理动态内存,确保资源释

    2024年04月27日
    浏览(38)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(51)
  • 【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject 上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; 在 C# 脚本中 , 游戏物体

    2023年04月12日
    浏览(59)
  • Unity引擎修改模型顶点色的工具

    大家好,我是阿赵。   之前分享过怎样通过MaxScript在3DsMax里面修改模型的顶点色。不过由于很多时候顶点色的编辑需要根据在游戏引擎里面的实际情况和shader的情况来动态调整,所以如果能在引擎里面直接修改模型的顶点色,将会方便很多。于是我写了下面这个在Unity引擎

    2024年02月11日
    浏览(33)
  • unity游戏破解 修改粒子材质

    游戏汉化 遇到一个 比较文化差异的 问题  最近从google play 逆向一个杀人游戏 准备汉化 处理 其中游戏杀人的效果 血是红色的 那这时候小朋友的家长就要说了呀!!!!!! 哎呀  这游戏太血腥 太暴力啦 不行 不能让娃娃玩 !!!! 那没办法呀 改 改 改 首先呢 这血的效果

    2023年04月08日
    浏览(34)
  • Unity vs Godot :哪个游戏引擎更适合你?

    游戏引擎的选择对开发过程和最终产品质量有着重大影响。近年来,Godot和Unity这两款引擎受到广泛关注。本文将从多个维度对两者进行比较,以期为开发者提供正确的选择建议。 Godot和Unity都有各自的优势,没有绝对的好坏之分。Godot开源免费,上手简单,更适合2D和小型游戏

    2024年01月23日
    浏览(75)
  • 30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包