/Html2UnityRich

能够将Html标签转化为Unity支持的富文本标签(UGUI or TextPro)

Primary LanguageC#

Html2UnityRich

支持将一段Html富文本转化为Untiy相关文本显示组件所支持的富文本,目前支持的Unity文本显示组件有UGUI(Text),TextMeshPro。主要思路是使用状态机对整段Html文本进行逐字符分析,并生成语法树,在将语法树按照期望的结果解析为Unity支持的富文本格式

目录结构

  • Html4UnityText,核心逻辑
  • Sample,配套的演示案例
  • Plugins,依赖库

部分代码说明

  • HtmlMachine.cs, 解析Html文本用的状态机,拆分出标签以及纯文本
  • TagPropMachine.cs, 解析Html标签用的状态机,获取具体参数
  • HtmlNode.cs,构成语法树的节点基础对象
  • Html2UnityRichMgr.cs, 接口入口文件
  • Start.cs,演示代码文件

如何运行演示案例

打开SampleScene.scene场景文件,点击运行

如何使用代码

start.cs包含了具体2种Text组件(UGUI和TextMeshPro)的使用逻辑

//textMeshPro演示
string content = "<h1>这是一段Html文本</h1>"
textMeshPro.text = Html2UnityRichMgr.CreateHtmlRootNode (content).ToPropNode ().ToUnityRichNode ().ToTextProRichText ();

UGUI(Text)由于不带对齐的富文本的标签,所以实现多了一些步骤,具体实现见Start.cs

适用的场景

我自己的需求是用于游戏的公告,游戏公告一般是运营人员编写发出的,他们更多熟悉Html,而不了解Unity的富文本,所以写了这个库来进行转换

后续更新计划

  • 支持图文混排
  • 支持Html超链接标签(已实现)

演示效果

image

致谢

  • forestluch:发现色码转化异常问题,该问题已修复

友情链接

  • JEngine - The solution that allows unity games update in runtime. 使Unity开发的游戏支持热更新的解决方案。
  • BDFramework - Simple and powerful Unity3d game workflow! 简单、高效、高度工业化的商业级unity3d 工作流。
  • MVI4Unity - 基于MVI架构**实现的Unity界面框架