5) Ограничение по движкам, игру можно сделать на: Unity, Construct3, GameMaker, Defold, JS (Phaser,Pixi), Cocos Creator, PlayCanvas, Gdevelop, Godot
Читать полностью…Ну мы тут поднимали эту тему месяца 2\3 назад, Может в этом году и запустим, обсудим.
Читать полностью…Использую чисто при запуске сцены. В других файликах спокойно без этого обхожусь. Хотя конечно без этого обойтисб можно везде
Читать полностью…Это отдельные штуки, но для нуба достаточно просто учиться делать простую надёжную древовидную структуру "всё что используется в скрипте — то зареквайрено локально в этом же скрипте", чтобы видеть все хвосты
, откуда они тянутся и кто их здесь оставил.
Можно это всё оформить с сетерами и геттерами, и при сеттере просто занулить присваивание, а присваивать по делу чисто хардкорно
Читать полностью…Вообще, чтобы менять глобальные переменные достаточно просто быть нубом.
"Да вот щяс поменяю в тестовых целях, посмотрю чо да как".
Потом: "А ПОЧЕМУ ОНО НЕ МЕНЯЕТСЯ Я НА МЕСТЕ ОБЪЯВЛЕНИЯ ИСПРАВЛЯЮ"
Я приисполнисля и делаю на каждую сцену fenv, где изменять конфиг и метод глобалки нельзя, но можно их получать
Читать полностью…Единственный вопрос, насколько нужго быть для этого сонным. Да и создавая локальные переменные (не кидая в них глобальные таблицы) в общем всё будет ок
Читать полностью…Вот кста сама getNamespace:
utils.getNamespace = function(tables)Читать полностью…
local code = "return function(_, key) return tables[1][key] "
for i = 2, #tables do
code = code .. "or tables[" .. i .. "][key] "
end
code = code .. "end"
local ns = {}
ns.__index = loadstring(code)()
setfenv(ns.__index, { tables = tables })
return ns
end
Вот например у тебя игрушка. У игрушки есть набор состояний.
Есть игровые менюшки, есть игрушка сама по себе, есть миниигрушки в игрушке. Всё вот это — вполне оформляется отдельными табличками.
Почему бы не хранить вообще всё что к ним относится, в них самих?
Какой-то "глобальный конфиг"? Почему бы не сделать его просто скриптом, и не реквайрить везде где он нужен?
Все глобальные переменные у меня только в main.lua.
Его не трогаю, только по делу. Во всех остальных использую по надобности, а нужны они часто
Scene.Group = display.newGroup()Читать полностью…
scene = "fileManager"
local myG = utils.getNamespace({
config,
utils,
{
Group = Scene.Group,
timer = setmetatable({
performWithDelay = addTimer,
cancelAll = Scene.timerCancelAll,
pauseAll = Scene.timerPauseAll,
resumeAll = Scene.timerResumeAll,
}, {__index = timer}),
Runtime = setmetatable({
addEventListener = addRuntimeEvent,
cancelAll = Scene.runtimeCancelAll,
}, {__index = Runtime}),
},
_G
})
setfenv(1, setmetatable({}, myG))
Вообще, есть прекол.
Попробуй в одном месте в начале main.lua сделать вот так:
setmetatable(_G, {__newindex = function(k, v) error("Set global " .. tostring(k), 2) end})
Там и доступ к методам таблиц проще, если нужно, просто закидываю как аргумент в метод createNameSpace (или как-то так) и радуюсь жизни
Читать полностью…Прикольно, балин как сразу увидел, сразу подумал мне арт рисют хахах)
Конечно такое редко, но бывает