当前位置: 首页>前端>正文

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件

更新日期:2024年5月17日。
Github源码:[点我获取源码] Gitee源码:[点我获取源码]


索引

  • Markdown解析库
  • 模块管理器
  • Inspector界面
  • 支持的语法
  • 1-6级标题
  • 引用文本
  • 列表文本
  • 勾选框
  • 代码片段
  • 斜体文本
  • 加粗文本
  • 载入图像
  • 文本超链接
  • 图像超链接
  • 引用对象(Unity编辑器专用)
  • 自定义操作(Unity编辑器专用)
  • 其他地方使用解析库


Markdown解析库

手搓了一个Markdown轻量级解析库,虽然网上的高端Markdown解析库多如牛毛,但本着自己动手丰衣足食的原则,能自己写的咱就不低声下气的去求人。

模块管理器

写Markdown解析的初衷是为了在ModuleManager模块管理器界面更美观的显示README文件,咱看看之前的:(直接原封不动展示README内容,既不美观又不直观)

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_游戏引擎,第1张

再看看现在的:(支持Markdown解析,颜值上的飙升令我感觉写代码都更有动力了!)

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_markdown解析库_02,第2张

Inspector界面

同理的,在Project中选中一个Markdown文件,也能在Inspector界面实时解析:

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_unity_03,第3张

支持的语法

由于太懒以及某些语法复杂度飙飙飙升(比如甘特图),所以目前只支持解析的标准语法如下:(解析源码我就不贴了,逐行逐字符的解析,没有科技只有狠活

1-6级标题

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_Markdown_04,第4张

引用文本

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_markdown解析库_05,第5张

列表文本

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_游戏引擎_06,第6张

勾选框

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_Markdown_07,第7张

代码片段

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_游戏引擎_08,第8张

斜体文本

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_unity_09,第9张

加粗文本

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_自定义_10,第10张

载入图像

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_markdown解析库_11,第11张

文本超链接

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_游戏引擎_12,第12张

图像超链接

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_markdown解析库_13,第13张

引用对象(Unity编辑器专用)

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_自定义_14,第14张

需注意:引用对象仅支持Unity编辑器环境中,语法格式为{Object}(对象Assets开头的路径),点击对象名称,可以在Project视图中Ping向该对象。

自定义操作(Unity编辑器专用)

在任意Editor(位于Editor文件夹下)脚本中,编写静态方法(带一个string参数),为方法标记BlockCustomAction特性,使其接收自定义操作的回调:

[BlockCustomAction]
    private static void MyCustomAction(string args)
    {
        Debug.Log("这是自定义语法,接收到参数:" + args);
    }

然后即可编写自定义语法块:

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_markdown解析库_15,第15张

点击Hello World,你将在控制台中看到:

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_markdown解析库_16,第16张

需注意:自定义语法仅支持Unity编辑器环境中,语法格式为{Custom}(参数),点击块名称,参数将传递给BlockCustomAction特性标记的方法。

其他地方使用解析库

当然,如果想在自己的EditorWindow上使用解析库也很简单,只需如下这样做:

public class Test : EditorWindow
{
    private TextAsset _mdFile;
    private MarkdownViewer _markdownViewer;

    private void OnEnable()
    {
        //加载MD文件
        //_mdFile = ......

        //加载皮肤(最好始终使用此路径下的皮肤,自定义皮肤需要设置某些关键项,请参照皮肤设置面板)
        GUISkin skin = AssetDatabase.LoadAssetAtPath<GUISkin>("Assets/HTModuleManager/Editor/Markdown/MarkdownSkin.guiskin");

        _markdownViewer = new MarkdownViewer(skin, AssetDatabase.GetAssetPath(_mdFile), _mdFile.text);
    }

    private void OnGUI()
    {
        //绘制MD文档
        _markdownViewer.Draw();
    }
}

最后,只需导入HT.ModuleManager模块,此解析库便自然生效(请放心,HT.ModuleManager不强制依赖任何其他库,可完全独立存在),当然你不这样做也行,直接拷出其中的Markdown目录,稍作修改就是一个的独立解析库了。

【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件,【Unity】实现Markdown轻量级解析库,在编辑器中解析Markdown(.md)文件_游戏引擎_17,第17张



https://www.xamrdz.com/web/2yb1964295.html

相关文章: