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

yizhihongxing

iOS与Unity交互一般分为两种方式:Unity调用iOS原生代码和iOS原生代码调用Unity代码。参数传递是交互过程中非常重要的一项,下面我将为你详细讲解关于参数传递的完整攻略。

参数传递方式

在iOS与Unity交互过程中,参数传递方式有以下几种:
- 字符串传递
- 数值传递
- Json对象传递

其中Json对象传递是最为常用的一种方式。接下来我将举两个例子分别进行讲解。

字符串传递的方式

在Unity场景中,你可以通过调用iOS原生代码的方式来实现字符串传递。如下进行调用:

#if UNITY_IPHONE
[DllImport("__Internal")]
private static extern void sendMessage(string message);
#endif

void sendStringToiOS(string message)
{
#if UNITY_IPHONE
    sendMessage(message);
#endif
}

在iOS原生代码中,你需要对接收到的字符串进行处理,如下:

NSString *message = [NSString stringWithUTF8String:msg];
NSLog(@"Received String message: %@",message);

Json对象传递方式

在Unity场景中,Unity的Json库提供了快速创建Json对象的方法,通过调用iOS原生代码的方式实现Json对象传递。如下为创建Json对象的示例:

private IEnumerator TestJsonCodec()
{
    // 创建Json对象
    JSONObject jsonObject = new JSONObject();
    jsonObject.AddField("unit_int", 100);
    jsonObject.AddField("unit_float", 100.1);
    jsonObject.AddField("unit_string", "unit_string");

    Debug.Log(jsonObject.ToString());

    // 传递Json对象给原生iOS
    unityToIosMsg(new IosMessage<IosJsonArgs>()
    {
        action = "unit_string",
        args = new IosJsonArgs(jsonObject.ToString())
    });

    string json_string = "{\"Level\":\"101\",\"Name\":\"yxc\",\"HP\":\"240\",\"Skills\":[\"Magic Missile\",\"Chain Lightning\",\"Charm\"]}";

    jsonObject = new JSONObject(json_string);

    // 打印反序列化之后的Json对象
    Debug.Log("Level: " + jsonObject.GetField("Level").str);
    Debug.Log("Name: " + jsonObject.GetField("Name").str);
    Debug.Log("HP: " + jsonObject.GetField("HP").str);

    JSONObject skillsObj = jsonObject.GetField("Skills");
    Debug.Log("Skills: " + skillsObj.list.Count);

    for (int i = 0; i < skillsObj.list.Count; i++)
    {
        Debug.Log("Skill: " + skillsObj.list[i].str);
    }

    // 传递Json字符串给iOS原生代码
    unityToIosMsg(new IosMessage<IosJsonArgs>()
    {
        action = "LevelUpgrade",
        args = new IosJsonArgs(json_string)
    });

    yield return null;
}

在iOS原生代码中,你需要对传递过来的Json对象进行反序列化处理来获取里面的值,如下:

NSError *jsonError = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[jsonStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&jsonError];
if (!jsonError) {
    NSLog(@"%@",json);

    NSString *level = [json objectForKey:@"Level"];
    NSString *name = [json objectForKey:@"Name"];
    NSString *hp = [json objectForKey:@"HP"];
    NSArray *skills = [json objectForKey:@"Skills"];
}

以上为两个示例,一个使用字符串传递的方式,一个使用Json对象传递的方式。通过这些示例可以看到,在iOS与Unity交互的过程中,参数传递是非常关键的一个环节。如若把参数传递处理不好,将会导致交互过程失败。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:iOS与Unity交互笔记之参数传递 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Windows系统自动连接网络共享打印机BAT脚本分享

    下面我将为你详细讲解“Windows系统自动连接网络共享打印机BAT脚本分享”的完整攻略。 背景 在Windows系统中,我们可以通过在本地网络中连接打印机,实现通过局域网打印文件的功能。然而,在每次使用时都需要手动连接,对日常使用造成了不必要的麻烦。为了解决这个问题,我们可以使用BAT脚本来实现网络共享打印机的自动连接。 实现步骤 1. 打开记事本 在Wi…

    C# 2023年6月7日
    00
  • C#实现动态执行字符串脚本(优化版)的示例代码

    让我来详细讲解“C#实现动态执行字符串脚本(优化版)的示例代码”的完整攻略。 首先,需要明确的是,我们要实现的目标是动态执行字符串脚本,所以需要满足以下要求: 能够将字符串解析为C#代码 能够动态地将解析出来的代码编译成程序集 能够调用编译后的程序集中的方法 针对上述要求,我们需要利用C#的编译器,通过代码生成器将字符串转为C#代码,并通过编译器将生成后的代…

    C# 2023年5月15日
    00
  • C#实现影院售票系统

    C#实现影院售票系统 系统设计 影院售票系统主要由用户登录、电影信息查询、影院信息查询、座位选择、订单生成等模块组成。 用户登录 用户需输入用户名和密码登录系统,系统需验证用户输入信息,若验证成功则跳转至主页面。 电影信息查询 用户可通过电影名称、导演、演员信息等查询影片信息,系统需提供相应的查询功能。 影院信息查询 用户可通过城市、区域等信息查询影院信息,…

    C# 2023年6月2日
    00
  • C# memcache 使用介绍

    C#memcache使用介绍 Memcache是一种基于内存的缓存服务,通过存储在内存中的数据来提升Web应用程序的性能。在C#中,可以通过使用开源的MongoDB.Driver.Net软件包来进行Memcache的使用。 1. 安装MongoDB.Driver.Net 在C#中使用Memcache需要先安装MongoDB.Driver.Net软件包,可以通…

    C# 2023年5月15日
    00
  • C# BitArray(点矩阵)转换成int和string的方法实现

    首先,我们需要了解什么是BitArray(点矩阵)。BitArray 是C#中的一个类,这个类被设计用来存储布尔类型的数组。在实际使用中,经常可以用BitArray 来存储二进制数据,特别是在图像、声音压缩、加密解密、编码解码等处理中。 在C#中,我们有两种方法将BitArray转换为int类型和string类型。 将BitArray转换为int类型 第一种…

    C# 2023年6月7日
    00
  • C# StackExchange.Redis 用法汇总

    C# StackExchange.Redis 用法汇总 StackExchange.Redis 是 StackExchange(Stack Overflow 所属公司)开发的一款 Redis 客户端库。它是基于 .NET Standard 的,所以可以在各种平台上使用。StackExchange.Redis 有着良好的性能和低延迟,被广泛使用。本文将详细介绍…

    C# 2023年6月3日
    00
  • C#实现写系统日志的方法

    首先,我们需要了解什么是系统日志。 系统日志(Syslog) 是一种由大多数操作系统和一些网络设备所产生和使用的标准化的日志记录方式,通常用于记录系统事件以及系统性能数据等,以便于系统管理员进行故障诊断和维护工作。 在 C# 中,我们可以通过 System.Diagnostics 命名空间下的 EventLog 类来记录系统日志。 以下是实现 C# 写系统日…

    C# 2023年5月15日
    00
  • c# 实现发送邮件的功能

    以下是详细讲解c#实现发送邮件的功能的完整攻略: 1. 准备工作 在使用C#发送邮件前,需要在电脑上安装SMTP服务,可通过“控制面板”->“程序和功能”->“启用或关闭Windows功能”下的“Internet信息服务”。 2. 引用命名空间 在代码前要先引用System.Net和System.Net.Mail两个命名空间,其中System.N…

    C# 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部