Files
EVEngine/docs/usr/modules/system.md
T

51 lines
2.2 KiB
Markdown

# 系统信息模块
**脚本入口:** `eve.HostSystem()`
查询操作系统、CPU、内存、电量、剪贴板和 GPU 信息。
## 基本用法
```squirrel
local sys = eve.HostSystem();
print(sys.getOS() + " / " + sys.getProcessorCount() + " cores\n");
sys.setClipboardText("EVEngine");
```
## 对象关系与调用时机
`System` 是无状态的平台查询入口。硬件信息适合启动时缓存;wall time、进程内存和电量可低频刷新;`sleepMilliseconds()` 会阻塞当前线程。
## 目标导向指南
### 根据设备能力选择质量档
启动时读取 `getSystemRAM()`、`getProcessorCount()` 和 GPU 信息,将结果映射为低/中/高画质;这些值用于选择默认设置,不应每帧查询。
### 实现剪贴板和平台信息页
复制按钮调用 `setClipboardText(text)`,粘贴按钮直接用 `getClipboardText()` 读取,并对空字符串做处理。错误报告中可附加 `getOS()`、CPU、内存和显卡信息。
## 常见问题
- 每帧查询硬件:没有收益且部分后端查询昂贵。
- 用 wall time 驱动动画:系统时间可能跳变,应使用 Timer。
- 在主线程 sleep 做计时:会冻结事件和渲染。
## API 快查
下列方法名来自当前 Squirrel 绑定;同一模块创建的辅助对象(例如 `World`、`Body`、`Source`)的方法也列在这里。
- `getCPUCacheLineSize()`、`getClipboardText()`、`getEngineVersion()`、`getGpuDeviceType()`、`getGpuMemoryTotalMB()`、`getGpuName()`、`getGpuVendor()`、`getName()`
- `getOS()`、`getPlatform()`、`getPowerPercent()`、`getPowerSecondsLeft()`、`getPowerState()`、`getProcessMemoryMB()`、`getProcessorCount()`、`getSystemRAM()`
- `getWallTime()`、`setClipboardText()`、`sleepMilliseconds()`
## 使用要点
- 模块对象和它创建的资源对象应保存在全局或实体状态中,不要在每帧重复创建。
- 带 `update(dt)` 的系统应在 `eve_update` 调用;绘制方法应在 `eve_render` 调用。
- 参数约束、默认值和返回类型以对应模块头文件及 `addFunc` 绑定为准;本文 API 快查与当前源码同步生成。
**源码:** [`src/modules/system/`](../../../src/modules/system/)
**相关测试:** 在 [`test/`](../../../test/) 中搜索 `system`。