HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iOS与Unity交互笔记之参数传递大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 调用方法

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

2. 调用方法

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,请注明来意。
标签:ios