lua-how erfordern, arbeiten
Bin ich über eine Grafik-Bibliothek, mit der Sie das Programm in Lua. Ich habe ein Bedürfnis für die A* pathfinding Bibliothek so fand ich einen online. Es ist nur 1 lua-Datei, funktioniert die Wegfindung und 1 Beispiel-Datei. In der Beispiel-Datei wird es verwendet das Objekt wie:
-- Loading the library
local Astar = require 'Astar'
Astar(map,1) -- Inits the library, sets the OBST_VALUE to 1
Ich das Skript ausführen und alles funktioniert. So, jetzt füge ich die Astar.lua-Datei an den Speicherort, wo mein Grafik-engine ausgeführt wird und die gleiche Sache zu tun und ich bekomme den Fehler auf der Astar(Karte 1) line:
"Versuch, rufen Sie lokale 'AStar' (ein Zahlenwert)
Irgendwelche Ideen, warum würde ich immer diesen Fehler wenn ich dabei bin das gleiche wie das Beispiel, das kommt mit diesem AStar lib?
Hier ist ein wenig von der AStar-Datei
-- The Astar class
local Astar = {}
setmetatable(Astar, {__call = function(self,...) return self:init(...) end})
Astar.__index = Astar
-- Loads the map, sets the unwalkable value, inits pathfinding
function Astar:init(map,obstvalue)
self.map = map
self.OBST_VALUE = obstvalue or 1
self.cList = {}
self.oList = {}
self.initialNode = false
self.finalNode = false
self.currentNode = false
self.path = {}
self.mapSizeX = #self.map[1]
self.mapSizeY = #self.map
end
So beachten Sie, dass, wenn ich dieses aus meiner Grafik-engine, es ist die Rückkehr, 1, aber, wenn Sie von der Beispiel, dass es kam mit der Rückkehr einer Tabelle, die ist, was es sein sollte Rückkehr. Also nicht sicher, warum es würde nur wieder 1.
- Ich merke in der Fehlermeldung
"attempt to call local 'AStar' (a number value)"
, das S wird großgeschrieben. Ist das ein Tippfehler auf Ihrer Seite oder sind Sie vielleicht mit der falschen Großschreibung irgendwo?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie ist das Astar Hinzugefügt bekommen, um die
package.loaded
Tabelle für das Beispiel-Skript, im Gegensatz zu Ihrem code?Wenn Sie ein Skript ausführen, mit
require('Astar')
dies ist, was es tut:package.loaded['Astar']
ist ein nicht-nil-Wert.package.path
(undpackage.cpath
), mit '?' ersetzt mit 'Astar', bis es findet die erste passende Datei Muster.package.loaded['Astar']
zutrue
.'Astar'
als argument (zugänglich als...
im Modul script).package.loaded['Astar']
.package.loaded['Astar']
zurückgegeben werden.package.loaded['Astar']
als Teil seiner Ausführung und nichts zurückgeben.Als jemand bemerkte, in den Kommentaren oben, dein problem kommt vielleicht von dem laden des Moduls mit der 'AStar' statt 'Einstar'. Es ist möglich, dass Lua geladen wird das Skript mit dieser Zeichenfolge (da die groß-und Kleinschreibung in Windows, eine Suche für eine Datei mit dem Namen "AStar.lua" öffnen Sie eine Datei namens "Astar.lua"), aber das Skript wird nicht mit operiert, die (mit einem hart-codierten
"Astar"
statt der"AStar"
Lua ist, laden Sie das Skript unter).Müssen Sie
return Astar
am EndeAstar.lua
.