2014-01-29 3 views
1

NSArray를 유니티 C#으로 되 돌리는 방법을 알아 내려고하고 있습니다. 나는 아무것도 찾지 못했다.유니티에 대한 iOS 플러그인이 NSArray를 다시 C로 반환 함 #

반환 할 NSArray가있는 내 .mm 함수가 있지만 반환 할 형식과 Unity에서 가져 오는 방법을 알지 못합니다.

NSArray에 NSString이 포함되어 있습니다.

+0

직접 구현할 수있는 방법이 있지만 대부분의 개발자가 JSON을 사용하는 것 같습니다. – Kay

+0

감사합니다. 케이, JSON을 사용하여 큰 문자를 반환하는 것이 더 쉽습니다. 방법. – Dyego

+0

@ 케이, C#에서 obj-c로 [const char *]를 얻는 방법을 알고 있습니까? – Dyego

답변

0

질문의 댓글 섹션에 설명 된 것처럼 JSON이이를 달성하는 가장 쉬운 방법입니다. Objective-C 클래스에서 IOS. 당신의 C# 클래스에서 IOSWrapper.cs

[DllImport ("__Internal")] 
static extern string GetMyJSONStringIOS(); 

public static string GetMyJSONString() { 
    string json; 
#if !UNITY_EDITOR && UNITY_IPHONE 
    json = GetMyJSONStringIOS(); 
#else 
    json = "Dont know"; 
#endif 
    } 
    return json; 
} 

cStringCopy이 *는 char const를 숯불 * 복사하기 위해 내부적으로 사용되는 방법을

extern "C" { 
    char* GetMyJSONStringIOS() { 
     MyClass* myInstance = [[MyClass alloc] init] autorelease]; 
     NSString* str = [myInstance convertToJSON]; 
     char* s = cStringCopy([str UTF8String]); 
     return s; 
    } 
    char* cStringCopy(const char* string) { 
     char* res = (char*)malloc(strlen(string) + 1); 
     strcpy(res, string); 
     return res; 
    } 
} 

: mm 당신이 뭔가를해야합니다.

+0

도움을 주셔서 감사합니다. @ 케이. 하지만 다른 방법을 찾았습니다. 내 NSArray JSON 변환 해요 및 const char * 반환하고 있어요. Unity에서, 나는 Marshal.PtrToStringAnsi()를 호출하여 Intptr 반환 값을 변환합니다. 그것은 잘 작동합니다! 그 후 JSON 구문 분석을 사용하여 내 값을 얻을 수 있습니다. – Dyego

+0

@Dyego 자신의 질문에 답해야합니다. 그래서 다른 누군가가 그 방법을 사용할 수 있습니다. 하나 찾았 어. –