luaで複数ファイル呼び出し
サンプルマシン→lua_test09.bsg
main.luaだけじゃなくて別のファイルも呼び出せることがわかったのでメモ
#LuaModに関してのメモ
lua勢にとっては基本のキみたいなとこらしいが、私にとっては初見情報なのでどこかに書き残しておきたいyamabach.icon
同じ階層にあるファイルはdofile("file_name.lua")で読み込み可能
読み込み後はfile_name.luaにある関数を普段と同様に使うことができる
サンプル
呼び出す側
code:main.lua
-- Created 02/15/2021 22:45:16
local machine_info = machine.get_machine_info()
local starting_block = machine_info.get_block_info(0)
local msg = "default"
local function play()
-- called on simulation start
dofile("call.lua") -- ここで読み込み(playの外でも良い)
msg = test_call() -- 読み込んだファイルの関数を使用
end
local function update()
-- called every frame
end
local function late_update()
-- called every frame after update
end
local function fixed_update()
-- frame-rate independent update (called 100 times per second)
end
local win1 = rect.new(10, 500, 200, 200)
function display1()
gui.label(rect.new(10, 60, 100, 20), msg)
--今msgになってるところにtest_call()って入れても変わらない
gui.drag_window()
end
local function on_gui()
win1 = gui.window(1, win1, "display", display1) --> UIには"call.lua has been called!"と表示される
end
return {
play = play,
update = update,
late_update = late_update,
fixed_update = fixed_update,
on_gui = on_gui,
}
呼び出される側
code:call.lua
-- call.lua
function test_call()
return "call.lua has been called!"
end
当初不具合があってマシンを再ロードしたら1つしか読み込まれなかったけど、光の速さでilyshk4さんが直してくれた
神か!?yamabach.icon
メモ
変数がグローバル(localと付けないで定義)ならmain.luaの変数をcall.luaで使用することも、またその逆も可能