跳到主要内容

介绍

ZTS 是一个针对 Unity Il2Cpp 优化的现代 TypeScript / JavaScript 脚本方案,由 QuickJS 驱动,设计与 ZLua 对齐。

它用清晰的规则统一 C# 与 JS 的双向调用:TsAppDomain.GetFunctionCSharp[…] / import from "csharp:…"[TsMarshalAs] 等,屏蔽底层易错的原生绑定细节。

为什么选择 ZTS

相对 Puerts / 自管 QuickJS,以及「手写绑定」:

更易用设计贴近 C#;零 per-type Wrap 白名单;类型懒绑定
更完备重载、ref/out、struct ByVal/ByObj、Nullable、委托、数组、指针、[TsMarshalAs]
更统一与 ZLua 同一套语义契约;会用 ZLua 即可很快上手 ZTS
更高效Player Il2Cpp 热路径为 C++ 桥接;签名复用 stub
更少 GC引用类型与 struct 默认 Registry / ByVal;另有 Opaque 等策略
双运行时Editor Mono + 发布 Il2Cpp Player
TS 一等公民TsProjectcsharp: 声明、进 Play 闸门;运行时仍只跑 emit 后的 JS

完整论述见 为什么选择 ZTS;对照见 选型对比

核心特性

能力说明
JS/TS → C#CSharp 懒绑定或 import { T } from "csharp:…";实例 obj.Method(args)
C# → JSTsAppDomain.GetFunction<T>(module, export)(specifier .js/.ts
双运行时Mono(Editor)与 Il2Cpp(Player);语义一致、实现路径不同
TypeScript官方工作流;见 TypeScript 工作流
MarshalByVal / ByObj / Opaque 等,见 Marshal 规范
miss未注册成员 throw Error('zts: member not found'),不返回 undefined
当前状态

Mono · 已完成Il2Cpp · 已完成

日常在 Editor(Mono) 开发;发版与性能以 Il2Cpp Player 为准。详见 项目状态

诚实边界

情况建议
不愿维护 libil2cpp 集成评估 Puerts / 更轻量自管方案
已有大量 Puerts 资产先读 迁移
只需极少手写绑定自管 QuickJS 可能更直接
团队只写 Lua优先 ZLua

公开性能数字:方法论对齐 ZLua;ZTS 公开基准待补齐(见 特性对比)。

相关产品

产品说明
本站(ZTS)Unity / 团结引擎上的 TypeScript·JavaScript(QuickJS)方案
ZLua同构语义的 Lua 产品线
zts-ueUnreal Engine 上的现代 TypeScript 方案(面向 C++ 优化);目前仍在开发中,本站文档不覆盖 UE 用法

下一步

  1. 5 分钟快速开始 — 跑通 js-demo / ts-demo
  2. 安装与集成 · 使用指南
  3. 设计概览 · 双运行时
  4. 规范总览 — 需要完备语义时再深入