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

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日

相关文章

  • C# DriveInfo.GetDrives – 获取所有的磁盘驱动器信息

    DriveInfo.GetDrives 方法是C#中 System.IO 命名空间中的一个方法,用于获取系统中所有的驱动器信息。其返回一个 DriveInfo 类型的数组,数组中包含了当前计算机中所有已存在的逻辑驱动器的信息,如磁盘的名称、大小、是否为只读等。 DriveInfo.GetDrives 方法的语法如下: public static DriveI…

    C# 2023年4月19日
    00
  • .net core 3.1 Redis安装和简单使用

    下面我来详细讲解“.net core 3.1 Redis安装和简单使用”的完整攻略。 安装 Redis 下载 Redis 首先,我们需要从 Redis 官网下载 Redis 的安装包。可以通过以下链接访问 Redis 官网:https://redis.io/download 安装 Redis 下载完 Redis 的安装包后,我们需要解压并安装。 在 Wind…

    C# 2023年6月3日
    00
  • 为Xamarin.Forms的导航栏增加搜索功能

    为 Xamarin.Forms 的导航栏增加搜索功能攻略 在 Xamarin.Forms 中,可以为导航栏增加搜索功能,以便用户可以快速查找所需的内容。本攻略将介绍如何为 Xamarin.Forms 的导航栏增加搜索功能。 步骤 步骤1:创建搜索页 首先,需要创建一个搜索页,以便用户可以在其中输入搜索关键字。可以使用以下代码创建一个名为 SearchPage…

    C# 2023年5月17日
    00
  • Linq中ToList()和CopyToDataTable()用法详解

    Linq中ToList()和CopyToDataTable()用法详解 在使用Linq进行数据查询时,我们经常需要将结果转换成List或DataTable类型以便于读取或处理。这时就可以使用Linq提供的ToList()和CopyToDataTable()方法。 ToList()方法 ToList()方法可以将查询结果转换为List集合类型,方便后续的操作。…

    C# 2023年5月15日
    00
  • vs2015怎么编写第一个windows程序?

    请参考以下完整攻略: 步骤1:打开Visual Studio 2015 首先,你需要安装Visual Studio 2015,然后打开它。 步骤2:创建一个新项目 在Visual Studio 2015中,单击“文件(File)”菜单,选择“新建(New)”,然后选择“项目(Project)”。 在“新建项目(New Project)”对话框中,选择“Vis…

    C# 2023年6月6日
    00
  • C# Linq的ToList()方法 – 将序列转换为列表

    C# Linq的ToList()方法详解 ToList()方法是C#中Linq查询的扩展方法之一,它将一个序列转换成一个List集合,实现方式是创建一个包含序列中所有元素的新实例。该方法的通用使用方式如下所示: public static List<TSource> ToList<TSource>(this IEnumerable&l…

    C# 2023年4月19日
    00
  • 使用ASP.NET一般处理程序或WebService返回JSON的实现代码

    使用ASP.NET一般处理程序或WebService返回JSON的实现代码,主要涉及到以下步骤: 1.创建一个类来模拟JSON数据: public class Person { public string Name { get; set; } public int Age { get; set; } public string Gender { get; s…

    C# 2023年5月31日
    00
  • 小白2分钟学会Visual Studio如何将引用包打包到NuGet上

    下面是详细讲解“小白2分钟学会Visual Studio如何将引用包打包到NuGet上”的完整攻略。 准备工作 首先,需要安装最新版的Visual Studio,可以去官网下载; 确保项目中安装了需要打包的NuGet包; 需要拥有一个NuGet账号,可以在NuGet官网上进行注册。 步骤 打开Visual Studio,找到需要打包的项目,右键点击项目,选择…

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