转自:http://sygame.lofter.com/post/117105_5df3bdf
在游戏开发中,很多时候会用到IOS的库功去获取某一些数据到unity游戏中或者在接入SDK的时候会经常用到数据的传递。当然unity提供了一个方法(UnitySendMessage)来把IOS中的数据回调到unity的游戏内部。下面我们不介绍这种方法,我们介绍直接在unity内部通过调用具有返回值IOS的方法把IOS中的数据传入unity中。
当然IOS中的NString类型不能直接传入unity中,我们需要把IOS的字符类型经过一些处理成字符类型后存入内存中然后再转成unity识别的string类型。其他的int、bool等基本类型不用特殊处理。
一、首先在IOS中我们需要一个NString类型处理函数。
char* _MakeStringCopy( const char* string)
{
if (NULL == string) {
return NULL;
}
char* res = (char*)malloc(strlen(string)+1);
strcpy(res, string);
return res;
}
二、然后就可以返回一切的NString类型到unity中了。下面是在unity中调用的函数。
const char* getUDID()
{
return _MakeStringCopy([[APService registrationID] UTF8String]);
}
三、在unity中调用示例
[DllImport("__Internal")]
private static extern string getUDID();
public static string GetUdid()
{
return getUDID();
}
最后就能获取到需要的数据了。