Извините, я новичок в скриптах LUA и мне нужно работать над кодом, написанным другими.Пожалуйста, не сосредотачивайтесь на коде, моя проблема только в том, чтобы включить файлы и определить приоритет, какая функция должна быть вызвана, в случае переопределения.
Допустим, у меня есть файл Terrain.lua, содержащий класс Terrain,который имеет функцию Terrain: generate () и Terrain: generate (), вызывает Terrain: getLatitude ().
Terrain был включен в скрипт MyScript.lua, который переопределял Terrain: getLatitude () следующим образом:
include("Terrain");
function Terrain:getLatitude()
new code;
end
function myFunction()
local myTerrain = Terrain.create();
myTerrain.generate();
end
Это имеет эффект переопределения getLatitude (): когда вызывается myTerrain.generate (), generate () - это код из включенного "Terrain", но getLatitude () - это локальная функция с новым кодом , даже если она вызывается функцией из включенного класса.
Теперь, допустим, я хочу поместить часть кода во внешний файл Custom.lua.Пользовательский (а не MyScript) должен переопределить getLatitude ().Это ситуация:
Terrain.lua содержит класс Terrain, и эти функции
Terrain.create()
Terrain.generate()
Terrain.getLatitude()
MyScript.lua - это выполняемый сценарий, включая Custom:
include("Custom");
function myFunction()
return customFunction()
end
Custom.lua содержит:
include("Terrain");
function Terrain:getLatitude()
new code;
end
function customFunction()
local myTerrain = Terrain.create();
myTerrain.generate();
end
Теперь, если я вызываю customFunction () из MyScript, вместо getLatitude () из Custom используется getLatitude () из Terrain.Я предполагаю, что ovveride возможен только внутри исполняемого файла currenttiКак я могу добиться переопределения во включенном файле?
Надеюсь, этого примера достаточно, чтобы понять мою проблему, без публикации большого количества кода.Спасибо.