2016-12-02 2 views
1

Я работаю над игрой в lua (движок love2d), и теперь я хочу разделить мой код на несколько файлов. Проблема в том, что я не знаю, как это сделать, потому что я изучаю lua через разработку игр. Я знаю, что это возможно, но ответы, которые я нашел, были полезны. Если кто-нибудь скажет мне, как это сделать в «человеческом языке», и дайте мне пример (в коде), я очень благодарен.Как использовать несколько файлов в lua

С наилучшими пожеланиями, Том

+0

[Документы на SO] (http://stackoverflow.com/documentation/lua/1148/writing- и-using-modules # t = 201612021029042253729) –

ответ

3

Что вы ищете что-то это называется модули. Модуль представляет собой более или менее отдельный файл, содержащий некоторый код Lua, который можно загружать и использовать из нескольких мест в вашем коде. Вы загружаете модуль, используя ключевое слово require().

Пример:

-- pathfinder.lua 
-- Lets create a Lua module to do pathfinding 
-- We can reuse this module wherever we need to get a path from A to B 

-- this is our module table 
-- we will add functionality to this table 
local M = {} 

-- Here we declare a "private" function available only to the code in the 
-- module 
local function get_cost(map, position) 
end 

--- Here we declare a "public" function available for users of our module 
function M.find_path(map, from, to) 
    local path 
    -- do path finding stuff here 
    return path 
end 

-- Return the module 
return M 



-- player.lua 
-- Load the pathfinder module we created above 
local pathfinder = require("path.to.pathfinder") -- path separator is ".", note no .lua extension! 

local function move(map, to) 
    local path = pathfinder.find_path(map, get_my_position(), to) 
    -- do stuff with path 
end 

Отличный учебник по Lua модулей можно найти здесь: http://lua-users.org/wiki/ModulesTutorial

+0

Я думаю, что получаю это, но у меня все еще есть один вопрос: как передать переменные из одного файла в другой? – Tom

+0

Nevermind, исправил это уже: P для тех, кто хочет знать: просто добавьте переменные в таблицу! – Tom

Смежные вопросы