mirror of
				https://github.com/unanmed/HumanBreak.git
				synced 2025-10-31 12:12:58 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			252 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			252 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Mota API 文档
 | ||
| 
 | ||
| 本文档由 `DeepSeek R1` 模型生成并微调。
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ## 核心功能
 | ||
| 
 | ||
| 模块化管理系统,提供跨进程模块注册与获取能力,支持数据端与渲染端分离架构。用于解决服务端录像验证与客户端渲染的模块隔离问题。
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ## 全局访问
 | ||
| 
 | ||
| ```typescript
 | ||
| // 浏览器环境
 | ||
| Mota.require('@motajs/client');
 | ||
| 
 | ||
| // ESM 环境
 | ||
| import { Mota } from '@motajs/core';
 | ||
| ```
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ## 核心方法
 | ||
| 
 | ||
| ### `require`
 | ||
| 
 | ||
| ```typescript
 | ||
| function require<K extends keyof ModuleInterface>(key: K): ModuleInterface[K];
 | ||
| function require<T = unknown>(key: string): T;
 | ||
| ```
 | ||
| 
 | ||
| **功能**  
 | ||
| 获取已注册的模块实例
 | ||
| 
 | ||
| | 参数  | 类型     | 说明                       |
 | ||
| | ----- | -------- | -------------------------- |
 | ||
| | `key` | `string` | 模块标识符或自定义命名空间 |
 | ||
| 
 | ||
| **返回值**  
 | ||
| 对应模块的导出对象
 | ||
| 
 | ||
| **预定义模块列表**:
 | ||
| 
 | ||
| ```typescript
 | ||
| interface ModuleInterface {
 | ||
|     // ---------- 样板库
 | ||
|     '@motajs/client': typeof Client;
 | ||
|     '@motajs/client-base': typeof ClientBase;
 | ||
|     '@motajs/common': typeof Common;
 | ||
|     '@motajs/legacy-client': typeof LegacyClient;
 | ||
|     '@motajs/legacy-common': typeof LegacyCommon;
 | ||
|     '@motajs/legacy-system': typeof LegacySystem;
 | ||
|     '@motajs/legacy-ui': typeof LegacyUI;
 | ||
|     '@motajs/render': typeof Render;
 | ||
|     '@motajs/render-core': typeof RenderCore;
 | ||
|     '@motajs/render-elements': typeof RenderElements;
 | ||
|     '@motajs/render-style': typeof RenderStyle;
 | ||
|     '@motajs/render-vue': typeof RenderVue;
 | ||
|     '@motajs/system': typeof System;
 | ||
|     '@motajs/system-action': typeof SystemAction;
 | ||
|     '@motajs/system-ui': typeof SystemUI;
 | ||
|     // ---------- 用户扩展
 | ||
|     '@user/client-modules': typeof ClientModules;
 | ||
|     '@user/data-base': typeof DataBase;
 | ||
|     '@user/data-fallback': typeof DataFallback;
 | ||
|     '@user/data-state': typeof DataState;
 | ||
|     '@user/data-utils': typeof DataUtils;
 | ||
|     '@user/legacy-plugin-client': typeof LegacyPluginClient;
 | ||
|     '@user/legacy-plugin-data': typeof LegacyPluginData;
 | ||
|     // ---------- 必要的第三方库
 | ||
|     MutateAnimate: typeof MutateAnimate;
 | ||
|     Vue: typeof Vue;
 | ||
|     Lodash: typeof Lodash;
 | ||
| }
 | ||
| ```
 | ||
| 
 | ||
| **示例**:
 | ||
| 
 | ||
| ```typescript
 | ||
| // 获取动画引擎
 | ||
| const Animate = Mota.require('MutateAnimate');
 | ||
| 
 | ||
| // 获取Vue实例
 | ||
| const Vue = Mota.require('Vue');
 | ||
| 
 | ||
| // 获取旧版UI系统
 | ||
| const LegacyUI = Mota.require('@motajs/legacy-ui');
 | ||
| ```
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ### `register`
 | ||
| 
 | ||
| ```typescript
 | ||
| function register<K extends keyof ModuleInterface>(
 | ||
|     key: K,
 | ||
|     data: ModuleInterface[K]
 | ||
| ): void;
 | ||
| function register(key: string, data: unknown): void;
 | ||
| ```
 | ||
| 
 | ||
| **功能**  
 | ||
| 注册模块到全局系统
 | ||
| 
 | ||
| | 参数   | 类型     | 说明         |
 | ||
| | ------ | -------- | ------------ |
 | ||
| | `key`  | `string` | 模块标识符   |
 | ||
| | `data` | `any`    | 模块导出对象 |
 | ||
| 
 | ||
| **注意事项**
 | ||
| 
 | ||
| -   重复注册会触发控制台警告
 | ||
| -   推荐在游戏初始化阶段注册
 | ||
| 
 | ||
| **示例**:
 | ||
| 
 | ||
| ```typescript
 | ||
| // 注册自定义模块
 | ||
| class MyCustomModule {
 | ||
|     static version = '1.0.0';
 | ||
| }
 | ||
| Mota.register('@user/custom-module', MyCustomModule);
 | ||
| 
 | ||
| // 使用自定义模块
 | ||
| const custom = Mota.require('@user/custom-module');
 | ||
| console.log(custom.version); // 输出 1.0.0
 | ||
| ```
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ## 渲染进程控制
 | ||
| 
 | ||
| ### `r`
 | ||
| 
 | ||
| ```typescript
 | ||
| function r<T = undefined>(fn: (this: T) => void, thisArg?: T): void;
 | ||
| ```
 | ||
| 
 | ||
| **功能**  
 | ||
| 包裹只在渲染进程执行的代码
 | ||
| 
 | ||
| | 参数      | 类型       | 说明                 |
 | ||
| | --------- | ---------- | -------------------- |
 | ||
| | `fn`      | `Function` | 需要渲染端执行的函数 |
 | ||
| | `thisArg` | `any`      | 函数执行上下文       |
 | ||
| 
 | ||
| **特性**
 | ||
| 
 | ||
| -   在录像验证和服务端环境下不会执行
 | ||
| -   无返回值设计
 | ||
| 
 | ||
| **示例**:
 | ||
| 
 | ||
| ```typescript
 | ||
| // 播放仅客户端可见的特效
 | ||
| Mota.r(() => {
 | ||
|     const animate = Mota.require('MutateAnimate');
 | ||
|     animate(heroSprite).shake(5, 1000);
 | ||
| });
 | ||
| ```
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ### `rf`
 | ||
| 
 | ||
| ```typescript
 | ||
| function rf<F extends (...params: any) => any, T>(
 | ||
|     fn: F,
 | ||
|     thisArg?: T
 | ||
| ): (...params: Parameters<F>) => ReturnType<F> | undefined;
 | ||
| ```
 | ||
| 
 | ||
| **功能**  
 | ||
| 生成渲染进程安全函数
 | ||
| 
 | ||
| | 参数      | 类型       | 说明             |
 | ||
| | --------- | ---------- | ---------------- |
 | ||
| | `fn`      | `Function` | 需要包装的原函数 |
 | ||
| | `thisArg` | `any`      | 函数执行上下文   |
 | ||
| 
 | ||
| **返回值**  
 | ||
| 经过安全包裹的函数,在非渲染环境调用返回 `undefined`
 | ||
| 
 | ||
| **示例**:
 | ||
| 
 | ||
| ```typescript
 | ||
| // 创建安全渲染函数
 | ||
| const safeAlert = Mota.rf((msg: string) => {
 | ||
|     alert(`客户端提示: ${msg}`);
 | ||
| });
 | ||
| 
 | ||
| // 调用时自动判断执行环境
 | ||
| safeAlert('仅在客户端显示'); // 服务端返回 undefined
 | ||
| ```
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ## 架构示意图
 | ||
| 
 | ||
| ```mermaid
 | ||
| graph TD
 | ||
|     subgraph 数据端
 | ||
|         Validator[录像验证系统]
 | ||
|         CoreLogic[核心逻辑]
 | ||
|     end
 | ||
| 
 | ||
|     subgraph 渲染端
 | ||
|         UI[用户界面]
 | ||
|         Effects[特效系统]
 | ||
|         Render[渲染引擎]
 | ||
|     end
 | ||
| 
 | ||
|     MotaSystem -->|require/register| Validator
 | ||
|     MotaSystem -->|r/rf| Render
 | ||
|     CoreLogic -->|跨进程通信| Effects
 | ||
| ```
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| ## 注意事项
 | ||
| 
 | ||
| 1. **模块隔离**  
 | ||
|    数据端模块与渲染端模块物理隔离,数据端不可直接引用渲染端,而渲染端是可以直接引用数据端的
 | ||
| 
 | ||
| 2. **版本兼容**  
 | ||
|    遗留系统模块(legacy-\*)将在未来版本逐步废弃,这些模块也不再提供 API 文档,如果需要自行阅读源码。
 | ||
| 
 | ||
| 3. **性能优化**  
 | ||
|    高频调用模块建议缓存引用:
 | ||
| 
 | ||
|     ```typescript
 | ||
|     // 推荐
 | ||
|     const Animate = Mota.require('MutateAnimate');
 | ||
| 
 | ||
|     // 不推荐
 | ||
|     function update() {
 | ||
|         const Animate = Mota.require('MutateAnimate'); // 每次调用都查找
 | ||
|     }
 | ||
|     ```
 | ||
| 
 | ||
| 4. **错误处理**  
 | ||
|    使用 try-catch 包裹高风险模块获取:
 | ||
|     ```typescript
 | ||
|     try {
 | ||
|         const LegacyUI = Mota.require('@motajs/legacy-ui');
 | ||
|     } catch (e) {
 | ||
|         fallbackUI();
 | ||
|     }
 | ||
|     ```
 |