使用Corona SDK的场景之间分数。

我有两个场景:game.lua 文件和 restart.lua 文件。一旦游戏结束,它会转移到重新启动屏幕。在重新启动屏幕上,我有“你的当前得分:”和“你的最高分:”,以及值。然而,在每次重新启动之后,这些值不会更新自己。直到我重新启动应用程序,最高分才会更新,当前分数才会重置为零。

例如:i)假设我的最高分是 21。我打一次游戏,获得了一个新的最高分:23。我的当前得分变为了 23,但我的最高分仍然是 21(直到我重新启动应用程序)。

ii)我再玩一次(没有重新启动应用程序),得了 5 分。重新启动屏幕仍然显示我的当前得分为 23。

因此,一旦我玩过一次游戏,所有得分都会停滞不前。

在应用程序中,我使用自我模块保存最高分(因为它必须是永久的),并将当前得分设置为全局变量。

这是我的游戏场景中的代码:

highscore = loadFile("score.txt")--自我模块为我加载此文件

score = 0--保持全局以在重新启动屏幕中使用
local scoreText = display.newText(score,W,0)--创建文本
sceneGroup:insert(scoreText)

local function checkForFile()
    if highscore == "empty" then
        highscore = 0--如果文件为空,则给出最高分数
        saveFile("score.txt", highscore)--保存新的最高分数
    end
end
checkForFile()

local function onObjectTouch(event)
    if(event.phase == "began") then
        score = score+1--在触摸时增加分数
        scoreText.text = score

        if score>tonumber(highscore) then
        saveFile("score.txt",score)--如果是新的最高分数,则将分数保存为最高分数
    end

        vertical = -150--设置球的速度
        ball:setLinearVelocity(0,vertical)
        print(ball.x .. " " .. event.x)
    end
end

Runtime:addEventListener("touch", onObjectTouch)

这是我的重新启动场景中的代码

------------highScore文本----------------

myscore = loadFile("score.txt")--加载最高分文件

local highscoretext = display.newText( "你的最高分数:"..myscore, 0, 0, native.systemFontBold, 20 )
highscoretext:setFillColor(1.00, .502, .165)
--将标题居中
highscoretext.x, highscoretext.y = display.contentWidth/2, 200
--插入场景组
sceneGroup:insert( highscoretext )

--------------你的分数----------------
local yourscoretext = display.newText( "你的得分:"..score, 0, 0, native.systemFontBold, 20 )
yourscoretext:setFillColor(1.00, .502, .165)
--将标题居中
yourscoretext.x, yourscoretext.y = display.contentWidth/2, 230
--插入场景组
sceneGroup:insert( yourscoretext )
点赞