using UnityEngine; using UnityEditor; using System.IO; using System.Text; public class ChangeScriptEncodingFormat { // 添加一个右键菜单。 // % 按下ctrl时显示菜单。(Windows: control, macOS: command) // & 按下alt时显示菜单。(Windows/Linux: alt, macOS: option) // _ 按下shift时显示菜单。(Windows/Linux/macOS: shift) [MenuItem("Assets/脚本改格式:GB2312->UTF8无BOM %g", false, 100)] private static void CustomMenu() { // 例如: 获取Project视图中选定的对象 Object selectedObject = Selection.activeObject; if (selectedObject != null) { // 获取选定对象的相对路径 string relativeAssetPath = AssetDatabase.GetAssetPath(selectedObject); // 获取项目根目录路径 string projectPath = Path.GetDirectoryName(Application.dataPath); // 获取选定对象的绝对路径 string absoluteAssetPath = Path.Combine(projectPath, relativeAssetPath); // 获取选定对象的文件名(包括后缀) string fileName = Path.GetFileName(relativeAssetPath); Debug.Log("执行自定义操作: " + selectedObject.name + ", 相对路径: " + relativeAssetPath + ", 绝对路径: " + absoluteAssetPath + ", 文件名: " + fileName); //判断是否是CSharp文件 if (IsCSharpFile(fileName)) { Debug.Log("这是一个csharp文件"); ChangeFormat(absoluteAssetPath); } else { Debug.Log("兄弟,这不是一个csharp文件啊~~~~~~~~~~~"); } } else { Debug.LogWarning("没有选中任何对象."); } } // 如果项目视图中有选中的对象,则启用右键菜单项 [MenuItem("Assets/脚本改格式:GB2312->UTF8无BOM %g", true)] private static bool ValidateCustomMenu() { return Selection.activeObject != null; } /// /// 判断该文件是否是CSharp文件 /// /// /// private static bool IsCSharpFile(string fileName) { // 获取文件扩展名(包括点) string fileExtension = Path.GetExtension(fileName); // 将扩展名转换为小写并与 ".cs" 进行比较 if (fileExtension.ToLower() == ".cs") { return true; } return false; } /// /// 文件格式转码:GB2312转成UTF8 /// 读取指定的文件,转换成UTF8(无BOM标记)格式后,回写覆盖原文件 /// /// 文件路径 public static void ChangeFormat(string sourceFilePath) { string fileContent = File.ReadAllText(sourceFilePath, Encoding.GetEncoding("GB2312")); File.WriteAllText(sourceFilePath, fileContent, Encoding.UTF8); Debug.Log("处理结束!"); } }