【问题标题】:Simple highscore using preferences (Lua - Corona SDK)使用首选项的简单高分(Lua - Corona SDK)
【发布时间】:2018-04-29 15:35:58
【问题描述】:

提前感谢您的帮助!

我正在尝试在我的游戏中使用 Lua 中的“首选项”实现高分功能,但我遗漏了一些东西,这是我的代码:

local highscore_letta = system.getPreference("app", "highscore", "number") -- 如果偏好不存在,则创建它并将其设置为 0(第一次玩游戏) 如果 (highscore_letta == nil) 那么 本地应用偏好 = { 高分=“0” } system.setPreferences("app", appPreferences) 结尾 -- 如果分数高于当前高分,则更新为新的 如果 (_G.player_score > highscore_letta) 那么 本地应用偏好 = { 高分 = _G.player_score } system.setPreferences("app", appPreferences) 结尾

在玩家第一次输球后,游戏崩溃说它正在比较“highscore_letta”中的空值。 第二次尝试后,游戏没有崩溃,但它始终保持为 0,并且根本不更新。

有什么建议吗?我无法弄清楚我错过了什么。 再次感谢!

【问题讨论】:

    标签: mobile lua coronasdk preferences


    【解决方案1】:

    试试

    local highscore_letta = system.getPreference( "app", "highscore", "number" ) or 0
    
    -- if the score is higher than current highscore, update it with the new one
    if (_G.player_score > highscore_letta) then
        local appPreferences =
        {
            highscore = _G.player_score
        }
        system.setPreferences( "app", appPreferences )
    end
    

    【讨论】:

    • 同样的问题。在使用首选项之前,我编写了相同的过程,但使用了“data.sav”文件,一切正常,但在某些智能手机中,游戏不断崩溃,因为它无法找到“data.sav”文件,这就是为什么我'正在尝试使用首选项。我真的很困惑。
    • 应该可以。打印出变量以确保它们具有正确的值。尝试使用Simple-Table-Load-Save-Functions-for-Corona-SDK。
    • 如果我在控制台中打印它们的值,我会在屏幕上得到相同的值。我尝试像这样更改代码:pastebin.com/eGiYvHNg 现在高分卡在 3900 并且不更新,即使我击败了它。我还尝试了 CoronaSDK 给出的示例并使用了相同的代码,问题仍然存在。有什么问题?改变场景可能会出现一些问题?这件事快把我逼疯了。
    • 可以尝试在应用程序启动时读取首选项并在退出时将其保存为documentation 建议。中期使用简单的表来存储和更新数据。
    • 同样的问题。我尝试将其放入“main.lua”-> pastebin.com/PEBAtULE 并将其放入“game_over.lua”-> pastebin.com/Sbdwi9Si 即使我击败它,仍然保持“3900”。
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多