高分记录在Corona中。文件读写。

我有这个错误:

尝试连接全局变量“Highscore”(一个nil值)

这是我在Game.lua文件中检查Highscore的方法:

function HighscoreUpdate()
    if(score>Highscore)then
        Highscore = score
    end
end

这是我如何将Highscore保存在score.txt中,并在所有CollisionChecks之后调用它(这里没有任何错误):

    function savescore(hs)
        local path = system.pathForFile( "score.txt", system.DocumentsDirectory )

        local file = io.open ( path, "w" )

        local contents = tostring(hs)
        file:write( contents )

        file:close( )
    end

这是我尝试加载它的方法(我认为这是问题所在):

    loadScores = function()
    local scores = {}
    local str = ""
    local n = 1

    local path = system.pathForFile( "score.txt", system.DocumentsDirectory )

    local file = io.open ( path, "r" )
    if file == nil then
        return 0
    end

    local contents = file:read( "*a" )
    file:close()

    for i = 1, string.len( contents ) do
        local char = string.char( string.byte( contents, i ) )

        if char ~= "|" then
            str = str..char
        else
            scores[n] = tonumber( str )
            n = n + 1
            str = ""
        end
    end

    return scores[1]
end

有任何思路吗?

点赞
用户1870706
用户1870706

我没有看到你实际尝试将任何内容与Highscore连接起来的地方。我也没有看到你在哪里初始化它。默认情况下,未初始化的变量是nil。如果你正在尝试在某个地方打印出Highscore,例如:

print("Highscore: " .. Highscore)

你将会得到这个错误。如果你不想出现这个错误,你可能会得到另一个错误,尝试将一个数字与nil进行比较。所以确保你在某个地方初始化了Highscore,这应该解决你的问题。

2013-10-14 01:13:16
用户2370751
用户2370751

在你的 main.lua 文件中使用以下代码

-- 读取和写入设置
-------------------------------------------------- ---------------------------------
local path = system.pathForFile(“myGameSettings.json”,system.DocumentsDirectory)
-- io.open 在路径处打开文件。如果没有找到文件,则返回 nil
local createNewMGS,errStr = io.openpath,“r”)

if createNewMGS then
   -- 不做任何操作
else
   -- 创建文件,因为它还不存在
   createNewMGS = io.openpath,“w”)
   if createNewMGS then
        print(“创建了新的 myGameSettings”)
        local loadsave = require(“loadsave”)
        ----------------------------------
        myGameSettings = {}
        myGameSettings.HighScore = 0
        -- 在这里你可以创建设置

        ---------------------------------
        loadsave.saveTable(myGameSettings,“myGameSettings.json”)
   else
        print(“创建文件失败!”)
   end
end
io.close(createNewMGS)

local loadsave = require(“loadsave”)
--------------------------------
myGameSettings = {}
myGameSettings.HighScore = 0
-- 在这里你可以创建设置

-------------------------------
-- 读取设置
myGameSettings = loadsave.loadTable(“myGameSettings.json”)
2013-11-07 03:03:03