本文主要介绍Unity3D与iOS交互,使用的语言是C#和OC。
主要步骤:
第一部分:Unity3D
1、创建Unity项目,拖2个控件 TestText 和 TestButton 到场景中。
(TestText 用于iOS回调的数据展示,TestButton 用于响应Unity3D请求按钮。)
创建一个脚本 ButtonScript.cs,并且绑定 TestButton 控件。
2、在 Assets 目录下创建子目录 Plugins,又继续创建子目录 iOS。(iOS目录 主要用于管理后续Unity3D与iOS交互的接口文件夹)
创建接口文件 IOS_Bridge.cs。 (.cs文件 用于Unity3D请求接口)
创建 Interaction.h 和 Interaction.mm 文件。(.h和.mm文件 用于iOS接口交互)
3、编辑IOS_Bridge.cs文件接口。
检查Runtime命名空间。 -->> using System.Runtime.InteropServices;
定义C语言接口 Bridge_TestAction()。(注:接口前要加上 [DllImport("__Internal")] )
开放交互接口 Bridge_TestAction(),如果 platform 是 IPhonePlayer,则调用上一步定义好的C语言接口。
(对应参数基本以C语言规范格式)
4、添加 TestButton控件 的点击事件。
检查使用UI命名空间。 -->> using UnityEngine.UI;
添加 TestButton 点击事件。事件为 OnClickTestButton。
在 OnClickTestButton 事件中,调用 IOS_Bridge.cs 文件的接口 BridgeTestAction,并传入对用参数。
此外,
定义一个接收接口CallBack(),用于接收 iOS回调事件。
5、导出Xcode项目。
选择 File ---- Build Settings ---- iOS平台 ---- Player Settings ---- 选择Other Settings。
在 TargetSDK 中,若要用模拟器运行,则选择 Simulator SDK,否则选择 Device SDK。
最后 Build 到对应文件夹
第二部分:iOS
1、打开Xcode项目。打开Libraries ---- plugins ---- iOS ---- Interaction.h文件。
根据前面步骤3,我们通过 Dll 导出 Bridge_TestAction() 接口,它是标准C。
2、实现 Bridge_TestAction() 接口,此时在定义的C方法中,可以直接使用OC语言进行编写。
3、使用 UnitySendMessage() 方法进行 iOS 与 Unity3D 交互。
(注:若没有参数,不可为nil,只能用空引导"")
备注:
【char *data 转 NSString】
NSString *msg = [NSString stringWithCString:data encoding:NSUTF8StringEncoding];
【NSString 转 char *data】
const char *data = [msg UTF8String];
附加Demo
链接: https://pan.baidu.com/s/1fzIm80ORf52JAmeypNio3g 提取码: 9bcw