2013-08-15 4 views
3

Unity 프로젝트의 Objective-C 부분을 쓰고 있습니다. AppController.mm, 나는 iOS UnitySendMessage 호출 매개 변수

extern void UnitySendMessage(const char *, const char *, const char *); 

를 선언 그리고

- (void)callUnityObject:(const char*)object Method:(const char*)method Parameter:(const char*)parameter 
{ 
    UnitySendMessage(object, method, parameter); 
} 

,이 같은 호출 오전하지만 int로 매개 변수를받을 수있는 유니티 기능을 가지고있다. 그래서, 다음과 같이 호출하는 경우 :

[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:"50"]; 

응용 충돌하지 않지만, 호출이 작동하지 않습니다와 나는이 같은 출력을 얻고있다 : 방법

가장 일치 GiveDynamite에 잘못된 매개 변수가 있습니다.

I는 다음과 같이 호출 할 경우 : 응용 프로그램이 충돌한다

[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:50]; 

합니다.

어떻게이 메시지를 Objective-c에서 Unity로 보낼 수 있습니까?

extern void UnitySendMessage(const char *, const char *, int); 

을하지만 응용 프로그램은 추락과 단결이 같은 함수 선언이 없음을 말했다

나는이 같은 새로운 방법을 선언했습니다.

미리 감사드립니다. 에 따르면

+0

UnitySendMessage를 다시 선언 할 필요는 없습니다. 이미 iPhone_target_Prefix.pch에 있습니다. "void GiveDynamite (string amount)" – JeanLuc

+0

메소드를 가진 스크립트로 "_iosManager"라는 GameObject를 가지고 있습니까? 나는 위의 답처럼 그것을 해결했습니다. 나는이 메소드를 가지고, _iosManager 객체로만 char 값을 보낼 수 있다고 생각했다. Xcode가 아닌 Unity 부분에서 char을 int로 구문 분석했습니다. –

답변

5

: 값을 정수로 구문 분석 후

당신이 받아야 유니티 클래스에
[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:"50"]; 

"문자열"PARAM

void GiveDynamite(string dinamite) { 
... 
} 

과 :

void UnitySendMessage(const char * className, const char * methodName, const char * param) 

당신은 char*을 통과해야 , fe :

dinamiteAmount = int.Parse(dinamite); 
관련 문제