2013-05-14 5 views
0

저는 C# 프로그래밍 (저는 보통 Unityscript를 사용합니다)에 관해서는 아직 새로운 것입니다. 한 가지만 제외하고 Game Center 플러그인을 설치하고 성공적으로 실행했습니다 ...Unity4 및 Prime31 게임 센터 플러그인 이벤트

성취가 완료되면 게임 센터에서 성취도가 해제되었다는 메시지가 나타납니다. 그러나 다른 게임에서 해당 성취도에 대한 동일한 요구 사항이 다시 충족되면 배너는 이미 완료되었지만 다시 표시됩니다.

지금은 내가해야한다고 들었다 getAchievements()을 충족 성과를 내 목록을 업데이트하고, 데이터를 읽고, 내가해야 "루프이 이벤트를 통해"

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

문제는 내가있다 이벤트를 반복하는 방법을 모른다. 이것은 단결 포럼에 대한 주제에 대한 도움을 간절히 바라고 여러 번 들었음에도 불구하고받은 유일한 의견입니다.

어떤 조언을 주셔서 감사합니다.

+0

유니티 태그는 Microsoft Unity에 사용됩니다. 오용하지 마십시오. –

+0

죄송합니다 - Microsoft Unity가 있다는 것을 몰랐습니다 ... 의도적으로 오용하지 않았습니다. – Ocean

+0

그건 초보자들에게는 흔한 문제입니다. 괜찮습니다. 그러나 앞으로 태그를 사용하기 전에 태그 위키를주의 깊게 읽고 적절한 태그를 사용했는지 확인하십시오. 적절한 태그를 가진 질문 만 적절한 전문가에게 제시 될 수 있고 빨리 대답 할 수 있습니다. –

답변

1

원본 답변의 의미는 해당 이벤트에서 반환 한 업적 목록을 반복해야한다는 것입니다. 이벤트에 대한 자세한 내용과 작동 방법은 MSDN Events Tutorial을 참조하십시오.

본질적으로 구독자 목록에 추가하여 해당 이벤트에 적절한 서명과 기능을 연결하고자 할 것입니다. 클래스 본문에

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

: 당신이 멤버 함수를 사용하는 것을 선호하려는 경우,

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

또는 : 그 관계는 다음과 같이 보일 것입니다. 그런 다음, 다른 곳에서 당신은 시스템을 설정할 때 :

achievementsLoaded += achievementsLoadedSubscriber; 

공지 사항 괄호의 부족을 말 그대로 함수를 호출하지 목록에 함수 자체를 추가하기 때문이다.

+0

고마워요. 저는이 부분을 이해하고 있습니다. 제 스크립트에있는 부분입니다. 그러나 나는 "public static void ReportAchievement (string id)"라는 또 다른 멤버가 있습니다.이 멤버는 게임에서 성취되었을 때 호출됩니다. 나는 성취 성공을 촉발시키기 위해 아이튠즈에 나타난 성취도 ID를 보낸다. 내가 얻지 못하는 것은 어떻게 성과가 이미 성취되었는지를 확인하거나 "achievementsLoadedSubscriber"메소드를 사용하지 않는지를 확인하는 것입니다. 각 코드에서 나는 achievement.identity와 achievement.completed를 검색하기 위해 각각을 사용합니다> 어떻게해야합니까? ReportAchievement 메소드에 대한이 정보는 무엇입니까? – Ocean

+0

p.s. 튜토리얼을 지금도 확인해 보겠습니다. – Ocean

+0

위의 답변에 대해 Dave K에게 감사드립니다. 답변을 찾아 문제를 해결하는 데 도움이되었습니다. – Ocean