Allen Kashiwa Blog

羁旅红尘不曾醉,笑歌年少且长行。

专注游戏开发与设计


唯佳人与游戏不可辜负

Unity格式化代码工具

文本编码与换行符

程序员都知道为了让只能处理数字的计算机处理文本,计算机科学家们将文本与数字对应形成编码,如著名的ASCIIUTF8。由于历史与地域的原因,目前的编码已经非常丰富。于此同时,文本中的换行符不像编码那么多种多样但常用的也不只一种,到底用CRLF还是LF就得好好考虑一下。

在同一个项目中的不同文件可能采用了不同的编码和换行符。你当然可以要求团队成员新建文件时使用何种编码以及何种换行符,但当你使用第三方库时总不能保证其他人使用的编码与你的一致。为了不踩进编码和换行符的坑中,咱们不如搞个自动替换工具,一劳永逸解决这个问题。

搞个工具

Unity编辑器本身是很容易扩展的,我写了这样子的一个小工具来帮助我统一编码和换行符还有到底是用空哥还是制表符来当缩进的千古难题:

image

而这样的一个工具核心功能的实现也很简单:

private void HandleCurFile(string fileName)
{
    try
    {
        string content = File.ReadAllText(fileName);

        // 替换换行符
        content = content.Replace("\r", "");
        content = content.Replace("\n", lineEndings[selectLineEndingIndex]);

        // 处理制表符
        content = isInsertSpaces ? content.Replace("\t", new string(' ', spaceCount)) : content.Replace(new string(' ', spaceCount), "\t");

        // 按对应编码写入文件
        File.WriteAllText(fileName, content, encodings[selectEncodingIndex]);
    }
    catch (Exception ex)
    {
        Debug.LogErrorFormat("FormatWindow HandleCurFile Format file faild, fileName: {0} msg: {1}", fileName, ex.Message);
    }
}

要查看完整代码,可以前往我的github中的FormatCode这个项目。

支持

最后,如果你喜欢本文,欢迎进行关注,打赏,点赞,点Star。

用支付宝请我喝咖啡

用微信请我吃辣条

最近的文章

Allen Kashiwa的游戏开发信息

0本文首发于我的github和我的博客,欢迎大家与我交流。1 基础知识与通用技能1.1 语言相关1.1.1 C/C++C++ Primer1.1.2 C#C# 编程指南CLR via C#(第4版)1.1.3 LuaProgramming in Lua1.1.4 Python廖雪峰的Python教程1.2 语言无关1.2.1 算法算法图解Data Structure Visualizations算法可视化visualgoIntroduction to A](https://www.redb...…

继续阅读
更早的文章

打造舒适的Unity开发环境

前言我相信每个开发人员都在工作中慢慢配置了一套让自己最舒适的开发环境。不管是软件还是硬件,用起来得心应手,剑随意动一直是程序员们的追求。本文想仅从软件的角度介绍下我自己开发基于Unity的游戏时的工具及配置。希望初学者可以根据此文扫清环境搭建的困惑,资深开发者可以与我交流自己的见解。本文将持续维护并优先更新于我的github和博客。系统篇本文采用的是Windows 10。windows系统默认的一些设置不太适合程序员,我们来做一些设置。 (点击Windows键,输入file,)打开文件资...…

继续阅读