uts2puerts
Version:
A tool to convert uts project to puerts project.
57 lines (43 loc) • 1.95 kB
Markdown
# uts2puerts
#### **内部工具**
#### 介绍
将使用uts引擎的工程转译为使用puerts引擎工程的代码。
使用uts的TypeScript代码和使用puerts的略有不同,比如:
* puerts需要`import CSharp from 'csharp'`,uts不需要
* uts: `UnityEngine.GameObject` VS. puerts: `CSharp.UnityEngine.GameObject`
* uts: `uts.log(...)` VS. puerts: `console.log(...)`
* uts可直接传数组给CS,puerts需构造诸如`CSharp.System.Array$1<T>`类型的对象
* uts的事件全部转换成委托,puerts支持`AddListener`
* etc.
本工具用于编译时自动转译代码,从而生成puerts版本项目。
#### 安装教程
```
npm i uts2puerts -g
```
#### 使用说明
```
uts2puerts -p projectRoot -r translateRule.txt
```
1. `-p/--project-root`: 指定工程路径
2. `-r/--rule`: 指定转译规则配置
#### 转译规则配置
大部分转译可自动完成,部分无法自动完成的,可提供配置进行逐一替换,规则文件格式如下:
```
TsScripts\System\login\LoginModule.ts
import { ArrayUtil } from "System/utils/ArrayUtil";
>>>>>>>>>>>>
let request = CSharp.ResLoader.CreateAssetsRequest(CSharp.AssetPriority.High1, [UIPathData.CreateRoleView]);
<<<<<<<<<<<<
let request = CSharp.ResLoader.CreateAssetsRequest(CSharp.AssetPriority.High1, ArrayUtil.toStringArray([UIPathData.CreateRoleView]));
------------
TsScripts\System\test\TestView.ts
>>>>>>>>>>>>
textline.onValueChanged = delegate(this, this.onInputChange, this.m_dcnt);
<<<<<<<<<<<<
(textline.onValueChanged as unknown as CSharp.UnityEngine.Events.UnityEvent).AddListener((value?: string)=>this.onInputChange(value, this.m_dcnt));
```
多个文件使用`------------`分割
每个文件替换规则分如下几部分:
* 文件相对路径和需要添加的import语句(如果有)
* 原始待替换语句,以`>>>>>>>>>>>>`开始
* 替换后语句,以`<<<<<<<<<<<<`开始