iOS与Unity交互笔记之参数传递

 更新时间:2019年04月12日 10:09:31   作者:Gsl''s Library  
这篇文章主要给大家介绍了关于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 键盘挡住输入框的问题解决办法

    IOS 键盘挡住输入框的问题解决办法

    这篇文章主要介绍了IOS 键盘挡住输入框的问题解决办法的相关资料,需要的朋友可以参考下
    2017-06-06
  • Xcode 8打印log日志的问题小结及解决方法

    Xcode 8打印log日志的问题小结及解决方法

    这篇文章主要介绍了Xcode 8打印log日志的问题小结及解决方法的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • iOS开源一个简单的订餐app UI框架

    iOS开源一个简单的订餐app UI框架

    这篇文章主要介绍了iOS开源一个简单的订餐app UI框架,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 详解iOS-按钮单选与多选逻辑处理

    详解iOS-按钮单选与多选逻辑处理

    本篇文章主要介绍了详解iOS-按钮单选与多选逻辑处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 2016最新CocoaPods安装和错误解决方案

    2016最新CocoaPods安装和错误解决方案

    CocoaPods是一个负责管理iOS项目中第三方开源库的工具,开发iOS项目不可避免地要使用第三方开源库。接下来通过本文给大家介绍2016最新CocoaPods安装和错误解决方案,需要的的朋友参考下吧
    2016-11-11
  • iOS中UIScrollView嵌套UITableView的实践教程

    iOS中UIScrollView嵌套UITableView的实践教程

    在UIScrollView嵌套UITableView的问题相信大家都遇到过,小编最近在工作中就遇到了这个问题,所以这篇文章主要介绍了iOS中UIScrollView嵌套UITableView的相关资料,文中介绍的方法是通过自己的实践所得来的,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • 详解iOS平台调用后台接口的正确姿势

    详解iOS平台调用后台接口的正确姿势

    这篇文章主要介绍了详解iOS平台调用后台接口的正确姿势,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • IOS实现碎片化动画详解

    IOS实现碎片化动画详解

    在网上看到一个惊艳的碎片化动画,于是实现之后拿来讲解一下,有需要的小伙伴们可以参考学习哦。
    2016-08-08
  • iOS开发之路--微博新特性页面

    iOS开发之路--微博新特性页面

    本文是IOS开发之路系列的第三篇,主要是分享了微博新特性页面的制作源码,希望对大家有所帮助
    2014-08-08
  • IOS 打包静态库详细介绍

    IOS 打包静态库详细介绍

    这篇文章主要介绍了IOS 打包静态库详细介绍的相关资料,这里对打包静态库做了详细的说明,并进行了总结,需要的朋友可以参考下
    2016-11-11

最新评论