TypeScript Importer for Unity
English | 日本語
TypeScript ImporterはUnityにTypeScriptを導入するためのライブラリです。TypeScript Importerをプロジェクトに追加することで、.tsが自動でJavaScriptにトランスパイルされ、TypeScriptAssetとして扱えるようになります。
また、TypeScriptToLuaに対応した拡張も用意されています。これを利用することで、.tsをJavaScriptの代わりにLuaにトランスパイルすることが可能になります。詳細はTypeScriptImporter.Luaの項目を参照してください。
- Unity 2021.3 以上
TypeScriptがインストールされていない場合は以下のコマンドを実行してTypeScriptをインストールします。
Warning
TypeScript Importerを利用するには、TypeScriptがグローバルにインストールされている必要があります。
npm install -g typescript
- Window > Package ManagerからPackage Managerを開く
- 「+」ボタン > Add package from git URL
- 以下のURLを入力する
https://github.com/AnnulusGames/TypeScriptImporter.git?path=src/TypeScriptImporter/Assets/TypeScriptImporter
あるいはPackages/manifest.jsonを開き、dependenciesブロックに以下を追記
{
"dependencies": {
"com.annulusgames.typescript-importer": "https://github.com/AnnulusGames/TypeScriptImporter.git?path=src/TypeScriptImporter/Assets/TypeScriptImporter"
}
}Assetsフォルダ以下に.tsファイルを追加することで、TypeScript Importerによって自動的にコンパイルが実行され、TypeScriptAssetに変換されます。
これは元のTypeScriptのソースコードとトランスパイル後のJavaScriptのソースコードの両方を保持するScriptableObjectです。
作成されたTypeScriptAssetは任意のJavaScriptの実行環境に渡すことができます。以下はJintを用いたサンプルです。
// example.ts
// これをResourcesフォルダ内に配置
declare function log(message: any): void;
log("hello!")using System;
using UnityEngine;
using TypeScriptImporter;
using Jint;
public class Example : MonoBehaviour
{
void Start()
{
var engine = new Engine()
.SetValue("log", new Action<object>(Debug.Log));
var asset = Resources.Load<TypeScriptAsset>("example");
engine.Execute(asset.JavaScriptSource);
}
}TypeScript Importerは.d.tsファイルを認識してTypeScriptDeclarationAssetに変換します。これはTextAssetのように利用できるほか、他の.tsファイルから参照することが可能です。
Project Settings > TypeScript ImporterからTypeScript Importerが利用するtsconfig.jsonファイルを変更することが可能です。
tsconfig.jsonの詳細は公式ドキュメントを参照してください。
指定がない場合、TypeScript Importerが一時的なtscondig.jsonを生成して利用します。
TypeScriptImporter.Luaを利用することで、.tsをJavaScriptではなくLuaにトランスパイルできます。TypeScriptImporter.Luaは別パッケージとして提供されているため、追加のインストールが必要です。
TypeScriptImporter.Luaは内部でTypeScriptToLuaを利用します。TypeScriptToLuaがインストールされていない場合は以下のコマンドを実行してTypeScriptToLuaをインストールします。
Warning
TypeScriptImporter.Luaを利用するには、TypeScriptToLuaがグローバルにインストールされている必要があります。
npm install -g typescript-to-lua
- Window > Package ManagerからPackage Managerを開く
- 「+」ボタン > Add package from git URL
- 以下のURLを入力する
https://github.com/AnnulusGames/TypeScriptImporter.git?path=src/TypeScriptImporter/Assets/TypeScriptImporter.Lua
あるいはPackages/manifest.jsonを開き、dependenciesブロックに以下を追記
{
"dependencies": {
"com.annulusgames.typescript-importer.lua": "https://github.com/AnnulusGames/TypeScriptImporter.git?path=src/TypeScriptImporter/Assets/TypeScriptImporter.Lua"
}
}.tsファイルをLuaとしてトランスパイルするには、有効なImporterを切り替える必要があります。ImporterのドロップダウンからTypeScriptImporter.Editor.TS2LuaImporterを選択します。
作成されたTypeScriptToLuaAssetは任意のLuaの実行環境に渡すことができます。以下はLua-CSharpを用いたサンプルです。
// example.ts
// これをResourcesフォルダ内に配置
console.log("hello!")using System;
using UnityEngine;
using TypeScriptImporter;
using Lua;
public class Example : MonoBehaviour
{
async void Start()
{
var state = LuaState.Create();
state.Environment["print"] = new LuaFunction("print", (context, buffer, ct) =>
{
Debug.Log(context.GetArgument(0));
return new(0);
});
var asset = Resources.Load<TypeScriptToLuaAsset>("example");
await state.DoStringAsync(asset.LuaSource, cancellationToken: destroyCancellationToken);
}
}TypeScriptToLuaの挙動を調整するにはtsconfig.jsonを編集する必要があります。詳細はTypeScriptToLuaのドキュメントを参照してください。



