diff --git a/.gitignore b/.gitignore index dcbb758..c3357ea 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ graph.svg docs/.vitepress/cache docs/.vitepress/dist docs/.vitepress/apiSidebar.ts +_docs diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index bccf639..df2593a 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,6 +1,7 @@ import { defineConfig } from 'vitepress'; import { MermaidMarkdown, MermaidPlugin } from 'vitepress-plugin-mermaid'; import api from './apiSidebar'; +import { join } from 'path'; // https://vitepress.dev/reference/site-config export default defineConfig({ @@ -13,6 +14,7 @@ export default defineConfig({ md.use(MermaidMarkdown); } }, + outDir: join(process.cwd(), 'public', '_docs'), themeConfig: { // https://vitepress.dev/reference/default-theme-config outline: [2, 3], diff --git a/docs/api/index.md b/docs/api/index.md index d4948fa..c509d5a 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -4,29 +4,28 @@ lang: zh-CN # API 列表 -- [@motajs/client](./motajs-client) 渲染层代码 -- [@motajs/client-base](./motajs-client-base) 渲染层底层代码 -- [@motajs/common](./motajs-common) 渲染层和数据层通用代码 -- [@motajs/legacy-client](./motajs-legacy-client) 遗留渲染层代码 -- [@motajs/legacy-common](./motajs-legacy-common) 遗留通用代码 -- [@motajs/legacy-data](./motajs-legacy-data) 遗留数据层代码 -- [@motajs/legacy-system](./motajs-legacy-system) 遗留渲染层系统代码 -- [@motajs/legacy-ui](./motajs-legacy-ui) 遗留 UI 相关代码 -- [@motajs/render](./motajs-render) 渲染系统代码 -- [@motajs/render-core](./motajs-render-core) 渲染系统核心代码 -- [@motajs/render-elements](./motajs-render-elements) 渲染系统内置元素代码 -- [@motajs/render-style](./motajs-render-style) 渲染系统样式代码 -- [@motajs/render-vue](./motajs-render-vue) 渲染系统 vue 支持代码 -- [@motajs/system](./motajs-system) 渲染层系统代码 -- [@motajs/system-action](./motajs-system-action) 渲染层交互系统代码 -- [@motajs/system-ui](./motajs-system-ui) 渲染层 UI 系统代码 -- [@motajs/types](./motajs-types) 渲染层类型代码 -- [@user/client-modules](./user-client-modules) 用户渲染层主要代码 -- [@user/data-base](./user-data-base) 用户数据层底层代码 -- [@user/data-fallback](./user-data-fallback) 用户数据层向后兼容代码 -- [@user/data-state](./user-data-state) 用户数据层状态代码 -- [@user/data-utils](./user-data-utils) 用户数据层工具代码 -- [@user/entry-client](./user-entry-client) 用户渲染层入口 -- [@user/entry-data](./user-entry-data) 用户数据层入口 -- [@user/legacy-plugin-client](./user-legacy-plugin-client) 用户遗留渲染层代码 -- [@user/legacy-plugin-data](./user-legacy-plugin-data) 用户遗留数据层代码 +- [@motajs/client](./motajs-client/index.md) 渲染层代码 +- [@motajs/client-base](./motajs-client-base/index.md) 渲染层底层代码 +- [@motajs/common](./motajs-common/index.md) 渲染层和数据层通用代码 +- [@motajs/legacy-client](./motajs-legacy-client/index.md) 遗留渲染层代码 +- [@motajs/legacy-common](./motajs-legacy-common/index.md) 遗留通用代码 +- [@motajs/legacy-system](./motajs-legacy-system/index.md) 遗留渲染层系统代码 +- [@motajs/legacy-ui](./motajs-legacy-ui/index.md) 遗留 UI 相关代码 +- [@motajs/render](./motajs-render/index.md) 渲染系统代码 +- [@motajs/render-core](./motajs-render-core/index.md) 渲染系统核心代码 +- [@motajs/render-elements](./motajs-render-elements/index.md) 渲染系统内置元素代码 +- [@motajs/render-style](./motajs-render-style/index.md) 渲染系统样式代码 +- [@motajs/render-vue](./motajs-render-vue/index.md) 渲染系统 vue 支持代码 +- [@motajs/system](./motajs-system/index.md) 渲染层系统代码 +- [@motajs/system-action](./motajs-system-action/index.md) 渲染层交互系统代码 +- [@motajs/system-ui](./motajs-system-ui/index.md) 渲染层 UI 系统代码 +- [@motajs/types](./motajs-types/index.md) 渲染层类型代码 +- [@user/client-modules](./user-client-modules/index.md) 用户渲染层主要代码 +- [@user/data-base](./user-data-base/index.md) 用户数据层底层代码 +- [@user/data-fallback](./user-data-fallback/index.md) 用户数据层向后兼容代码 +- [@user/data-state](./user-data-state/index.md) 用户数据层状态代码 +- [@user/data-utils](./user-data-utils/index.md) 用户数据层工具代码 +- [@user/entry-client](./user-entry-client/index.md) 用户渲染层入口 +- [@user/entry-data](./user-entry-data/index.md) 用户数据层入口 +- [@user/legacy-plugin-client](./user-legacy-plugin-client/index.md) 用户遗留渲染层代码 +- [@user/legacy-plugin-data](./user-legacy-plugin-data/index.md) 用户遗留数据层代码 diff --git a/docs/api/motajs-render-vue/标签 container.md b/docs/api/motajs-render-vue/标签 container.md index cf9e575..3a7e0b4 100644 --- a/docs/api/motajs-render-vue/标签 container.md +++ b/docs/api/motajs-render-vue/标签 container.md @@ -54,8 +54,8 @@ const boldFont = new Font('Verdana', 18, 'px', 700); **优化策略**: -- 背景层缓存,避免重复绘制 -- 计数器单独放置在独立容器,避免高频内容污染致使低频内容也需要高频更新 +- 背景层缓存,避免重复绘制 +- 计数器单独放置在独立容器,避免高频内容污染致使低频内容也需要高频更新 --- @@ -127,7 +127,7 @@ return () => ( ### 大数据量处理方案 -考虑使用[滚动条](../user-client-modules/Scroll.md)或[分页](../user-client-modules/Page.md)组件。 +考虑使用[滚动条](../user-client-modules/组件 Scroll.md)或[分页](../user-client-modules/组件 Page.md)组件。 --- diff --git a/docs/api/motajs-render-vue/标签 text.md b/docs/api/motajs-render-vue/标签 text.md index 50fb216..1438705 100644 --- a/docs/api/motajs-render-vue/标签 text.md +++ b/docs/api/motajs-render-vue/标签 text.md @@ -44,9 +44,9 @@ import { Font } from '@motajs/render-style'; **效果**: -- 在 (100,50) 位置显示蓝色 "Hello World" -- 使用 24px 粗体 Arial 字体 -- 无描边效果 +- 在 (100,50) 位置显示蓝色 "Hello World" +- 使用 24px 粗体 Arial 字体 +- 无描边效果 --- @@ -67,9 +67,9 @@ import { Font } from '@motajs/render-style'; **效果**: -- 金色文字带黑色半透明描边 -- 32px 加粗斜体 Verdana -- 2px 描边宽度 +- 金色文字带黑色半透明描边 +- 32px 加粗斜体 Verdana +- 2px 描边宽度 --- @@ -156,5 +156,5 @@ import { Font } from '@motajs/render-style'; ## 注意事项 -1. 如果需要显示多行文本,考虑使用 [TextContent](../user-client-modules/TextContent.md) +1. 如果需要显示多行文本,考虑使用 [TextContent](../user-client-modules/组件 TextContent.md) 2. 考虑到浏览器兼容性,不建议在颜色中填写一些新标准的语法,例如 `rgb(0.3, 0.6, 0.8 / 0.6)` `#rgba` 等 diff --git a/docs/guide/system.md b/docs/guide/system.md index 58aa70e..637c623 100644 --- a/docs/guide/system.md +++ b/docs/guide/system.md @@ -10,32 +10,31 @@ lang: zh-CN 2.B 样板现在已经迁移至了 monorepo,将代码模块化,共分为 20 余个模块,每个模块的具体内容可以参考 API 文档,模块列表如下: -- [@motajs/client](../api/motajs-client) 渲染层代码 -- [@motajs/client-base](../api/motajs-client-base) 渲染层底层代码 -- [@motajs/common](../api/motajs-common) 渲染层和数据层通用代码 -- [@motajs/legacy-client](../api/motajs-legacy-client) 遗留渲染层代码 -- [@motajs/legacy-common](../api/motajs-legacy-common) 遗留通用代码 -- [@motajs/legacy-data](../api/motajs-legacy-data) 遗留数据层代码 -- [@motajs/legacy-system](../api/motajs-legacy-system) 遗留渲染层系统代码 -- [@motajs/legacy-ui](../api/motajs-legacy-ui) 遗留 UI 相关代码 -- [@motajs/render](../api/motajs-render) 渲染系统代码 -- [@motajs/render-core](../api/motajs-render-core) 渲染系统核心代码 -- [@motajs/render-elements](../api/motajs-render-elements) 渲染系统内置元素代码 -- [@motajs/render-style](../api/motajs-render-style) 渲染系统样式代码 -- [@motajs/render-vue](../api/motajs-render-vue) 渲染系统 vue 支持代码 -- [@motajs/system](../api/motajs-system) 渲染层系统代码 -- [@motajs/system-action](../api/motajs-system-action) 渲染层交互系统代码 -- [@motajs/system-ui](../api/motajs-system-ui) 渲染层 UI 系统代码 -- [@motajs/types](../api/motajs-types) 渲染层类型代码 -- [@user/client-modules](../api/user-client-modules) 用户渲染层主要代码 -- [@user/data-base](../api/user-data-base) 用户数据层底层代码 -- [@user/data-fallback](../api/user-data-fallback) 用户数据层向后兼容代码 -- [@user/data-state](../api/user-data-state) 用户数据层状态代码 -- [@user/data-utils](../api/user-data-utils) 用户数据层工具代码 -- [@user/entry-client](../api/user-entry-client) 用户渲染层入口 -- [@user/entry-data](../api/user-entry-data) 用户数据层入口 -- [@user/legacy-plugin-client](../api/user-legacy-plugin-client) 用户遗留渲染层代码 -- [@user/legacy-plugin-data](../api/user-legacy-plugin-data) 用户遗留数据层代码 +- [@motajs/client](../api/motajs-client/index.md) 渲染层代码 +- [@motajs/client-base](../api/motajs-client-base/index.md) 渲染层底层代码 +- [@motajs/common](../api/motajs-common/index.md) 渲染层和数据层通用代码 +- [@motajs/legacy-client](../api/motajs-legacy-client/index.md) 遗留渲染层代码 +- [@motajs/legacy-common](../api/motajs-legacy-common/index.md) 遗留通用代码 +- [@motajs/legacy-system](../api/motajs-legacy-system/index.md) 遗留渲染层系统代码 +- [@motajs/legacy-ui](../api/motajs-legacy-ui/index.md) 遗留 UI 相关代码 +- [@motajs/render](../api/motajs-render/index.md) 渲染系统代码 +- [@motajs/render-core](../api/motajs-render-core/index.md) 渲染系统核心代码 +- [@motajs/render-elements](../api/motajs-render-elements/index.md) 渲染系统内置元素代码 +- [@motajs/render-style](../api/motajs-render-style/index.md) 渲染系统样式代码 +- [@motajs/render-vue](../api/motajs-render-vue/index.md) 渲染系统 vue 支持代码 +- [@motajs/system](../api/motajs-system/index.md) 渲染层系统代码 +- [@motajs/system-action](../api/motajs-system-action/index.md) 渲染层交互系统代码 +- [@motajs/system-ui](../api/motajs-system-ui/index.md) 渲染层 UI 系统代码 +- [@motajs/types](../api/motajs-types/index.md) 渲染层类型代码 +- [@user/client-modules](../api/user-client-modules/index.md) 用户渲染层主要代码 +- [@user/data-base](../api/user-data-base/index.md) 用户数据层底层代码 +- [@user/data-fallback](../api/user-data-fallback/index.md) 用户数据层向后兼容代码 +- [@user/data-state](../api/user-data-state/index.md) 用户数据层状态代码 +- [@user/data-utils](../api/user-data-utils/index.md) 用户数据层工具代码 +- [@user/entry-client](../api/user-entry-client/index.md) 用户渲染层入口 +- [@user/entry-data](../api/user-entry-data/index.md) 用户数据层入口 +- [@user/legacy-plugin-client](../api/user-legacy-plugin-client/index.md) 用户遗留渲染层代码 +- [@user/legacy-plugin-data](../api/user-legacy-plugin-data/index.md) 用户遗留数据层代码 ## Mota 全局变量 @@ -50,8 +49,8 @@ const { Font } = Mota.require('@motajs/render'); // 获取 Font 字体类 多数情况下,我们是不需要使用 `Mota` 全局变量的。不过,还是有一些特殊情况需要使用该全局变量才可以,这些情况包括: -- 在数据端调用渲染端接口,数据端需要跑录像验证,因此不能直接引入渲染端接口,需要通过此全局变量才可以。 -- 在 `libs` `functions.js` 中调用接口,这两个地方暂时还没有模块化,因此无法直接引入,需要通过此全局变量调用。 +- 在数据端调用渲染端接口,数据端需要跑录像验证,因此不能直接引入渲染端接口,需要通过此全局变量才可以。 +- 在 `libs` `functions.js` 中调用接口,这两个地方暂时还没有模块化,因此无法直接引入,需要通过此全局变量调用。 ## 渲染端与数据端通信 @@ -94,7 +93,6 @@ hook.on('afterBattle', enemy => { 2. 加载 2.x 样板的第三方库 3. 如果是游戏中,加载 `src/main.ts` - 1. 加载渲染端入口 2. 加载数据端入口 3. 并行初始化数据端与渲染端,在数据端写入 `Mota` 全局变量 @@ -104,7 +102,6 @@ hook.on('afterBattle', enemy => { 7. 执行渲染端各个模块的初始化函数 4. 如果是录像验证中: - 1. 加载数据端入口 2. 初始化数据端,写入 `Mota` 全局变量 3. 初始化完毕后执行 `loading.emit('dataRegistered')` 与 `loading.emit('registered')` 钩子 diff --git a/docs/guide/ui-elements.md b/docs/guide/ui-elements.md index 9e35192..52506ae 100644 --- a/docs/guide/ui-elements.md +++ b/docs/guide/ui-elements.md @@ -23,9 +23,9 @@ type ElementLocator = [ 这些属性两两组成一组(`x, y` 一组,`w, h` 一组,`ax, ay` 一组),每组可选填,也就是说 `x` 和 `y` 要么都填,要么都不填,以此类推。 -- `x` `y`: 元素的位置,描述了在没有旋转时元素的锚点位置,例如 `[32, 32]` 就表示这个元素锚点在 `32, 32` 的位置,默认锚点在元素左上角,也就表示元素左上角在 `32, 32`。 -- `w` `h`: 元素的长宽,描述了在没有缩放时元素的矩形长宽,默认是没有放缩的。 -- `ax` `ay`: 元素的锚点位置,描述了元素参考点的位置,所有位置变换等将以此点作为参考点。0 表示元素最左侧或最上侧,1 表示最右侧或最下侧,可以填不在 0-1 范围内的值,例如 `[-1, 1]` 表示锚点横坐标在元素左侧一个元素宽度的位置,纵坐标在元素下边缘的位置。 +- `x` `y`: 元素的位置,描述了在没有旋转时元素的锚点位置,例如 `[32, 32]` 就表示这个元素锚点在 `32, 32` 的位置,默认锚点在元素左上角,也就表示元素左上角在 `32, 32`。 +- `w` `h`: 元素的长宽,描述了在没有缩放时元素的矩形长宽,默认是没有放缩的。 +- `ax` `ay`: 元素的锚点位置,描述了元素参考点的位置,所有位置变换等将以此点作为参考点。0 表示元素最左侧或最上侧,1 表示最右侧或最下侧,可以填不在 0-1 范围内的值,例如 `[-1, 1]` 表示锚点横坐标在元素左侧一个元素宽度的位置,纵坐标在元素下边缘的位置。 ![锚点图示](./img/image.png) @@ -168,10 +168,10 @@ const hidden = ref(false); 在 2D 图形学中,变换矩阵(3x3)可以统一表示以下基本变换操作: -- 平移(Translation) -- 旋转(Rotation) -- 缩放(Scale) -- 错切(Skew) +- 平移(Translation) +- 旋转(Rotation) +- 缩放(Scale) +- 错切(Skew) 通过矩阵乘法可以将多个变换组合为单个矩阵运算,其通用数学表示为(列主序): @@ -179,9 +179,9 @@ $Transform=\begin{bmatrix} a & b & 0 \\ c & d & 0 \\ e & f & 1 \end{bmatrix}$ 其中: -- `a,d` 控制缩放和旋转 -- `b,c` 控制错切 -- `e,f` 控制平移 +- `a,d` 控制缩放和旋转 +- `b,c` 控制错切 +- `e,f` 控制平移 #### 变换组合原理 @@ -330,12 +330,10 @@ const finalTrans = trans.multiply(childTrans); #### 常见问题排查 1. 变换不生效? - - 验证绑定的对象是否实现 `updateTransform` - 检查有没有把 `trans` 对象赋值给元素的 `transform` 属性 2. 性能问题 - - 避免高频调用 `setTransform` - 优先使用叠加方法代替矩阵直接操作 - 利用 `clone()` 复用已有变换 @@ -348,10 +346,10 @@ const finalTrans = trans.multiply(childTrans); type RenderFn = (canvas: MotaOffscreenCanvas2D, transform: Transform) => void; ``` -- `canvas`: 要渲染至的画布,一般直接将内容渲染至这个画布上 -- `transform`: 当前元素的变换矩阵,相对于父元素,不常用 +- `canvas`: 要渲染至的画布,一般直接将内容渲染至这个画布上 +- `transform`: 当前元素的变换矩阵,相对于父元素,不常用 -多数情况下,我们只会使用到第一个参数,`MotaOffscreenCanvas2D` 接口请参考 [API 文档](../api/motajs-render-core)。下面是一个典型案例: +多数情况下,我们只会使用到第一个参数,`MotaOffscreenCanvas2D` 接口请参考 [API 文档](../api/motajs-render-core/index.md)。下面是一个典型案例: ```tsx const render = (canvas: MotaOffscreenCanvas2D) => { @@ -379,9 +377,9 @@ type CustomContainerRenderFn = ( ) => void; ``` -- `canvas`: 要渲染至的画布,一般直接将内容渲染至这个画布上 -- `children`: 要渲染的子元素,按 `zIndex` 升序排列 -- `transform`: 当前元素的变换矩阵,相对于父元素,不常用 +- `canvas`: 要渲染至的画布,一般直接将内容渲染至这个画布上 +- `children`: 要渲染的子元素,按 `zIndex` 升序排列 +- `transform`: 当前元素的变换矩阵,相对于父元素,不常用 典型案例如下: diff --git a/docs/guide/ui-faq.md b/docs/guide/ui-faq.md index 53a16fc..9c28b09 100644 --- a/docs/guide/ui-faq.md +++ b/docs/guide/ui-faq.md @@ -31,7 +31,7 @@ watch(data, () => mySprite.value?.update()); ## 我的 UI 很卡 -可能使用了平铺式布局,建议使用 `Scroll` 组件或者 `Page` 组件来对平铺内容分割,从而提高渲染效率。可以参考对应的 [API 文档](../api/user-client-modules/Scroll)。 +可能使用了平铺式布局,建议使用 `Scroll` 组件或者 `Page` 组件来对平铺内容分割,从而提高渲染效率。可以参考对应的 [API 文档](../api/user-client-modules/组件 Scroll)。 ## 玩着玩着突然黑屏了一下,然后画面就不显示了 @@ -39,18 +39,18 @@ watch(data, () => mySprite.value?.update()); 关于这个问题的最佳实践: -- 如果你手动存储了一些元素,确保在卸载时将它们删除 -- 在删除它们的同时,调用它们的 `destroy` 方法,来确保可以被垃圾回收 -- 在控制台输入 `Mota.require('@motajs/render').MotaOffscreenCanvas2D.list` 来查看当前还有哪些画布正在使用,游玩一段时间后再次输入,检查数量是否增长,如果增长,说明发生了内存泄漏 -- 确保组件卸载时已经清空了定时器等内容 -- 如果需要每帧执行函数,请使用 `onTick` 接口,而非其他方法 +- 如果你手动存储了一些元素,确保在卸载时将它们删除 +- 在删除它们的同时,调用它们的 `destroy` 方法,来确保可以被垃圾回收 +- 在控制台输入 `Mota.require('@motajs/render').MotaOffscreenCanvas2D.list` 来查看当前还有哪些画布正在使用,游玩一段时间后再次输入,检查数量是否增长,如果增长,说明发生了内存泄漏 +- 确保组件卸载时已经清空了定时器等内容 +- 如果需要每帧执行函数,请使用 `onTick` 接口,而非其他方法 如果你直接使用 `MotaOffscreenCanvas2D` 接口,请确保: -- 在使用前调用了 `activate` 方法 -- 在使用后调用了 `deactivate` 方法 -- 如果不需要再修改画布属性,只需要绘制,请调用 `freeze` 方法 -- 如果之后不再使用该画布,请调用 `destroy` 方法 +- 在使用前调用了 `activate` 方法 +- 在使用后调用了 `deactivate` 方法 +- 如果不需要再修改画布属性,只需要绘制,请调用 `freeze` 方法 +- 如果之后不再使用该画布,请调用 `destroy` 方法 ## 为什么我的滤镜不显示? diff --git a/docs/guide/ui.md b/docs/guide/ui.md index 669c9b6..f530b5e 100644 --- a/docs/guide/ui.md +++ b/docs/guide/ui.md @@ -507,18 +507,18 @@ const click = () => { 鼠标和触摸交互包含如下类型: -- `click`: 当按下与抬起都发生在这个元素上时触发,冒泡阶段 -- `clickCapture`: 同上,捕获阶段 -- `down`: 当在这个元素上按下时触发,冒泡阶段 -- `downCapture`: 同上,捕获阶段 -- `up`: 当在这个元素上抬起时触发,冒泡阶段 -- `upCapture`: 同上,捕获阶段 -- `move`: 当在这个元素上移动时触发,冒泡阶段 -- `moveCapture`: 同上,捕获阶段 -- `enter`: 当进入这个元素时触发,顺序不固定,没有捕获阶段与冒泡阶段的分类 -- `leave`: 当离开这个元素时触发,顺序不固定,没有捕获阶段与冒泡阶段的分类 -- `wheel`: 当在这个元素上滚轮时触发,冒泡阶段 -- `wheelCapture`: 同上,捕获阶段 +- `click`: 当按下与抬起都发生在这个元素上时触发,冒泡阶段 +- `clickCapture`: 同上,捕获阶段 +- `down`: 当在这个元素上按下时触发,冒泡阶段 +- `downCapture`: 同上,捕获阶段 +- `up`: 当在这个元素上抬起时触发,冒泡阶段 +- `upCapture`: 同上,捕获阶段 +- `move`: 当在这个元素上移动时触发,冒泡阶段 +- `moveCapture`: 同上,捕获阶段 +- `enter`: 当进入这个元素时触发,顺序不固定,没有捕获阶段与冒泡阶段的分类 +- `leave`: 当离开这个元素时触发,顺序不固定,没有捕获阶段与冒泡阶段的分类 +- `wheel`: 当在这个元素上滚轮时触发,冒泡阶段 +- `wheelCapture`: 同上,捕获阶段 触发顺序如下,滚轮单独列出,不在下述顺序中: @@ -820,7 +820,7 @@ watch(selected, () => { ## 修改 UI 参数 -在打开 UI 时,我们可以传入参数,默认情况下,可以传入所有的 `BaseProps`,也就是所有元素通用属性,以及自己定义的 UI 参数。`BaseProps` 内容较多,可以参考 [API 文档](../api/motajs-render-vue/RenderItem.md)。除此之外,我们还为这个自定义怪物手册添加了 `floorId` 参数,它也可以在打开 UI 时传入。如果需要打开的 UI 参数具有响应式,例如可以动态修改楼层 id,可以使用 `reactive` 方法。示例如下: +在打开 UI 时,我们可以传入参数,默认情况下,可以传入所有的 `BaseProps`,也就是所有元素通用属性,以及自己定义的 UI 参数。`BaseProps` 内容较多,可以参考 [API 文档](../api/motajs-render-core/RenderItem.md)。除此之外,我们还为这个自定义怪物手册添加了 `floorId` 参数,它也可以在打开 UI 时传入。如果需要打开的 UI 参数具有响应式,例如可以动态修改楼层 id,可以使用 `reactive` 方法。示例如下: ```ts import { MyBookProps, MyBookUI } from './myUI';