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);
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Swift 开发之懒加载的实例详解

    Swift 开发之懒加载的实例详解

    这篇文章主要介绍了Swift 开发之懒加载的实例详解的相关资料,希望通过本文能帮助到大家,实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • iOS 禁止按钮在一定时间内连续点击

    iOS 禁止按钮在一定时间内连续点击

    本文主要介绍了iOS中禁止按钮在一定时间内连续点击的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • iOS体验性优化之RTL适配右滑返回的实现

    iOS体验性优化之RTL适配右滑返回的实现

    这篇文章主要给大家介绍了关于iOS体验性优化之RTL适配右滑返回实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer

    iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer

    这篇文章主要介绍了iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer的相关资料,需要的朋友可以参考下
    2016-09-09
  • iOS中多线程的入门使用教程(Swift)

    iOS中多线程的入门使用教程(Swift)

    这篇文章主要给大家介绍了关于iOS中多线程入门使用的相关资料,一个进程中可以开启多条线程,每条线程可以并行执行不同的任务,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • iOS正确监听手机静音键和侧边音量键的方法示例

    iOS正确监听手机静音键和侧边音量键的方法示例

    这篇文章主要给大家介绍了关于iOS正确监听手机侧边音量键的相关资料,并且给大家分享了ios监听静音键的示例代码,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-11-11
  • iOS实现数字倍数动画效果

    iOS实现数字倍数动画效果

    在iOS开发中,制作动画效果是最让开发者享受的环节之一,下面这篇文章主要给大家介绍了关于iOS实现数字倍数动画效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • iOS如何使用自己添加的字体库

    iOS如何使用自己添加的字体库

    这篇文章主要为大家介绍了iOS如何使用自己添加的字体库详细过程,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • IOS 中UIImageView响应点击事件

    IOS 中UIImageView响应点击事件

    这篇文章主要介绍了IOS 中UIImageView响应点击事件的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • IOS 图片存放3种方式的实现

    IOS 图片存放3种方式的实现

    这篇文章主要介绍了IOS 图片存放3种方式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论