コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】UnityでLuaを使用できるようにする「xLua」紹介  基本編

f:id:baba_s:20170923092213p:plain

はじめに

xLua は C# ( Unity、.Net、Mono ) で Lua を使用できるようにするアセットで、
Android、iOS、Windows、Linux、OSX などをサポートしており
GitHub からダウンロードして使用することができます

今回は xLua の基本的な使い方を軽く紹介していきます

Hello world

// Example.cs

using UnityEngine;
using XLua;

public class Example : MonoBehaviour
{
    private void Awake()
    {
        var luaenv = new LuaEnv();
        luaenv.DoString( "CS.UnityEngine.Debug.Log( 'ピカチュウ' )" );
        luaenv.Dispose();
    }
}

LuaEnv クラスのインスタンスを生成することで Lua のプログラムを操作します
DoString 関数に Lua のプログラムを表す文字列を渡すと Lua のコードを実行できます
Lua の実行が完了したら Dispose 関数を実行して破棄します

Resources フォルダから Lua スクリプトを読み込む

-- example.lua.txt

CS.UnityEngine.Debug.Log( 'hello world' )
// Example.cs

using UnityEngine;
using XLua;

public class Example : MonoBehaviour
{
    private void Awake()
    {
        var luaenv = new LuaEnv();
        luaenv.DoString( "require 'example'" );
        luaenv.Dispose();
    }
}

f:id:baba_s:20170923094851p:plain

あらかじめ Lua のスクリプトを Resources フォルダに入れておき、
DoString 関数で require '【Lua スクリプトのファイル名(拡張子なし)】' を指定すると
Resources フォルダから Lua スクリプトを読み込んで実行できます

変数に設定した Lua スクリプトを読み込む

-- example.lua.txt

CS.UnityEngine.Debug.Log( 'hello world' )
// Example.cs

using UnityEngine;
using XLua;

public class Example : MonoBehaviour
{
    public TextAsset m_luaScript;

    private void Awake()
    {
        var luaenv = new LuaEnv();
        luaenv.DoString( m_luaScript.text );
        luaenv.Dispose();
    }
}

f:id:baba_s:20170923094901p:plain

TextAsset を格納できる public 変数に Lua スクリプトを設定して
DoString 関数に text を渡すことでも Lua スクリプトを実行できます

関連記事