# 📘 MarkdownDisplayToolkit Md转换模块

**核心功能**：

- 🌐 支持从网络下载 Markdown 文本数据
- 🧱 自动按标题分割 Markdown 文本
- 🔄 将 Markdown 转换为 FairyGUI 支持的 UBB 富文本格式
- 🎨 支持标准富文本格式转换
- 🪄 直接在指定 FairyGUI 节点下创建并展示富文本内容

------

## 🚀 快速开始

### 1️⃣ 引用说明

本模块依赖通用模块中的单例基类，使用前需引入通用模块。

### 2️⃣ 基础使用流程

```c#
// 1. 加载 Markdown 内容(尽可能早的拉取)
MarkdownKit.Instance.LoadText("privacy", "https://www.moggyfuzz.com/privacy.md");
MarkdownKit.Instance.LoadText("user", "https://www.moggyfuzz.com/user.md");


// 2. 在 FairyGUI 上展示内容
var color = new Color(159 / 255f, 120 / 255f, 102 / 255f, 1f);
MarkdownKit.Instance.ShowAsRichText(oneFGUIComponent, BisTerm ? "user" : "privacy", color, (success, state) => {
    if (success) {
        Debug.Log("✅ 内容加载成功！当前状态：" + state);
    }
    else {
        Debug.LogError("❌ 内容加载失败！当前状态：" + state);
    }
}, 44);                                                           

```

------

## 🛠️ 详细功能说明

### 📥 加载功能

- 使用 `LoadText(string key, string url, int textSize = 40)` 进行加载
- 自动下载，状态可查询（见下方 API）

------

### 📤 内容展示

**参数说明**：

| 参数名     | 说明                                               |
| ---------- | -------------------------------------------------- |
| `parent`   | 父节点容器（FairyGUI）                             |
| `key`      | 唯一键名，与 `LoadText` 保持一致                   |
| `color`    | 文本颜色                                           |
| `callback` | 状态回调 `(bool success, MarkdownTextState state)` |
| `textSize` | （可选）自定义字体大小（默认 40）                  |

**回调状态说明**：

| 状态          | 说明                       |
| ------------- | -------------------------- |
| `Complete`    | ✅ 内容已加载并展示完成     |
| `Downloading` | 🔄 正在下载中               |
| `Exception`   | ⚠️ 下载失败，将自动重试一次 |

------

## 📚 API 参考

### 📑 获取富文本内容

```csharp
List<string> GetText(string key, Action<bool, List<string>> onComplete, int textSize = 40)
```

------

### 🧐 查询当前状态

```csharp
MarkdownTextState GetState(string key)
```

------

### 📦 获取完整数据

```csharp
MarkdownData GetData(string key)
```

**返回字段说明**：

- 📎 URL 地址
- 🔁 当前状态
- 📄 原始 Markdown 文本
- ✂️ 分割后的段落列表
- 🎨 转换后的富文本列表
- 🖋️ 文字大小等配置信息

------

## 💡 最佳实践

### ✅ 1. 容器选择

- 推荐使用可滚动的 FairyGUI 容器
- 确保容器有足够的展示空间

------

### ⚠️ 2. 错误处理建议

```csharp
MarkdownKit.Instance.ShowAsRichText(
    parent,
    "tutorial",
    Color.black,
    (success, state) => {
        if (!success && state == MarkdownTextState.Exception) {
            // 显示重试按钮或错误提示
        }
    }
);
```

------

### 🧑‍🎨 3. 样式定制

```csharp
MarkdownKit.Instance.ShowAsRichText(
    scrollPane,
    "tutorial",
    new Color(0.1f, 0.1f, 0.1f), // 深灰色文字
    null,
    36 // 更小的文字
);
```

------

## 📌 注意事项

- ⏱ 网络错误会自动重试一次
- 🧹 所有 FairyGUI 元素会正确释放
- 🧠 内部管理已加载内容的内存占用

