「Unity フレームスクリプトにLuaを使う」の版間の差分

提供: LWF Wiki
移動: 案内検索
(Luaを動かしてみる)
65行: 65行:
 
  lua.DoString(luaScript.text);
 
  lua.DoString(luaScript.text);
 
<br/>
 
<br/>
そして、Loadの引数に下記を追加してください。<br/>
+
*Loadの引数に下記を追加してください。<br/>
※エディタの補完にluaStateは表示されませんが、先ほどのLWF_USE_LUAの設定を行えばエラーは発生しません。<br/>
+
*:エディタの補完にluaStateは表示されませんが、先ほどのLWF_USE_LUAの設定を行えばエラーは発生しません。<br/>
 
  luaState:lua.luaState
 
  luaState:lua.luaState
 
<br/>
 
<br/>
Lua関連の記述を追加した場合の全体のサンプルです。<br/>
+
*Lua関連の記述を追加した場合の全体のサンプルです。<br/>
 
  using UnityEngine;
 
  using UnityEngine;
 
  using System.Collections;
 
  using System.Collections;

2014年11月7日 (金) 12:20時点における版

Unity用のLWFではフレームスクリプトにASではなくLuaという言語を用いることで
タイムライン制御やイベント送信以外に様々な処理が可能なりFlashでActionScriptを用いて作るような動的アニメーションを制作することができます

目次

Luaの書き方

タイムラインにLuaを書く場合、HTML5版のJavaScriptと同じように、コメントブロックにLuaスクリプトを書きます。

/* lua
    _root.mc1.x = 5
*/


実行タイミングとして、lua, lua_load, lua_postLoad, lua_enterFrame 等が使えます。
ボタンの場合、onハンドラの中に書きます。

on(press){
    /* lua
        _root.mc1.x = 5
    */
}




Luaを書いてみる

タイムラインにLuaを記述して、LWFSでコンバートするとタイムラインのスクリプトが外部ファイルとなって
LWFS_work_output/unity/<LWF名> 内にテクスチャ等と一緒に
<LWFファイル名>_script.txtというファイルが生成されています。

【自身を動かすサンプル】

/* lua_enterFrame
    self.x = self.x + 1
    self.y = self.y + 1
*/




KopiLuaInterfaceの導入

Unity上でLuaスクリプトを動かすためにKopiLuaInterfaceを導入する必要があります。

以上で導入は完了です。


Luaを使えるように設定

デフォルトではLWFはLuaが使えるようになっていないので、Unityで設定を変更して使えるようにする必要があります。

Unityにてメニューから
Edit -> Project Settings -> Player
を選択肢てください。

InspectorにPlayerSettingsが表示されたら
Other SettingsのConfiguration項目のScripting Define Symbolsの欄に LWF_USE_LUA
という記述を追加してください。



Luaを動かしてみる

これでLWFでLuaを動かす準備が整ったので実際に動かしてみます。
LWFを動かしているスクリプトに下記を追加します

  • 一番上に追加してください
using LuaInterface
  • Load前に追加してください
TextAsset luaScript = Resources.Load("スクリプトファイルのパス") as TextAsset;
lua = new Lua();
lua.DoString(luaScript.text);


  • Loadの引数に下記を追加してください。
    エディタの補完にluaStateは表示されませんが、先ほどのLWF_USE_LUAの設定を行えばエラーは発生しません。
luaState:lua.luaState


  • Lua関連の記述を追加した場合の全体のサンプルです。
using UnityEngine;
using System.Collections;
using LuaInterface;

[ExecuteInEditMode]
public class LWFPlayer : LWFObject {

	public string path;
	public bool useAdditionalColor = false;

	public bool useLua = false;
	Lua lua = null;
	KopiLua.Lua.lua_State luaState = null;

	// Use this for initialization
	void Start () {

		if (useLua) {
			TextAsset luaScript = Resources.Load(path + "_script") as TextAsset;
			lua = new Lua();
			lua.DoString(luaScript.text);
			luaState = lua.luaState;
		}
		Load (path, zRate:(float)0.0001, useAdditionalColor: useAdditionalColor, luaState:luaState);

		ScaleForHeight((int)Camera.main.orthographicSize * 2);
	}

}

上記のサンプルでは対象のGameObjectのInspectorにてuseLuaにチェックを入れた場合のみスクリプトファイルを読み込むようにしています。