-
Notifications
You must be signed in to change notification settings - Fork 28
Lua: LuaMarshal
Утилита сохранения/загрузки, использующая Lua Marshal предоставляет служебные функции для сохранения и загрузки состояния игры. Она абстрагирует процессы сериализации и десериализации, позволяя легко сохранять состояние игры между сеансами.
-
saveToMarshalFile(stateTable)
: сериализует заданную таблицу Lua (stateTable
) и сохраняет её в файл. Полезно для сохранения состояний игры, конфигураций или сохранения любых других табличных данных. -
loadFromMarshalFile()
: считывает сериализованную таблицу Lua из файла, десериализует её и возвращает таблицу Lua. Полезно для загрузки сохраненных состояний игры, конфигураций или загрузки любых других ранее сохраненных табличных данных.
Аналогично исходным функциям save(f)
, load(r)
мы можем использовать функции save_state()
, load_state()
для записи в .dat файлы информации. Для этого необходимо зарегистрировать эти функции в биндерах аналогично save(f)
, load(r)
, после чего мы можем их использовать следующим образом:
function save_state()
local gameState = {
score = 1000,
level = 5,
player = {
name = "Player",
items = {"x", "y", "z"}
}
}
save_manager.saveToMarshalFile(gameState)
end
Для загрузки
function load_state()
local gameState = save_manager.loadFromMarshalFile()
if gameState then
score = gameState.score
level = gameState.level
if gameState.player then
player.name = gameState.player.name
player.items = gameState.player.items
end
end
end
Данный метод абстрагирует данные в отдельный .dat
файл, изолируя их от .scop
файла сохранения; запись данных не имеет верхнего ограничения, данный метод более стабилен и не провоцирует ситуации с "битыми" файлами сохранений.
Данный метод принимает только допустимые типы Lua, такие как числа, строки, логические значения, таблицы (которые содержат эти допустимые типы) или функции. Пользовательские данные (userdata
) не поддерживаются.