using System; using System.IO; namespace ColdMint.scripts.utils; /// /// ResUtils /// 资源文件工具类 /// public static class ResUtils { /// /// The suffix that the game engine adds to the resource file while the game is running /// 游戏运行时,游戏引擎为资源文件添加的后缀 /// private const string Suffix = ".remap"; /// /// Gets the location of its own dll /// 获取自身dll的存放位置 /// /// public static string? GetSelfDllFolder() { var currentDirectory = Environment.CurrentDirectory; var osEnum = Config.GetOs(true); if (osEnum == Config.OsEnum.Editor) { return Path.Join(currentDirectory, ".godot", "mono", "temp", "bin", "Debug"); } if (osEnum == Config.OsEnum.Windows) { return Path.Join(currentDirectory, "data_" + Config.SolutionName + "_windows_x86_64"); } if (osEnum == Config.OsEnum.Linux) { return Path.Join(currentDirectory, "data_" + Config.SolutionName + "_linuxbsd_x86_64"); } return null; } /// /// The game returns the res directory with a.remap suffix at runtime, causing an error while loading the resource /// 游戏在运行时返回res目录后带有.remap后缀,导致加载资源时出错 /// /// /// public static string GetEditorResPath(string path) { if (Config.IsEditor()) { return path; } var index = path.LastIndexOf(Suffix, StringComparison.Ordinal); return index > -1 ? path[..index] : path; } /// /// Gets the runtime path of the resource file /// 获取资源文件运行时路径 /// /// /// public static string GetRunTimeResPath(string path) { if (Config.IsEditor()) { return path; } //Determine whether the path is a file path //判断路径是否为文件路径 var symbolIndex = path.LastIndexOf('.'); if (symbolIndex > -1) { //Found the file symbol //找到了文件符号 var index = path.LastIndexOf(Suffix, StringComparison.Ordinal); return index > -1 ? path : path + Suffix; } else { return path; } } }