127 lines
3.4 KiB
Markdown
127 lines
3.4 KiB
Markdown
# SI-M1 Face SDK 配置与 Editor 工具
|
||
|
||
SDK 使用 `FaceSdkSettings` 作为推荐配置方式。该配置是 `ScriptableObject`,可在项目中复用,并可同步到场景中的 `FaceModuleManager`。
|
||
|
||
## 1. 默认配置资产
|
||
|
||
默认路径:
|
||
|
||
```text
|
||
Assets/AISU/SI-M1 Face SDK/FaceSdkSettings.asset
|
||
```
|
||
|
||
打开菜单 `AISU/SI-M1 Face SDK/Settings` 后,Editor 会加载该路径。若文件不存在,点击 `Load Default` 会创建默认资产。
|
||
|
||
## 2. FaceSdkSettings 字段
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `TransportMode` | `FaceTransportMode` | 通信模式:`Auto`、`SerialPort`、`Mock` |
|
||
| `UseMockInEditor` | `bool` | Editor 下是否强制使用 Mock |
|
||
| `PortName` | `string` | Player / 运行时串口号 |
|
||
| `BaudRate` | `int` | Player / 运行时波特率 |
|
||
| `ReadBufferSize` | `int` | Player / 运行时读取缓冲区 |
|
||
| `UseEditorSerialDebugParameters` | `bool` | Editor 下连接真实串口时是否使用单独参数 |
|
||
| `EditorPortName` | `string` | Editor 调试串口号 |
|
||
| `EditorBaudRate` | `int` | Editor 调试波特率 |
|
||
| `EditorReadBufferSize` | `int` | Editor 调试读取缓冲区 |
|
||
| `MockResponseDelayFrames` | `int` | Mock 响应延迟帧数 |
|
||
| `DebugLogEnabled` | `bool` | 是否启用 SDK Debug 日志 |
|
||
| `RawLogEnabled` | `bool` | 是否派发原始 TX / RX 日志 |
|
||
| `LogPrefix` | `string` | 日志前缀 |
|
||
|
||
## 3. TransportMode 选择
|
||
|
||
| 模式 | 行为 |
|
||
|---|---|
|
||
| `Auto` | Editor 根据 `UseMockInEditor` 选择 Mock 或串口;Player 使用串口 |
|
||
| `SerialPort` | 使用 `SerialPortTransport` |
|
||
| `Mock` | 使用 `MockFaceModuleTransport` |
|
||
|
||
Editor 下有一个额外优先级:
|
||
|
||
```text
|
||
UseMockInEditor = true 时,强制使用 Mock,不打开真实串口。
|
||
```
|
||
|
||
因此 Editor 中如果需要连接真实串口,必须将 `UseMockInEditor` 设为 `false`。
|
||
|
||
## 4. Editor Serial Debug 参数
|
||
|
||
Editor 连接真实硬件时,建议开启:
|
||
|
||
```text
|
||
UseEditorSerialDebugParameters = true
|
||
```
|
||
|
||
开启后,Editor 中串口使用:
|
||
|
||
- `EditorPortName`
|
||
- `EditorBaudRate`
|
||
- `EditorReadBufferSize`
|
||
|
||
Player 中仍使用:
|
||
|
||
- `PortName`
|
||
- `BaudRate`
|
||
- `ReadBufferSize`
|
||
|
||
这样可以避免 Editor 调试口和发布运行口互相覆盖。
|
||
|
||
## 5. Editor 工具按钮
|
||
|
||
配置窗口按钮:
|
||
|
||
| 按钮 | 行为 |
|
||
|---|---|
|
||
| `Load Default` | 固定加载或创建默认路径的 `FaceSdkSettings.asset` |
|
||
| `Save` | 保存当前配置并同步场景中的 Manager |
|
||
| `Save and Create/Update Manager` | 保存配置后创建或更新场景 Manager |
|
||
|
||
同步 Manager 时会写入:
|
||
|
||
- `m_settings`
|
||
- `m_config.TransportMode`
|
||
- `m_config.UseMockInEditor`
|
||
- 串口参数
|
||
- Editor 串口参数
|
||
- Mock 延迟
|
||
- Raw Log 开关
|
||
|
||
PlayMode 中同步配置时,会调用 `FaceModuleManager.ApplySettings(settings)`,立即重建当前 transport。
|
||
|
||
## 6. Manager 配置方式
|
||
|
||
推荐方式:
|
||
|
||
```csharp
|
||
manager.ApplySettings(settings);
|
||
manager.Open();
|
||
```
|
||
|
||
兼容方式:
|
||
|
||
```csharp
|
||
manager.Configure(useMockInEditor: true, portName: "COM3", baudRate: 115200);
|
||
manager.Open();
|
||
```
|
||
|
||
外部通信层注入:
|
||
|
||
```csharp
|
||
manager.ConfigureTransport(customTransport);
|
||
manager.Open();
|
||
```
|
||
|
||
## 7. 场景约束
|
||
|
||
每个场景建议只保留一个 `FaceModuleManager`。
|
||
|
||
多个 Manager 可能导致:
|
||
|
||
- 多次打开同一串口。
|
||
- 重复接收和派发事件。
|
||
- UI 状态不一致。
|
||
|
||
`Create Manager GameObject` 菜单会校验 Manager 数量,并在存在多个 Manager 时停止创建。
|