【问题标题】:unlocking levels in Android Game logicAndroid 游戏逻辑中的解锁关卡
【发布时间】:2012-03-09 02:21:39
【问题描述】:

我有一个关卡场景,我允许用户选择一个关卡。

但要进入下一个级别,用户必须完成之前的级别。

现在是自动解锁的第一关。

完成后我想解锁第二关。第二关完成后,解锁第三关。

我想不出我会怎么做。我想到了 sharedpreferences 但不知道我应该为此使用的逻辑。

我可以在这背后的逻辑上使用一些帮助。

谁能帮帮我?

编辑:

在我的游戏场景中,当游戏完成时,我将其称为 sharedpreference

editor.putString("level_completed"+level, "unlocked");
editor.commit();

那我做..

String levelStatus = preference.getString("level_completed:"+level, "locked");

if(levelStatus.equals("unlocked")){

}else{
    if(level == 0){
        box.setUserData("unlocked");
}else{
        box.setColor(1.0f,0.0f,0.0f);
        box.setUserData("locked");
    }
}

在关卡选择场景中查看关卡是否解锁。

这似乎不太好。应该解锁的关卡没有解锁。

【问题讨论】:

  • 你可以有一个 int 表示你在故事中的位置。它会存储你完成了多少关卡,因此你会知道要解锁什么。
  • 在您的代码添加中,一个首选项有一个冒号,另一个没有。
  • 感谢您指出这一点!!我认为这解决了我的问题!我想我不堪重负。大声笑

标签: java android andengine


【解决方案1】:

您可以通过多种方式来处理它。如果进度始终是线性的(1、2、3、4),那么您可以只为“最大解锁级别”存储一个整数,然后在您完成一个级别时更新它。否则,您还可以有许多布尔值,例如“level 2 unlocked”,当您完成 level 1 时,您可以将“level 2 unlocked”设置为 true。 Shared Preferences 绝对是一个合理的选择。

【讨论】:

    【解决方案2】:

    我要做的是从面向对象的角度来看待它,这就是 Java 的全部意义所在。当我卡在一段代码上时,我就把它写下来。想想代码的目标是什么。

    • 您可能有一个名为 Level 的类。在这个级别的课程中,您可以拥有一个名为“unlocked”或相反的“locked”的属性。然后当用户转到您的“玩关卡”屏幕或您有什么时,只允许用户查看已解锁的关卡。

    • 您可能还拥有某种类型的 Player 类,因此您可以拥有一个名为“unlockedLevels”的属性,其类型为 Level[]。那么所有解锁的关卡都会在这个关卡数组中。

    这一切都与代码的结构有关,结构和真正的面向对象是 Java 中最重要的事情。当您偏离面向对象设计时,您可能会遇到本不应该存在的问题。

    【讨论】:

    • 好建议!你说的对!现在,当用户完成一个级别时,我将其保存在共享首选项中。当用户在关卡选择屏幕上时,我会测试哪些关卡已完成或解锁。出于某种原因,这种方法对我来说效果不佳。如果需要,我可以编辑我的答案。
    • 是的,请这样做,如果你能列出你的类结构(相关部分)并告诉我每个部分在你的程序中做什么,我会建议我会做什么
    【解决方案3】:

    在某些时候,除非您的游戏在每次用户执行其他操作时从头开始重新启动,否则您会保存游戏的状态。您保存用户的分数、游戏状态等。当您执行此操作时,无论您如何执行此操作,都会同时保存未锁定的关卡。每个级别只有一点信息,所以你不需要对此很聪明。也许你还有一个“保存”按钮,保存文件,从保存中加载的能力。同样,当您保存其他所有内容时,只需将用户的关卡解锁。

    或者你还没有开始保存任何东西吗?

    好吧,首先将状态保存在提供给活动生命周期方法的包中,例如 onPause。如果多个存档适合您的游戏,请使用文件并决定其结构。如果只有一个“保存”就可以了,那么偏好可能对你很有效。对此进行测试:如果您想计算首选项的 key,请不要使用首选项。

    【讨论】:

    • 感谢您的回复!查看我的更新,看看我在哪里。我在说话时使用偏好,
    猜你喜欢
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多