排障
附录。开发期可在 Editor(Mono) 快速迭代;Player 问题先确认 ZTS/Generate/All 与 兼容性。主线学习请从 安装 起。
Canonical 工程:zts-demo(js-demo / ts-demo)。
安装与启动
Play 后完全无 JS 输出
| 检查项 | 说明 |
|---|---|
TsAppDomain.Initialize | 须 [RuntimeInitializeOnLoadMethod(BeforeSceneLoad)] 或更早 |
| loader 返回值 | LoadJsModule("app") 是否非 null;路径是否指向 JsScripts / out/ |
| Console 过滤器 | 确认未隐藏 Log |
module not found / loader 失败
| 检查项 | Editor | Player |
|---|---|---|
| 纯 JS 路径 | {ProjectRoot}/JsScripts/xxx.js | StreamingAssets/Js/xxx.js(或约定路径) |
| TS 路径 | TsProject/out/xxx.js | StreamingAssets/ZTS/xxx.js |
| canonical | 不含 .js;GetFunction("app", …) 不是 "app.js" | |
| Sync / emit | 可选 | 必须 Sync 或拷贝 emit |
类型与成员访问
程序集 / 类型找不到
- 错误形如
zts: assembly not found/type not found(或等价Error) - 检查程序集名 / 别名:
CSharp['AC'] = CSharp['Assembly-CSharp'] - 含 namespace须
CSharp.AC['Ns.Type']或import { T } from "csharp:Assembly-CSharp/Ns" - TS:是否已 Generate Typings;声明集是否与 Generate 同源
Error('zts: … member not found')(strict miss)
- 拼写、是否
public、是否在实例上误访静态(或反之) - 不要期望未知成员返回
undefined - 扩展方法是否已配置到该类型(见 Extension)
Event .get / .set 无效
已废弃。改用 add_OnX / remove_OnX,且 remove 时须 同一 function 引用。见 JS 调用 C#。
方法 this 丢失
demo.SetX(1); // ✅
const fn = demo.SetX;
fn(1); // ❌ 提取函数不绑定 this
保持 obj.Method(args) 调用形式。
C# 调用 JS
GetFunction 无效
- 是否已
TsAppDomain.Initialize - module / export 是否与 named export 一致(非
export default) T委托签名是否匹配- 是否刚
Reset:旧委托已作废,须重新GetFunction - 不要对
csharp:模块调用GetFunction
再次 Initialize 抛异常
已有主 JSContext 时须 TsAppDomain.Reset(loader),不能再次 Initialize「只换 loader」。见 宿主 API。
TypeScript / Play 闸门
| 现象 | 处理 |
|---|---|
| Play 被拦截 | 修复 tsc --noEmit 错误;或 Settings 临时关闸门 |
csharp: 补全缺失 | Generate Typings;提交 generated/ |
| 运行时仍像旧代码 | 未 emit / out/ 过期;Player 未拷贝 StreamingAssets |
import type 后构造失败 | 改为值导入 |
JS 调试器
断点不生效、连不上、Play 假死:见 JS 调试器(Host 类型名、端口、WaitForAttach、source map)。
Editor 正常、Player 失败
| 检查 | 说明 |
|---|---|
| Install | 本地 Il2Cpp / QuickJS / zts 树是否存在 |
| Generate | Il2Cpp 必须 Generate C++ stub |
| StreamingAssets | JS / TS emit 是否 Sync |
| 废弃 API | 勿用 Event .get;方法用点号而非冒号 |
更多对照见 Editor 与 Player、构建。
包路径
| 现象 | 处理 |
|---|---|
| Package 解析失败 | manifest.json 的 file: / git URL;开发期改路径后刷新 Package Manager |
| 换包后 TS types 失效 | 检查 tsconfig 对包内 ZTS~/types 的引用 |
学习路径
| 上一篇 | JS 调试器 |
| 下一篇 | Editor 与 Player |