UnityからJavaScriptを走らせるやつです。iOS, macOS限定です。
もう死語になったUnityScriptではなく、ちゃんとJavaScriptです。
実態はJavaScriptCoreを叩く薄いラッパーです。
jsからC#のメソッドを呼び出す、みたいな高度なことは出来ませんが、早いです。
使い方
とりあえず
var engine = new Engine(); engine.EvaluateScript(@" function fib(num) { if (num <= 2) return 1; return fib(num - 1) + fib(num - 2); }"); var (result, error) = engine.EvaluateScript(@"fib(10);"); Debug.Log(result); // -> 55
Object
var (result, error) = engine.EvaluateScript(@" var obj = new Object(); obj.var1 = ""abc""; obj.var2 = 123; obj "); var jsObject = (JsObject) result; var var1 = jsObject.ForProperty("var1"); Debug.Log(var1); // -> abc
何に使えるか
Aprotの記事でも書きましたが、
C#のビルド速度に耐えられなくなったので、jsやluaでゲームロジックが書けないものかと考えていました。
しかし、dotnet上でJavaScriptを走らせるライブラリはとにかく遅い。とてもゲームには使えません。
そんなある日、ほんの出来心で、JavaScriptCoreでjsを実行したらnodeより速いことが判明しました。
これは使える!と思ってUnityから叩けるようにしたのが、今回のBridgeJsCoreUnityです。
私事ですが
「Unityのウリって、色んなプラットフォーム上で動くことじゃん?
iOS, macOSでしか動かないものはちょっと・・・」
と言いたくなる気持ちは分かります。
そこで自分はHaxeを使うことにしました。
今作っているライブラリAprotを使うと、macで書いたHaxeのコードを即座にJavaScriptに変換しiOSへ転送、自動的にホットリロードされて実行されます。
これは、UnityでC#書いてビルドしてスタートボタン押すより数倍速いです。
その後、リリースビルドを作る時はHaxeからC#コードを生成して各プラットフォーム向けにビルドします。
こうなれば100%C#で書かれたプロジェクトと同等に扱えるので、どんなプラットフォームにも持っていけます。
これ、未来感じませんか?
未来感じた方は、AprotのリポジトリにスターをつけてTwitterもフォローしてやってください。
テンション上がります。