目次

module機能

module機能とは別のファイルに書かれたプログラムを呼び出して使用する事ができる機能です。

クラスのようにLuaスクリプトを機能ごとに切り出す事ができます。

module (VCI Object)の設定方法

  1. sizeの値を「使用するmoduleの数 + 1」の値に変更します
  2. Nameにmodule名を入力します
  3. moduleのプログラムをテキストエリアに入力します

注意事項・仕様など

moduleを呼び出して実行する

main.lua
-- math_custom に module の機能を格納する
local math_custom = require "math_custom"
 
local low = -5
local high = 1000
print(math_custom.clamp(low, 0, 300))
print(math_custom.clamp(high, 0, 300))
math_custom.lua
local module = {} -- この名前は何でも良い
 
function module.clamp(value, min, max)
    if value < min then
        value = min;
    elseif value > max then
        value = max;
    end
    return value;
end
 
return module

結果

0
300

moduleを呼び出して実行する(module 内の関数を local 指定する場合)

main.lua
-- module_1にmoduleの機能を格納する
local module_1 = require "module_1"
-- module_1の関数を呼び出す
print(module_1.GetName())
print(module_1.GetVector())
module_1.lua
-- 自分のファイル名を返す
local function GetName()
    return "module_1"
end
 
-- Vector3.__new(0,100,0)を返す
local function GetVector()
    return Vector3.__new(0,100,0)
end
 
-- VScodeのインテリセンス(入力予測)を使用するのに必要
return {
    GetName = GetName,
    GetVector = GetVector
}

結果

module_1
(0,100,0)

クラスのような使い方をする

main.lua
local module_2 = require "module_2"
local test1 = module_2.new(50,1)
local test2 = module_2.new(100,2)
test1:pp() -- コロンを使うことで引数のselfを省略出来る、test1.pp(test1)と同じ意味 
test2:pp()
module_2.lua
local module_2 = {} -- この名前は何でも良い
module_2.new = function(_x,_y) -- new functionで動的にテーブル生成して返す
    local obj = {}
    obj.x = _x
    obj.y = _y
 
    obj.pp = function(self) 
        print(string.format("(%d,%d)", self.x, self.y)) 
    end
    return obj 
end
 
return module_2

Enum のような使い方をする

main.lua
local fish = require "fish_id"
print(fish.chikuwa)
fish_id.lua
return {
    ebi = 1,
    chikuwa = 2,
    hanpen = 3
}

結果

2