====== module機能 ======
module機能とは別のファイルに書かれたプログラムを呼び出して使用する事ができる機能です。
クラスのようにLuaスクリプトを機能ごとに切り出す事ができます。
* module機能の使用には [[https://github.com/virtual-cast/VCI/releases | VCI v0.20]] 以降が必要です。
* VirtualCastは1.7.0a以降で使用可能。
===== module (VCI Object)の設定方法 =====
{{:vci:script:module:img1.jpg?direct&400|}}
- sizeの値を「使用するmoduleの数 + 1」の値に変更します
- Nameにmodule名を入力します
- moduleのプログラムをテキストエリアに入力します
==== 注意事項・仕様など ====
* **moduleからmoduleの呼び出しは可能です**
* (最初期のバージョンではできませんでしたが、現行バージョンであれば問題なく使えます)
* moduleをバーチャルキャストでデバッグしながら作成する場合は…\\ 3のテキストエリアは空白のままアップロードした後に、\\ EmbeddedScriptWorkspaceのフォルダから編集を行います\\
* [[vci:updatelog:2.0.0a | VCI v0.30]] から、**vci.assetsなどのvciテーブル以下の関数にmoduleからアクセスできるように**なりました
* Quaternion,Vector3などの型は使用可能です
===== moduleを呼び出して実行する =====
-- 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))
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 指定する場合) =====
-- module_1にmoduleの機能を格納する
local module_1 = require "module_1"
-- module_1の関数を呼び出す
print(module_1.GetName())
print(module_1.GetVector())
-- 自分のファイル名を返す
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)
===== クラスのような使い方をする =====
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()
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 のような使い方をする =====
local fish = require "fish_id"
print(fish.chikuwa)
return {
ebi = 1,
chikuwa = 2,
hanpen = 3
}
==== 結果 ====
2