C# Unity4和Prime31游戏中心插件事件

C# Unity4和Prime31游戏中心插件事件,c#,unity3d,game-center,C#,Unity3d,Game Center,说到C#编程(我通常使用Unityscript),我还是个新手。我有游戏中心插件并成功运行,除了一件事 当一项成就完成时,横幅会显示为该成就已从游戏中心解锁。然而,如果在另一场比赛中再次满足了同样的成就要求,则横幅会再次出现,即使它已经实现了 现在我被告知,我应该获取成就()来更新我的成就列表,并读取数据,我应该“循环此事件”: 加载公共静态事件操作实现; 问题是,我不知道如何循环整个事件。这是我收到的唯一反馈,尽管在unity论坛上有几次绝望的求助 感谢您的建议。最初的答案是,您应该循环浏览

说到C#编程(我通常使用Unityscript),我还是个新手。我有游戏中心插件并成功运行,除了一件事

当一项成就完成时,横幅会显示为该成就已从游戏中心解锁。然而,如果在另一场比赛中再次满足了同样的成就要求,则横幅会再次出现,即使它已经实现了

现在我被告知,我应该获取成就()来更新我的成就列表,并读取数据,我应该“循环此事件”:

加载公共静态事件操作实现;
问题是,我不知道如何循环整个事件。这是我收到的唯一反馈,尽管在unity论坛上有几次绝望的求助


感谢您的建议。

最初的答案是,您应该循环浏览该活动返回的成就列表。有关对事件及其工作方式的更多了解,请参阅

本质上,您希望通过将函数附加到订阅者列表,将函数与相应的签名与该事件相关联。这种联系会是这样的:

achievementsLoaded += (list) =>
{
    foreach(var achievement in list)
    {
         ....
    }
}
或者,如果您更喜欢使用成员函数:

void achievementsLoadedSubscriber(List<GameCenterAchievement> list)
{
    foreach(var achievement in list)
    {
        ...
    }
}

请注意缺少括号,因为您实际上是在将函数本身添加到列表中,而不是调用函数。

谢谢-我确实理解这一部分,这是我脚本中的内容。然而,我有另一个名为“publicstaticvoidreporteaccessment(stringid)”的成员,我在游戏中完成一项成就时调用它。我向它发送成就id(如itunes中所示)以触发成就成功。我不明白的是,我如何才能首先检查成就是否已经完成,或者在我的代码中使用“achievementsLoadedSubscriber”方法来搜索每个人的成就。identity和Achievent.completed>我如何将此信息发送到ReportAchievent方法?感谢Dave K在上面给出的答案。。。它帮助我找到了答案并解决了这个问题。
void achievementsLoadedSubscriber(List<GameCenterAchievement> list)
{
    foreach(var achievement in list)
    {
        ...
    }
}
achievementsLoaded += achievementsLoadedSubscriber;