GameCenter 1:Achievement解锁

  GameCenter是iOS游戏不可或缺的一个环节,可以有效的为玩家提供交流和竞技平台。

  今天我要解决GameCenter的第一个问题成就解锁。

  先来看一下成就解锁的一般逻辑:

 

   1.在游戏启动的时候进行的动作

  我们姑且知道OnlineSubsystem类来处理GameCenter事务。

  有OnlineSub.PlayerInterface.AddReadAchievementsCompleteDelegate( );

  上边是什么逻辑呢?

  我们首先查看成就是否被解锁,然后上边的代理就是查看完成后的动作。

  查看成就是否被解锁的功能是

  OnlineSub.PlayerInterface.ReadAchievements();

  2.玩家在玩游戏获得成就时的动作

  OnlineSub.PlayerInterface.GetAchievements()来获得所有成就状态。相当于我们让士兵站在队列中,然后挑选那个伙计是我们目前能搞到的。

  在返回的数组中查找匹配的ID。

  如果bWasAchievementOnline是false(也就是当前成就没有被解锁)。

  vola,我们播放一个欢呼声或是UI庆祝这个成就解锁!

  调用OnlineSub.PlayerInterface.UnlockAchievement( )。

  OnlineSub.PlayerInterfaceEx.ShowAchievementsUI()可以显示成就解锁的UI。


  3.现在来看技术细节

  我们创建成就调用处理器,AntAchievementHandlerActor或是Object都可以。

  他的工作职责有

  ①存储等待处理的成就列表

  ②解锁成就

  解锁成就UnlockAchievement()的参数通常与末尾数值匹配

  com.mygames.killzone3.achievement_01,用1开始而不是0.

  ③检索成就是否在待处理成就数组中,不能将一个成就解锁两次嘛。

  ④如果开始处理一个未解锁的成就,就将标志位ProcessingAchievements设置为true。因为异步处理循环的需要

  ⑤我们在读取处理成就的时候读取所有成就列表,ReadAchievements 同时代理函数AddReadAchievementsCompleteDelete

  

    

    

原文地址:https://www.cnblogs.com/NEOCSL/p/3290511.html