2013-05-14 33 views
0

對於C#編程(我通常使用Unity腳本),我還是個新手。我的Game Center插件已成功運行,除了一件事...Unity4和Prime31遊戲中心插件事件

當成就完成時,橫幅會顯示爲應該說成就已從Game Center解鎖。但是,如果在另一場比賽中對該成就的相同要求再次得到滿足,則橫幅再次出現,即使它已經完成。

現在,我已經告訴我應該getAchievements()來更新我的成就列表見面,並讀取數據,我要「遍歷這個事件」:

public static event Action<List<GameCenterAchievement>> achievementsLoaded; 

問題是,我不知道如何在事件中循環。這是我收到的唯一反饋,儘管在統一論壇的主題上有幾次絕望的求助。

感謝您的任何建議。

+0

Unity標籤用於Microsoft Unity。請不要濫用它。 –

+0

對不起 - 不知道有一個Microsoft Unity ...不是故意濫用。 – Ocean

+0

對於初學者來說,這是一個普遍的問題,這是可以的。但是在將來,在使用標籤之前,請仔細閱讀標籤wiki並確保使用正確的標籤。只有具有適當標籤的問題才能呈現給適當的專家並快速回答。 –

回答

1

最初的答案意味着你應該循環該事件返回的成就列表。要更加熟悉事件以及它們的工作原理,請參閱MSDN Events Tutorial

本質上,您將希望通過將該函數附加到訂閱者列表來將該函數與該事件的適當簽名關聯起來。這協會將是這個樣子:

achievementsLoaded += (list) => 
{ 
    foreach(var achievement in list) 
    { 
     .... 
    } 
} 

或者,如果你願意使用一個成員函數:

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

在你的類主體。然後,在其他地方,當你設置的系統:

achievementsLoaded += achievementsLoadedSubscriber; 

通知缺少括號的,因爲你是從字面上添加功能本身的列表,而不是調用函數。

+0

謝謝 - 我理解這部分,這是我的腳本。不過,我有另一個名爲「公共靜態無效ReportAchievement(字符串id)」的成員,當我在遊戲中完成一項成就時,我會這樣稱呼它。我發送成就ID(如iTunes中出現)來觸發成就。我沒有得到的是我該如何首先檢查成就是否已經完成或者沒有使用方法「achievementLoadedSubscriber」在我的代碼中,我用它來搜索achievement.identity和achievement.completed>我如何獲得這個信息ReportAchievement方法? – Ocean

+0

p.s.現在也會查看該教程,謝謝。 – Ocean

+0

感謝戴夫K爲您解答上述問題......這有助於我找到答案並解決問題。 – Ocean