96SEO 2026-02-20 00:22 0
如何在Unity中把一个自己喜欢的插件变成中文在Unity中编写插件一般会用到编辑器扩展

在编辑器扩展中想在Inspector显示自己想要的属性名或者别的什么就需要用到编辑器扩展的API
把这些固定的API存到一个字典里例如“EditorGUILayout.PropertyField”“LabelField”...我可以尝试先读取我们想要汉化插件的Editor文件夹下的每一个代码的每一行
对比成功就说明此行代码可以被汉化收集可以被汉化的代码行然后把可以被汉化的代码行替换成我们想要的代码
替换成功后保存代码听起来好像没啥问题试试看创建一个存储字典的代码
UnityEngine;[CreateAssetMenu()]
/summary[System.Serializable]public
UnityEngine;[System.Serializable]
_window;[MenuItem(Tools/汉化编辑器)]public
(Editor_ChinesizationTool)GetWindow(typeof(Editor_ChinesizationTool),
}没想到要去翻译一个插件竟然要自己先写一个...造孽啊~读文件
true){Datas.Clear();CurrentDatas.Clear();CurrentSplitDatas.Clear();if
NewSplitDatas.Clear();StreamReader
File.OpenText(assetsName.Substring(assetsName.IndexOf(Assets)));//读取文件//读取所有行int
null){Datas.Add(data);CurrentDatas.Add(data);foreach
searchCharacterData.items){string
null);sr.Close();//关闭流sr.Dispose();//销毁流return
(!FileInfo.Exists){Debug.LogError(无法写入没有该文件);return;}ClearData(path);sw
FileInfo.AppendText();//打开文件foreach
datas){sw.WriteLine(linedata);}sw.Flush();//清除缓冲区sw.Close();//关闭流sw.Dispose();//销毁流//ReadFileInfo();}稍稍修正一下编辑器页面随便导入一个插件试试看
注意此文件需要放在Editor文件夹下才可以正常使用using
UnityEngine;[System.Serializable]
null;[MenuItem(Tools/汉化编辑器)]public
(Editor_ChinesizationTool)GetWindow(typeof(Editor_ChinesizationTool),
Material(Shader.Find(Hidden/Internal-Colored));//2m_material.hideFlags
HideFlags.HideAndDontSave;//3}void
OnGUI(){EditorGUILayout.Space();EditorGUILayout.LabelField(将文件夹拖拽到此处);EditorGUILayout.Space();GUI.SetNextControlName(input1);//设置下一个控件的名字modelRect
EditorGUILayout.GetControlRect();modelPath
modelPath);EditorGUILayout.Space();DragFolder();EditorGUILayout.Space();searchCharacterData
null){GUILayout.Label(请添加字典);return;}if
(GUILayout.Button(读取文件)){ReadFile();CurrentCSData
EditorGUILayout.BeginScrollView(csDataPos,
EditorGUILayout.IntField(每行显示脚本的个数,
1){GUILayout.BeginHorizontal();isLineEnd
(GUILayout.Button(csdate.name)){CurrentCSData
maxLineCount){GUILayout.EndHorizontal();currentLineCount
false){GUILayout.EndHorizontal();}GUILayout.EndScrollView();}if
null){EditorGUILayout.BeginVertical(HelpBox);GUILayout.BeginHorizontal();csDataPos
EditorGUILayout.BeginScrollView(csDataPos,
1;lineLocations.Clear();foreach
CurrentCSData.CurrentDatas){GUILayout.Label(line
CurrentCSData.CurrentSplitDatas){if
GUILayoutUtility.GetLastRect();lineLocation.FirstRect
csDataPos.y);lineLocation.FirstRectOffset
csDataPos;lineLocations.Add(lineLocation);}}line;}GUILayout.EndScrollView();GUILayout.Space(100);#endregioncontentPos
EditorGUILayout.BeginScrollView(contentPos,
CurrentCSData.CurrentSplitDatas.Count;
i){//GUILayout.BeginHorizontal();GUILayout.Label(CurrentCSData.CurrentSplitDatas[i].line
CurrentCSData.CurrentDatas[CurrentCSData.CurrentSplitDatas[i].line]);//找到可更换数据lineLocations[i].FirstRect.y
contentPos.y;lineLocations[i].LastRectOffset
GUILayoutUtility.GetLastRect();lineLocations[i].LastRect
rect.y);CurrentCSData.NewSplitDatas[i].data
EditorGUILayout.TextField(CurrentCSData.NewSplitDatas[i].data);//GUILayout.EndHorizontal();}foreach
lineLocations){m_material.SetPass(0);//4GL.Begin(GL.LINES);GL.Color(Color.red);GL.Vertex3(item.FirstRect.x
0);GL.End();GL.Begin(GL.LINES);GL.Color(Color.black);GL.Vertex3(item.FirstRect.x
0);//GL.Vertex3(item.LastRect.x-10,
GL.End();GL.Begin(GL.LINES);GL.Color(Color.red);GL.Vertex3(item.LastRect.x-10,
0);GL.Vertex3(item.LastRect.x-5,
0);GL.End();//Debug.Log(FirstRect:
item.LastRect);//break;}GUILayout.EndScrollView();GUILayout.EndHorizontal();GUILayout.BeginHorizontal();if
(GUILayout.Button(确认更改)){CurrentCSData.ReadFileInfo(false);for
CurrentCSData.CurrentSplitDatas.Count;
i){CurrentCSData.CurrentDatas[CurrentCSData.CurrentSplitDatas[i].line]
ReplaceStr(CurrentCSData.CurrentDatas[CurrentCSData.CurrentSplitDatas[i].line],CurrentCSData.CurrentSplitDatas[i].data,CurrentCSData.NewSplitDatas[i].data);}for
CurrentCSData.CurrentDatas[i];}CurrentCSData.WriterData();AssetDatabase.Refresh();}if
(GUILayout.Button(重新选择文件)){CurrentCSData
null;}GUILayout.EndHorizontal();GUILayout.EndVertical();}EditorGUILayout.Space();}ListLineLocation
ReadFile(){GetAllFilesAndDertorys(modelPath,
EventType.DragUpdated){DragAndDrop.visualMode
DragAndDropVisualMode.Generic;//改变鼠标外观//
(modelRect.Contains(Event.current.mousePosition))GUI.FocusControl(input1);}//拖入窗口并松开鼠标else
(modelRect.Contains(Event.current.mousePosition))modelPath
取消焦点(不然GUI不会刷新)GUI.FocusControl(null);}}}static
searchCharacterData){//判断路径是否存在if
(Directory.Exists(_path)){#region
DirectoryInfo(_path);DirectoryInfo[]
SearchOption.AllDirectories);string
assetsName.Substring(assetsName.IndexOf(Assets));if
assetsName;break;}}#endregionif
得到Editor文件夹下所有的.cs文件DirectoryInfo
DirectoryInfo(EditorPath);cslist.Clear();int
SearchOption.AllDirectories)){//忽略.metastring
assetsName.Substring(assetsName.IndexOf(Assets));if
(item.Name.EndsWith(.cs)){cslist.Add(new
this));}ListIndex;}#endregionforeach
cslist){item.ReadFileInfo();}}else{Debug.LogError(该目录没有Editor文件夹);}}}string
minValue));}[System.Serializable]public
CSData{Editor_ChinesizationTool
null){editor_ChinesizationTool.ReadFile();fileInfo
editor_ChinesizationTool.cslist[ListIndex].FileInfo;}return
FileInfo.Name;this.searchCharacterData
searchCharacterData;this.ListIndex
mListIndex;this.editor_ChinesizationTool
WriterData(){WriteFileInfo(Datas);}///
true){Datas.Clear();CurrentDatas.Clear();CurrentSplitDatas.Clear();if
NewSplitDatas.Clear();StreamReader
File.OpenText(assetsName.Substring(assetsName.IndexOf(Assets)));//读取文件//读取所有行int
null){Datas.Add(data);CurrentDatas.Add(data);foreach
searchCharacterData.items){string
null);sr.Close();//关闭流sr.Dispose();//销毁流return
(!FileInfo.Exists){Debug.LogError(无法写入没有该文件);return;}ClearData(path);sw
FileInfo.AppendText();//打开文件foreach
datas){sw.WriteLine(linedata);}sw.Flush();//清除缓冲区sw.Close();//关闭流sw.Dispose();//销毁流//ReadFileInfo();}void
StreamWriter(path);tmpWrite.Write();tmpWrite.Close();}}[System.Serializable]public
觉得有意思可以改巴改巴也可以把建议放在评论区有空我就更新一下~
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback