关于iOS和Unity交互的方法,进行简单的梳理.
调用方法一:
- Unity调方法传参,有返回值.
Unity代码:
[DllImport("__Internal")]
// 给iOS传string参数,有返回值,返回值通过iOS的return方法返回给Unity
private static extern string getIPv6(string mHost, string mPort)
- iOS通过return方法,将值返回给Unity
iOS代码:
/**
获取IPv6的值,并返回给Unity
@param mHost 主机名
@param mPort 端口号
@return IPv6值
*/
extern "C" const char * getIPv6(const char *mHost, const char *mPort)
{
// strdup(const char *__s1) 复制mHost字符串,通过Malloc()进行空间分配
return strdup(mHost);
}
注意:
- 1.如果Unity传参为string类型,不执行strdup()方法而使用return mHost方法,导致mHost没有分配内存空间而报错.
报错信息:
skins(2509,0x1a8e5cb40) malloc: *** error for object 0x16fdc9114: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
- 2.如果Unity传参为int类型,可以使用return mHost方法.
- Unity代码:
[DllImport("__Internal")]
// 给iOS传int参数,无返回值,返回值通过iOS的return方法返回给Unity
private static extern int setMyInt(int date);
- iOS代码:
// 返回int值
extern "C"<