PuerTS for Unity 版本演进全解:从 Changelog 看 1.x 到 3.0 的架构重构、多语言支持与关键修复

发布时间:2026/9/17 19:35:30

PuerTS for Unity 版本演进全解:从 Changelog 看 1.x 到 3.0 的架构重构、多语言支持与关键修复 PuerTS for Unity 版本演进全解从 Changelog 看 1.x 到 3.0 的架构重构、多语言支持与关键修复【免费下载链接】puertsPUER(普洱) Typescript. Lets write your game in UE or Unity with TypeScript.项目地址: https://gitcode.com/GitHub_Trending/pu/puerts本文基于 PuerTS 官方 Unity 侧的中文变更记录unity/changelog-hans.md整理。该文件遵循 Keep a Changelog 格式并采用语义化版本管理完整记录了 PuerTS 从 1.3.x 到 3.0.2 的每一次重要发布。读完全文你将掌握三条主线3.0 时代“核心 语言扩展包”新架构与 Lua/Python 后端的引入、2.0 时代 xIl2cpp 优化模式与 ESM 模块体系的诞生、以及各版本中大量跨语言桥接类型、泛型、ref/out、GC问题的具体修复点便于你在升级项目或排查疑难 bug 时快速定位对应版本的能力边界。英文版见 unity/changelog.md版本总览一条主线串起 1.x → 2.x → 3.xPuerTS 的 Unity 版本演进可以归纳为三个时代1.3.x ~ 1.4.xUPM 化、全平台 Node.js 支持、ESM 支持、懒绑定机制2.0.0 ~ 2.2.3xIl2cpp 优化模式“puerts il2cpp 特别优化模式”落地、ESM 全面重构、多后端并存、WebGL 打包链路自动化3.0.0 ~ 3.0.2当前版本核心与语言扩展包解耦新增 Lua/Python 语言支持非 il2cpp 环境重写为 ExpressTree 动态生成双向桥接代码并支持 NuGet 分发。当前仓库中 Unity 侧核心包 unity/upms/core/package.json 的版本号正是3.0.2与变更记录的最新版对齐。3.x 系列核心 语言扩展包架构Lua/Python 首批加入[3.0.2] - 2026-04-01代码生成逻辑重写为C#实现移除对JS版生成的依赖 (#2311) fix #2305PInvoke非il2cpp环境支持静态C# wrapper生成 (#2313)PInvoke版本加入IntPtr的支持映射到int64修复打开THREAD_SAFE宏报错的问题 fix #2299Python使用索引语法创建泛型移除公开apipuerts.generic(#2314)Python支持用List[String]方式使用泛型同时支持泛型类型前缀的验证和加载 (#2312)Python支持以method(thisDynObj)的方式调用实例的泛型方法 (#2296)Python调整泛型使用__n为_n(#2294)Python支持使用[]传入泛型来构建类添加puerts.generic_method方法目前只支持静态方法完善puerts.gen_iterator(#2293)Lua泛型类也改为和Python类似的索引语法新增 PuerTS Agent编辑器AI助手支持MCP服务、流式响应等功能从源码结构看这一版的“代码生成逻辑重写为C#实现”对应了 C# 侧的 WrapperGenerator 测试工程 unity/test/dotnet/Src/WrapperGenerator/WrapperGenerate.cs生成不再依赖 JS 侧脚本编辑器代码生成链路完全落在 C# 域内。Python 侧的generic_method、gen_iterator等 API 出现在 unity/upms/python/Runtime/Src/Backends/BackendPython.cs 中并有配套测试用例验证泛型跨语言调用见 unity/test/Src/Cases/Python/CrossLang/GenericTest.cs迭代器见 unity/test/Src/Cases/Python/GenIteratorTest.cs。[3.0.1] - 2026-03-04解决一个js函数绑定不同的delegate可能会导致重复delete崩溃的问题 fix #2290尝试增加线程安全代码解决mac下调试链接时的概率崩溃 fix #2286解决同时引入多个backend打包webgl的一些编译问题V8 升级到 13.6.233.17解决字节码下async箭头函数的崩溃问题 fix #2270 (#2277)解决ios下去掉nodejs插件时用例编译不过的问题支持delegate的ref参数传入js fix #2257解决ws对象gc时会卡住的问题团结引擎兼容Unity 2018兼容修复lua在webgl上回退回longjmp不能在c函数特别是包含try-catch的里longjmp加上UnityEngine.Scripting.Preserve解决unity2022 webgl默认设置下lua用例会报no static field v的问题支持delegate可以配置解决新增用例找不到桥接代码的问题python 使用 InitIsolatedConfig 隔离配置 (#2285)python 类属性访问移除 get_/set_ 前缀 (#2282)python .NET 下自动设置 homenuget 添加 net9.0 net10.0 (#2284)Nuget 添加 Complete 包 (#2263)各项nuget对python在macOS/Linux/Windows的打包修复此版本是 3.0 架构落地后的第一个密集修复版重点在稳定性delegate 生命周期、多线程、WebSocket GC 卡死与 NuGet 分发完善Complete 包、多 TargetFramework。[3.0.0] - 2025-12-5全新的核心语言扩展包架构理论上可以支持任意语言首批新增语言lua、python非il2cpp环境完全重写采用ExpressTree动态生成双向桥接代码兼顾了性能和易用性支持nuget一些诸如uint64支持错误处理方式的调整多后端并存能力不仅不同语言可以并存同语言比如v8和quickjswebgl和quickjs也能并存3.0.0 是整个 3.x 系列的里程碑版本。仓库中的 UPM 目录结构直接印证了“核心 语言扩展包”的架构核心包com.tencent.puerts.coreunity/upms/core/package.json之外还有 unity/upms/lua/package.json、unity/upms/python/package.json、unity/upms/quickjs/package.json、unity/upms/nodejs/package.json、unity/upms/v8/package.json 等独立语言包。“多后端并存”的抽象基础是核心包中的抽象基类 unity/upms/core/Runtime/Src/Backend.cs。从该源码可以看到每个后端只需实现统一的 PAPI 接口面GetApiVersion、CreateEnvRef、GetApi、DestroyEnvRef、GetModuleExecutor、GetLoader以及OnEnter/OnTick/OnExit生命周期回调、远程调试器接口OpenRemoteDebugger/DebuggerTick/CloseRemoteDebugger和 GC 通知LowMemoryNotification。具体后端则按家族分派BackendV8unity/upms/v8/Runtime/Src/Backends/BackendV8.cs与BackendQuickJSunity/upms/quickjs/Runtime/Src/Backends/BackendQuickJS.cs继承BackendJsBackendNodeJSunity/upms/nodejs/Runtime/Src/Backends/BackendNodeJS.cs同样属于 JS 家族而BackendLuaunity/upms/lua/Runtime/Src/Backends/BackendLua.cs与BackendPythonunity/upms/python/Runtime/Src/Backends/BackendPython.cs直接继承Backend——这解释了为什么“同语言 v8 和 quickjs 也能并存”它们是平级的Backend实现由ScriptEnv在构造时选择注入。NuGet 分发由 unity/nuget/README.md 说明引入Puerts.Core以及目标平台的NativeAssets包Win32/Linux/macOS再按需引入Puerts.V8、Puerts.QuickJS、Puerts.NodeJS、Puerts.Lua、Puerts.Python等扩展最简用例如下using Puerts; var jsEnv new ScriptEnv(new BackendV8()); jsEnv.Eval(CS.System.Console.WriteLine(hello world);); jsEnv.Dispose(); Console.WriteLine(Press any key to exit...);同时该文档注明了适用前提可用平台为.net8.0win-x64/linux-x64/osxuniversal binaryPython 的osx版本目前仅支持osx-arm64且目前不支持 AOT——这是使用 NuGet 路线时的重要限制。2.2.xWebGL 回收机制、xIl2cpp 参数校验对齐[2.2.3] - 2025-11-28webgl采用FinalizationRegistryweakref双重机制保障对象回收 fix #2199修复传一个已经销毁的jsenv的jsobject到一个正常jsenv会导致崩溃的问题il2cpp优化下LowMemoryNotification也是可用的il2cpp优化和pinvoke版本一系列参数校验不对齐的问题修正il2cpp优化版本对于nulable更好的支持解决传bigint给uint参数会崩溃的问题解决虚方法调用没有调用到子类的问题解决非public方法及属性也会导出到js的问题 fix #2241il2cpp优化含引用类型的结构体其引用字段设置后可能被gc的问题 fix #2243反射支持枚举的ref[2.2.2] - 2025-5-13解决webgl打包工具windows下会重复npm i安装的问题微信小游戏一键导出的支持解决“token overflowed internal buffer”编译错误并加入DisallowedType的判断wrap引用了值类型但没声明的情况fix #2039webgl环境没有eval的异常不直接抛在js这会导致程序halt不再限制webgl下必须得用Puerts.WebGL.MainEnv.Get来创建JsEnv支持Unity生成的“Faster (smaller) builds”选项对应微信导出工具的il2cpp optimize size (#2046)修正webgl环境下原生setTimeout回调中访问C#报错的问题优化掉类名和字段名的存放方法名改为存放const char*指针节省内存[2.2.1] - 2025-4-25webgl也支持il2cpp优化特性了并默认打开webgl版本通过PostBuild自动打包js资源自动修改index.htmlwebgl版本Editor不再依赖nodejs backendil2cpp优化特性通过utf16传递支持优化字符串传输性能il2cpp优化特性一些和之前版本的参数传递判断不一致的修复解决泛型实例递归引用自己导致生成代码死循环上个提交把所有泛型类都过滤了fix #2015il2cpp优化下js函数转不了JsObject的问题fix #2012[2.2.0] - 2025-3-18native_src_il2cpp合并到native_srcil2cpp优化特性在android下不再要求静态库连接有些unity不支持il2cpp生成wrapper代码无需另外编译进pluginsil2cpp支持0 gc反射quickjs backend以及mult backend支持il2cpp优化简化quickjs backend和mult backend的编译直接引入quick-ng源码编译修正il2cpp优化的复合类型ref从c#到js的传递fix #1886除了ios和webgl之外所有平台的il2cpp打包都默认开启il2cpp优化2.1.x平台扩展与多后端能力[2.1.1] - 2024-10-25鸿蒙平台禁用jit高版本v8兼容升级quickjs到最新版本v8 backendquickjs添加websocket支持添加支持模块lazyload和自动卸载的cjs实现解决plugin定义THREAD_SAFE宏v8加锁不全的问题添加nsNintendo Switch的编译支持解决clearmodulecache的内存泄露android下默认使用剪裁版本[2.1.0] - 2024-06-25功能支持JsEnv参数指定Backend是V8还是quickjs修复C#中执行ExecuteModule时如果被加载模块有语法错误Unity会崩溃功能让puer.getLastException可以拿到ExecuteModule的错误 (#1686)优化重构quickjs的esm实现同一个函数中不会出现quickjs api和v8 api混用的情况改进之前esm强依赖quickjs backend某版本实现导致quickjs backend无法升级情况。并升级quickjs backend修复linux下nodejs后端找不到符号的问题修复加载空module文件失败的问题fix #1700优化修正值类型参数的gc问题fix #1527修复解决quickjs版本的String leaks功能鸿蒙系统编译支持修复Encoding.UTF8.GetBytes返回byte是不加0结尾的需要手动加否则AOT下会崩溃fix #1691功能编辑器下创建GenericDelegate时记录js堆栈在CheckLiveness失败时附带堆栈方便定位 (#1704)功能debug 构建时默认开启调试器支持 (#1707)功能新增v8 10.6.194的支持修复避免FunctionTemplate同key的属性fix #1714优化console.log在非unity环境应该通过Console.Error输出优化重构v8 esm实现支持top-level-await功能添加v8.getHeapStatisticsv8.getHeapSpaceStatistics优化不允许对静态函数执行new操作符修复支持Explicit Interface Implementationfix #1741修复quickjs后端js throw null/unfined会导致崩溃fix #1747优化$Ref 中去掉value字段fix #1752优化调试CtxGroupID每次递增之前固定一个ID可能多JsEnv单JsEnv多inspector可能有问题其中“支持JsEnv参数指定Backend是V8还是quickjs”是 3.0 多后端并存的前奏也即ScriptEnv接受不同Backend实例的用法对应 unity/upms/core/Runtime/Src/JsEnv.cs 的构造方式。2.0.xxIl2cpp 优化模式正式确立[2.0.5] - 2024-05-07修复添加几个 WebGL demo 用到的 api[2.0.4] - 2024-01-09修复调用extension方法并且方法带out或者ref参数会报错修复将JSObject赋值为null会报错修复调用带默认参数的extension函数时index读取不正确的bug修复xil2cpp下值类型无参构造字段为随机值的问题[2.0.3] - 2023-11-02重要遵循Assetstore策略生成菜单由PuerTS改到了Tools/PuerTS内功能支持dynamic import即import()#1540修复权限控制的一些bug #1512修复dts生成时关于interface的一些问题 #1541修复返回DateTime类型的函数dts错误的问题 #1565修复xil2cpp模式下对带params构造函数调用出错的问题 #1519修复xil2cpp模式下适配Thread::GetThreadStaticDataForThread参数变更 #1503修复xil2cpp模式下某些类生成出错的问题 #1520修复xil2cpp模式下调用结构体无参构造函数时导致的内存问题 #1563[2.0.2] - 2023-09-07修复静态wrapper里params参数获取到的默认值不正确的问题修复使用v8_8.4版本build的问题。unity2020及以下xil2cpp模式armv7可能需要v8_8.4才能编通 #1469优化xil2cpp模式下安卓平台合并v8和puerts两个库优化mac下改为使用universal binary不再区分两个平台覆盖升级时请注意删除旧Plugin优化JsEnv现在会暴露Isolate字段获得v8::Isolate的指针优化去掉puerts自己的SnapshotBlob.h直接使用v8内置的优化构建脚本现在可以运行在低版本node上 #1495优化Linux平台自带inspector[2.0.1] - 2023-08-16修复内部类型在link.xml中声明不正确的问题 #1460修复xil2cpp模式下使用结构体out参数可能导致crash的问题 #1460修复xil2cpp模式下扩展函数获取默认参数不正确的问题 #1456修复JSObject没有正确调用回收的问题[2.0.0] - 2023-07-31修复debugpath失效并导致VSCode调试不可用的问题修复xil2cpp模式下puer.$genericMethod无法获取父类泛型函数的问题 #1417修复生成代码时报GetFriendlyName is not a function的问题 #1437这个版本是2.0第一个正式版本。感谢所有参与过2.0内测的朋友。对升级有疑问的朋友可参见仓库内的中文升级指南。[2.0.0-rc.1] - 2023-07-14修复BlittableCopy不可用的问题 #1427修复两个wrapper生成的问题 #1433 #1432[2.0.0-rc.0] - 2023-06-30修复xil2cpp模式下结构体默认无参构造函数不可用的问题 #1301修复运算符重载不可用的问题 #1399修复已生成wrapper时点击生成报GetFriendlyName不存在的问题修复BlittableCopy类构造函数不生效的问题优化isESM检测优化 #13912.0.0 预发布系列xIl2cpp 模式命名与不兼容项[2.0.0-pre.5] - 2023-06-15修复生成带op_explicit的类的时候会出现报错 #1363修复ClearModuleCache导致crash的问题 #1364修复xil2cpp模式下结构体通过指针的方式产生递归定义时生成报错的问题 #1365修复xil2cpp模式下打印结构体时crash的问题 #1376修复向数字类型的C# Field/Prop赋值JSObject时crash的问题 #1383修复Filter过滤失效的问题优化xil2cpp的c plugin代码改成生成出来而不是包内自带优化添加FAQHelper用于优化代码生成和build时的错误提示优化反射调用时错误信息优化兼容接口被裁剪的情况优化console.log各个元素的分隔符由逗号变为空格优化Node.js事件循环优化 #1093 #1279优化屏蔽了DefaultMode StaticWrapper报的警告功能添加JSObject.GetT(string)ExecuteModule也重构改为使用该Get接口功能添加了一种新的Filter用于过滤xil2cpp模式的结构体类型声明[2.0.0-pre.4] - 2023-05-29修复从JS往C#抛错时可能出现非法字符修复注释文档生成的两个问题 #1322 #1329修复如果一个C#对象的构造函数抛错可能导致后续有对象莫名其妙变为null优化WebGL下的性能优化修复生成继承于IEnumerable的类在dts下报错 #1322为了更好区分Unity本身的Il2cpp backend和我们在2.0版本新做的puerts il2cpp特别优化模式我们将我们2.0的新模式命名为xIl2cpp mode修复在xIl2cpp模式下在C#侧创建ArrayBuffer可能导致它的内存被改写 #1340修复在xIl2cpp模式下在一个返回值为System.Object的函数里返回结构体会导致crash修复在xIl2cpp模式下传递nullable valuetype会导致crash #1320修复在xIl2cpp模式下往ref/out参数设置valuetype会导致crash #1343类注册逻辑重构 #1317。现在我们拥有了全新的权限控制能力修复了一些xil2cpp模式下的相关问题[2.0.0-pre.3] - 2023-04-19修复openupm版本ios Node.js无法启动的问题 #1302修复DTS生成时DontBinding方法的依赖依旧被生成的问题 #1295修复wrapper生成时某些property只有setter时报错的问题 #1298修复il2cpp绑定模式下static field的若干问题 #1288修复il2cpp绑定模式Unity2021 反射调用结构体时的crash问题 #1288修复link.xml生成后il2cpp绑定模式下依然无法找到泛型类的问题 #1288功能添加C# Enumerable在JS侧的forof支持 #1234功能重构旧版ExecuteModule的实现使之与il2cpp绑定模式下一致。同时不再支持import csharp和 import puerts建议使用全局变量功能添加IResolvableLoader用于实现node_modules加载与解决 #1270功能添加IBuiltinLoadedListener可以让Loader在内置脚本执行完毕后做一些操作便于封装第三方Loader[2.0.0-pre.1] - 2023-02-27添加了新的il2cpp binding方式性能有飞跃式提升。详见官方文档 Il2cpp绑定 章节本仓库的Unity代码变为了UPM目录结构将 commonjs-support 包移入了本仓库即现在的 unity/upms/commonjs与 1.x 版本不兼容的地方DateTime不再映射到js Date对象 #1145TypedValue只能传给object类型不再具备选择重载的作用反射模式下如果一个函数无重载也无默认参数不会进行参数检查Ref所使用的下标由[value]变为[0]如果你代码使用的是puer.$ref和puer.$unref而不是直接使用下标的话不受影响1.4版本中预告过的2.0版本不自带require这些不兼容项在仓库的中文升级指南中同样有对应说明如Puerts.Editor.Generator.BindingMode更名为Puerts.BindingMode、建议改用 ExecuteModule 或 commonjs 包等从 1.4.x 升级 2.0.x 的项目应重点核对这五点语义变化。1.4.x全平台 Node.js、ESM 与全局变量时代[1.4.1] - 2023-03-02以下为相比1.4.0的内容修复出现stack overflow错误后JsEnv析构产生crash的问题 #1208修复Node.js版本连接inspector时打不出Log #1201修复ESM模块报错时报错信息包含换行符会导致报错信息不正确 #1188修复生成时Obsolete字段未被过滤的问题 #1152修复将JS数字传递给C# object时浮点数精度丢失的问题功能JsEnv.ClearModuleCache现在可以清理ESM模块缓存功能JSObject现在可以接收一个JS函数 #1143 #1144功能添加PUERTS_DISABLE_SLOWBINDING适用于需要做权限控制的地方功能添加EXPERIMENTAL_PUERTS_DISABLE_SLOWBINDING适用于需要做权限控制的地方。该功能为试验功能还可能改动优化销毁JSFunction、JSObject时不加锁[1.4.1-pre.2] - 2023-02-09修复Node.js版本连接inspector时打不出Log #1201修复ESM模块报错时报错信息包含换行符会导致报错信息不正确 #1188优化销毁JSFunction时不加锁功能JsEnv.ClearModuleCache现在可以清理ESM模块缓存[1.4.1-pre.1] - 2023-01-27修复生成时Obsolete字段未被过滤的问题 #1152功能添加console.time #1170功能JSObject现在可以接收一个JS函数 #1143 #1144[1.4.1-pre.0] - 2022-12-23修复将JS数字传递给C# object时浮点数精度丢失的问题功能添加PUERTS_DISABLE_SLOWBINDING适用于需要做权限控制的地方[1.4.0] - 2022-11-24修复commonjs 查找带.目录时的问题[1.4.0-rc.7] - 2022-11-15修复返回无泛型Task时typescript检查报错的问题 #1027修复泛型类内部类在wrapper报错的问题 #1030修复子线程创建JsEnv报跨线程访问Unity API的错 #1049修复Unity2021.1下报IsByRefLike缺失的错 #1050功能添加v8和quickjs的Android x86_64支持功能新增Puerts.IModuleChecker。传入的ILoader如果实现了该接口则可以自定义哪些文件后缀会被识别为ESM模块[1.4.0-rc.6] - 2022-10-20支持了staticwrapper生成后歧义方法的调用 #1020修复BlittableCopy模式下同时为JS函数传递两个结构体时的错误 #1018修复Array类型再wrapper重载选择时报错 #1015重构wrapper模板小幅度性能提升在Node后端的ios下补上遗漏的--jitlessflag[1.4.0-rc.2] - 2022-09-28全平台支持了Node.js也就是新增了Android和iOS的支持。UPM包现在默认全使用Node.js Backend为了便于使用 Node.js 功能并解决 WebGL 版本在微信小游戏的问题加上 ES ModuleJS 生态的未来。从本版本开始添加全局变量CS和puer对应原本的require(csharp)和require(puerts)。PuerTS的require不再建议使用原有使用全局require的地方请改成global.CS、global.puer、import xxx抑或是puerts.require。PuerTS的全局require将考虑在1.5版本删除添加JsEnv.Backend并加入了一些GC APILowMemoryNotification也移进去了重构NodeRunnerExecuteModule处理多级依赖的问题修复GeneralSetterManager/GeneralGetterManager优化 #688修复了在inspector下打断点setInterval会引起crash的bug #707支持一个JsEnv连接多个inspectorhotreload也能和inspector同时使用了 #841去掉了Node.js的--no-browser-globals选项修复ESM加载时循环依赖会引起崩溃的问题修复ESM使用相对路径加载依赖时报错的问题添加了模块加载时的import.meta.url路径修复生成可空类型时dts报错的问题1.3.xUPM 化与懒绑定机制[1.4.0-preview.6] - 2022-07-25支持同时连接多个inspector调试端修复unity2021.3.4 inspector崩溃的问题修复 unity2021 相关崩溃 #708unity2018- 禁用generic wrapper[1.4.0-preview.5] - 2022-07-08android、ios平台的v8降到8.4以规避已知问题 #908修复 #907[1.4.0-preview.3] - 2022-07-08合入1.3.5的改动修复 #899[1.4.0-preview.1] - 2022-06-07支持apple silicon芯片 #591升级默认v8到9.4版本nodejs到16版本所有属性改为configurable #667添加require(puerts).getLastException接口 #629[1.3.9] - 2022-09-30修复了一个多JsEnv同时运行时报undefined is not a function或者cannot read property of undefined等错的问题修复ESM加载时循环依赖会引起崩溃的问题修复ESM使用相对路径加载依赖时报错的问题修复生成可空类型时dts报错的问题添加了模块加载时的import.meta.url路径[1.3.8] - 2022-08-31优化JSObject的内存占用 #947修复 field赋值时没有NativeObject类型检查的问题 #954修复 ILCPP模式下容易出现task.GetAwaiter(...).OnCompleted is not a function的问题 #966优化禁用构造函数设置为Lazy优化Editor下运行模式默认不打开反射extension功能[1.3.7] - 2022-07-281.3版本改为默认不开启泛型类的泛型式生成 #937 #918修复生成BlittableCopy时报参数数量不匹配的错 #938修复MJSImporter在2018下会出警告的问题[1.3.6] - 2022-07-13修复UnityMenu.cs传参错误修复带约束的泛型类wrapper生成错误[1.3.5] - 2022-07-06修复生成代码时出现重复key的问题 #657修复不能生成带Enum泛型参数的generic类型 #856修复生成delegate时没有过滤掉带指针类型的 #857修复生成的dts里interface的扩展函数返回值不对 #857修复不再生成enum的扩展函数 #857修复C#调用JS时如果带有ArrayBuffer参数某些顺序可能抛错 #853功能支持不带约束的泛型函数调用有限度的#819功能泛型类的wrapper文件现在可以使用泛型而不再是一种泛型参数一个文件 #816功能TypedValue在调用时现在可以直接传递给对应类型的参数 #833优化新增了一个可重用的原子github action用于下载backend文件[1.3.4] - 2022-05-18dts中的csharp模块现在和node.js一样使用export 导出 #750修复生成扩展函数时忽略了路径带Editor的Assembly的内容 #735添加执行内置脚本时的Try Catch并且这个时候会自动Destroy创建出来的IsolateDebug版本的Plugin现在全局会有手动gc函数正常情况还是建议使用JsEnv.LowMemoryNotification[1.3.3] - 2022-04-17修复event成员没有成功转为Lazy的问题 #739修复2021下某些in成员在生成代码里被写成了ref的问题 #758修复op_Implicit无法调用的问题 #767[1.3.2] - 2022-04-06修复UPM安装时安卓会识别到iOS库的问题修复旧有filter无效的问题主仓库加上了asmdef[1.3.0] - 2022-04-05终于支持UPM重排了整体目录结构使puerts符合unity package的结构标准重构了Generator代码结构分成几个小文件将libversion重命名为了apilevel重构JSFunction Invoke的机制fix #681去掉了一些deprecated的v8接口调用适配8.4以后的版本新增懒绑定模式在filter中return false的成员以前会在TypeRegister时被反射并在后续代码中依然能被调用新的版本里PuerTS继续兼容了这种调用但这类成员的反射时机不再是TypeRegister阶段而是在该成员被首次使用时filter的新写法为了适配新增的懒绑定模式filter除了return false现在还增加了返回BindingMode的模式可选值FastBinding即会生成static wrapper、LazyBinding前面提到的首次调用时反射、DontBinding完全不允许JS调用。例子可以查看仓库中 U2018Compatible.cs从变更记录看源码中的能力对应关系结合变更记录与仓库源码可以建立几条“版本条目 → 代码位置”的对应关系便于检索和验证多后端并存 / 语言扩展包3.0.0抽象接口在 unity/upms/core/Runtime/Src/Backend.cs各后端实现分别位于unity/upms/{v8,quickjs,nodejs,lua,python}/Runtime/Src/Backends/目录非 il2cpp 环境 PInvoke 重写3.0 系列C# 侧 PInvoke 运行时位于 unity/upms/core/Runtime/Src/PInvoke/ 目录含ScriptEnv.cs、TypeRegister.cs、Wrapper/等3.0.2 起支持静态 C# wrapper 生成编辑器代码生成3.0.2 起为 C# 实现生成入口在 unity/upms/core/Editor/Src/Generator/ 目录测试工程 unity/test/dotnet/Src/WrapperGenerator/WrapperGenerate.cs 提供了独立可运行的生成验证泛型跨语言Python/Lua 索引语法实现见 unity/upms/python/Runtime/Src/Backends/BackendPython.cs 与 PInvoke Wrapper 层 unity/upms/core/Runtime/Src/PInvoke/Wrapper/ExpressionsWrap.cs测试用例见 unity/test/Src/Cases/Python/CrossLang/GenericTest.cs懒绑定 / Filter 新写法1.3.0示例代码见 unity/upms/core/Editor/Src/U2018Compatible.csNuGet 分发3.0.0包说明与构建发布流程见 unity/nuget/README.md。版本选择与升级建议新项目直接使用 3.0.2UPM 包 unity/upms/ 各子包或 NuGetPuerts.Core 对应语言包 NativeAssets平台包。注意 NuGet 路线目前不支持 AOT且 Python 的 osx 包仅限 arm64见 unity/nuget/README.md。从 1.4.x 升级到 2.0.x重点核对 2.0.0-pre.1 列出的五点不兼容项DateTime 映射、TypedValue、ref 下标、require 移除、参数检查行为并参考 升级指南 中BindingMode命名变更等细节。从 2.x 升级到 3.0.x架构上从单一 JS 能力演进为“核心 语言扩展包”若项目只使用 TypeScript/JS核心变化主要是非 il2cpp 环境的桥接重写与代码生成 C# 化若希望启用 Lua/Python需引入对应语言包并按索引语法如 Python 的List[String]、puerts.generic_method编写泛型代码。排查历史 bug变更日志是问题定位的索引。例如 WebGL 对象回收问题对应 2.2.3 的 FinalizationRegistryweakref 双重机制字节码下 async箭头函数崩溃对应 3.0.1 的 V8 13.6.233.17 升级泛型实例递归引用导致生成死循环对应 2.2.1 的修复fix #2015。【免费下载链接】puertsPUER(普洱) Typescript. Lets write your game in UE or Unity with TypeScript.项目地址: https://gitcode.com/GitHub_Trending/pu/puerts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/17 19:35:30

ECU功能说明书深度解析:嵌入式开发与HIL测试的接口契约指南

简介:本资源是一份面向汽车电子工程师、维修技师及高职院校机电类专业学生的ECU功能技术说明书,聚焦发动机电子控制单元的核心原理与实操应用。文档系统梳理了ECU在发动机控制、转速调节、燃油喷射、点火时序、自动变速器协同及制动系统(ABS/…

2026/9/17 19:30:29

从零制作Linux LiveCD:定制系统便携化原理与实操

总有一些需求是装系统解决不了的,比如要把一套已经调好的 Linux 环境原封不动带到另一台机器上用,或者给一堆配置各异的电脑做系统维护。这种时候,把自己定制的 Linux 系统做成一个 LiveCD,就成了最顺手的方案。LiveCD 这个叫法虽…

2026/9/17 20:30:34

城市智慧排水信息化管控平台建设:从感知接入到内涝预警联动

简介:这份PPT资源面向城市水务管理、市政信息化建设及智慧城市解决方案从业人员,围绕城市智慧排水信息化管控平台的建设方案展开。内容涵盖平台建设目标与意义、核心技术选型、主要功能设计与实施路径等模块,可帮助读者理解如何借助物联网、3…

2026/9/17 20:25:34

深入理解fork与execve:进程创建的核心机制与实战避坑

搞Linux或者macOS系统编程的人,大概没人不认识fork()。可要问到fork之后怎么把进程变成另一个程序,很多人就开始含糊了,只会说“再调用exec呗”。其实这正是问题的关键:fork()和execve()从来不是两个孤立的概念,它们是…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/17 0:03:13

WiFi密码安全测试:从原理到实战的字典暴力破解指南

1. 写在前面:我为什么要研究WiFi密码这件事先交代一下背景。我身边有不少朋友,家里的WiFi密码常年是"12345678"或者"88888888",问就是"好记"。直到有一次,隔壁邻居蹭网蹭到我家路由器后台都进不去&…

2026/9/17 0:03:13

redis-py服务控制与监控函数实战:从ping到slowlog的巡检指南

我用 redis-py 写了快五年的业务代码,坦白说,真正让我觉得这个客户端“像一个成熟工具箱”的,不是 get/set 那套基本操作,而是它那批专门做服务控制与状态监控的辅助函数。日常开发里,大家把redis.Redis(host..., deco…

2026/9/17 0:03:13

SpringBoot+Vue3实现中小企业设备管理系统开发实践

1. 项目概述与核心价值中小企业设备管理系统是制造业、服务业等领域的基础信息化工具。传统设备管理往往依赖Excel表格或纸质记录,存在数据孤岛、流程混乱、维护成本高等痛点。这套基于Java SpringBootVue3MyBatis的技术方案,通过前后端分离架构实现了设…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码