大佬教程收集整理的这篇文章主要介绍了iOS与Unity交互笔记之参数传递,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Unity调方法传参,有返回值
// Unity代码 [DllImport("__Internal")] // 给iOS传String参数,有返回值,返回值通过iOS的return方法返回给Unity private static extern String getIPv6(String mHost,String mPort)
// iOS代码 extern "C" const char * getIPv6(const char *mHost,const char *mPort) { // strdup(const char *__s1) 复制mHost字符串,通过Malloc()进行空间分配 // return strdup(mHost); return makeStringCopy(mHost); } char* makeStringCopy(const char* String) { if (NULL == String) { return NULL; } char* res = (char*)malloc(strlen(String)+1); strcpy(res,String); return res; }
如果Unity传参为String类型,不执行strdup()方法而直接使用return方法,导致mHost没有分配内存空间而报错
这里的const char* 会被C#自动转换成String因为在.m文件中使用了内存申请,该段内存自然是处在堆内存中,这样转成String符合c#的内存管理机制,我们不用担心它的释放问题
如果Unity传参为int等基础数据类型,可以直接使用return方法
调用DllImport(“”)方法,需要引入命名空间:using System.Runtime.Interopservices
Unity调方法传参,无返回值
// Unity代码 // 传数据给iOS [DllImport("__Internal")] // 给iOS传String参数,无返回值,返回值通过iOS的UnitySendmessage方法返回给Unity private static extern void setDate(String datE); // 接收iOS的数据 public void GetDate(String datE) { }
// iOS代码 extern "C" void setDate(const char *datE) { /** 发送数据给Unity @param obj 模型名 @param method Unity接收iOS数据的方法名 @param msg 传给Unity的数据 UnitySendmessage(const char* obj,const char* method,const char* msg); */ UnitySendmessage("PublicGameObject","GetDate",datE); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
以上是大佬教程为你收集整理的iOS与Unity交互笔记之参数传递全部内容,希望文章能够帮你解决iOS与Unity交互笔记之参数传递所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。