はじめに
https://ironpython.codeplex.com/
「IronPython」を Unity プロジェクトに導入することで
Python スクリプトから Unity API を呼び出すことができるようになります
導入方法
- 下記のページを開きます
https://ironpython.codeplex.com/releases/view/169382 - 「IronPython 2.7.5 Binaries」を選択します
- ダウンロードした「IronPython-2.7.5.zip」を展開します
- 「Platforms/Net35」フォルダ内の下記のファイルを
Unity プロジェクトの「Plugins」フォルダに移動します- IronPython.dll
- IronPython.Modules.dll
- Microsoft.Dynamic.dll
- Microsoft.Scripting.dll
- Microsoft.Scripting.Core.dll
- Microsoft.Scripting.Metadata.dll
使い方
まず、下記のファイルを「example.txt」という名前で Unity プロジェクトに追加します
import UnityEngine from UnityEngine import * Debug.Log( 'Hello World!' ) Debug.Log( 'timeScale: %f' % Time.timeScale ) go = GameObject() go.name = 'pokemon' rigidbody = go.AddComponent( Rigidbody ) rigidbody.isKinematic = True
次に、下記のファイルを「Example.cs」という名前で Unity プロジェクトに追加します
using IronPython.Hosting; using UnityEngine; public class Example : MonoBehaviour { public TextAsset m_textAsset; private void Awake() { var text = m_textAsset.text; var engine = Python.CreateEngine(); engine.Runtime.LoadAssembly( typeof( GameObject ).Assembly ); var scope = engine.CreateScope(); var source = engine.CreateScriptSourceFromString( text ); source.Execute( scope ); } }
そして、適当なゲームオブジェクトを作成して「Example.cs」をアタッチし、
「Text Asset」に「example.txt」を設定します
これで、ゲームを実行すると、Python スクリプトで記載された処理が呼び出されて
ログが出力されたりゲームオブジェクトが作成されたり、
ゲームオブジェクトに Rigidbody がアタッチされたりすることが確認できます