Answers:
您是从实现技术的角度还是从设计的分支角度询问?无论哪种方式,您问题的答案都是“是”。
从技术方面来说,通常来说,您只需要在代码中找到与成就事件相关的钩子,然后在其中放入统计信息跟踪代码即可。如果要跟踪的事情并非游戏中已经发生的离散事件(例如:X播放时间),则可能需要添加一些新内容。
从设计的角度来看,成就是外在动力,将它们添加到核心游戏循环中并不会发挥太大的作用,除非是想要寻找它们的人。因此,无论如何,它们都非常安全。
shotsFired++
到实例化新子弹shotsHit++
的部分以及子弹影响其他玩家的部分非常容易。这有助于我追踪到谁射了什么子弹(因为我使用信息来追踪谁被杀死了等)
由于现有人员已经添加了很好的答案,因此让我回答未发现的情况。
如果您完全可以完成游戏的编码,现在开始编写成就代码,并且发现维护太多的变量和计数并在某些事件之类的事件中清除它们非常复杂。
您始终可以创建一个类(最好是单例)来接收所有事件。现在列出您的所有成就。然后列出所有需要跟踪的游戏事件。例如,我当前的列表如下所示
杀戮敌人-步行,子弹玩家死亡-摔倒,健康ENTER_ROOM,EXIT_ROOM等
这些额外的细节(例如行走,子弹)可以作为参数。现在,在该成就跟踪类中有一个名为fireEvent的函数。搜索代码中您需要触发fireEvents的所有位置,然后调用该函数。现在,在成就类中完成其余的工作。这是不打扰现有代码和代码成就的最安全方法。对我来说效果很快。