找回密码
 立即注册
查看: 312|回复: 0

unity 查找脚本中文描述

[复制链接]
发表于 2022-4-19 10:56 | 显示全部楼层 |阅读模式
拿到个二开项目,公司准备韩国发布,查看脚本中发现(活动描述,属性名等是写在脚本中的)。

using System.Collections;using System.Collections.Generic;using System.IO;using UnityEditor;using UnityEngine;using UnityEngine.Networking;public class GetAllCHFont : MonoBehaviour{    static List<string> strinfoList = new List<string>();    // 在菜单来创建 选项 , 点击该选项执行搜索代码    [MenuItem("Tools/获取项目脚本中的中文")]    static void CheckSceneSetting()    {        List<string> dirs = new List<string>();        GetDirs(Application.dataPath+ "/LuaFramework/Lua/game", ref dirs);        DeleteTxt();        for (int i = 0; i < dirs.Count; i++)        {            if (!dirs.Contains("config\\"))            {                string path = string.Format("{0}/{1}", Application.dataPath, dirs);                ReadData(path);            }        }        Debug.Log("查找完成");    }    //参数1 为要查找的总路径, 参数2 保存路径    private static void GetDirs(string dirPath, ref List<string> dirs)    {        foreach (string path in Directory.GetFiles(dirPath))        {            //Debug.LogError(path);            //获取所有文件夹中包含后缀为 .lua 的路径            if (Path.GetExtension(path) == ".lua")            {                dirs.Add(path.Substring(path.IndexOf("LuaFramework")));            }        }        if (Directory.GetDirectories(dirPath).Length > 0)  //遍历所有文件夹        {            foreach (string path in Directory.GetDirectories(dirPath))            {                GetDirs(path, ref dirs);            }        }    }    // 判断 当前字符是否为中文    static bool isChinese(char c)    {        return c >= 0x4E00 && c <= 0x9FA5;    }    //判断 当前行是否含有中文    static bool checkString(string str)    {        char[] ch = str.ToCharArray();        if (str != null)        {            for (int i = 0; i < ch.Length; i++)            {                if (isChinese(ch))                {                    return true;                }            }        }        return false;    }    // 根据路径 获取文件内容    static void ReadData(string path)    {        FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);        StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);        if (null == sr) return;        string str = sr.ReadToEnd();        string[] strs = str.Split('\n');        for (int i = 0; i < strs.Length; i++)        {            // 只需要含有中文的行            if (checkString(strs))            {                Createfile(Application.dataPath, "luaCHFont.txt", strs.Trim());            }                    }        sr.Close();    }    //文件的创建,写入    static void Createfile(string path, string name, string info)    {        // --注释不写入        if (info.Contains("--"))        {            string shaicha = info.Substring(0, info.IndexOf("--"));            if (!checkString(shaicha))            {                return;            }        }        //@注释不写入         if (info.Contains("@des") || info.Contains("@param") || info.Contains("@key") || info.Contains("@return") || info.Contains("*/"))        {            return;        }        // 日志打印不写入        if (info.Contains("print(") || info.Contains("print2") || info.Contains("logWarn(") || info.Contains("logError("))        {            return;        }        // 整理字符串        string str = info.Replace("\t", "");        str = str.Replace("Notify.ShowText", "");        str = str.Replace("Dialog.ShowTwo", "");            if (str.Contains("string.format"))        {            string _str = str.Substring(0, str.IndexOf("string.format"));            if (!checkString(_str))            {                str = str.Substring(str.IndexOf("string.format") + 13);            }        }        if (str.Contains("buy("))        {            string _str = str.Substring(0, str.IndexOf("buy("));            if (!checkString(_str))            {                str = str.Substring(str.IndexOf("buy(") + 3);            }                    }        if (str.Contains("="))        {            // 判断=号前是否有中文            string _str = str.Substring(0, str.IndexOf("="));            if (!checkString(_str))            {                str = str.Substring(str.IndexOf("=") + 1);            }        }        if (str.Contains("="))        {            string _str = str.Substring(str.IndexOf("="));            if (!checkString(_str))            {                str = str.Substring(0, str.IndexOf("="));            }        }        if (str.Contains(".."))        {            // 判断=号前是否有中文            string _str = str.Substring(0, str.IndexOf(".."));            if (!checkString(_str))            {                str = str.Substring(str.IndexOf("..") + 1);            }        }        if (str.Contains(".."))        {            string _str = str.Substring(str.IndexOf(".."));            if (!checkString(_str))            {                str = str.Substring(0, str.IndexOf(".."));            }        }        str = str.Trim();        // 辨别重复行        if (strinfoList.Contains(str))        {            return;        }        strinfoList.Add(str);        StreamWriter sw;//流信息        FileInfo t = new FileInfo(path +"/" + name);        if (!t.Exists)        {//判断文件是否存在            sw = t.CreateText();//不存在,创建        }        else        {            sw = t.AppendText();//存在,则打开        }        sw.WriteLine(str);//以行的形式写入信息        sw.Close();//关闭流        sw.Dispose();//销毁流    }    //删除    [MenuItem("Tools/清空")]    static void DeleteTxt()    {        strinfoList.Clear();        string path = Application.dataPath + "/luaCHFont.txt";        File.WriteAllText(path, string.Empty);        Debug.Log("清除成功");    }        }
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 13:24 , Processed in 0.090798 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表