前言
前段时间接入了IOS的SDK,主要参考了如下几篇博客。本篇博客重点记录踩坑。 官方文档 Unity3D 接入IOS SDK untiy 项目接入 IOS SDK Unity3D与iOS交互(接入原生sdk方法) Unity项目接入IOS的Admob Native(原生视频广告) IOS SDK
下面简单介绍下Unity与IOS之间交互。
1.Unity调用IOSUnity调用IOS需要在Xcode工程创建一个OC的中间件,头文件为.h,源文件为.m或.mm,并将它们导入Unity的Assets->Plugins->iOS文件夹下,之后就可以在Unity中代码调用了。代码如下。
创建的.h和.m文件
/// test.h
extern "C"
{
extern void outputAppendString (char *str1, char *str2);
}
/// test.m
#import
void outputAppendString (char *str1, char *str2)
{
NSString *string1 = [[NSString alloc] initWithUTF8String:str1];
NSString *string2 = [[NSString alloc] initWithUTF8String:str2];
NSLog(@"###%@", [NSString stringWithFormat:@"%@ %@", string1, string2]);
}
Unity中调用代码
public class Sample : MonoBehaviour
{
//C#中调用的IOS方法前面要加这个特性,然后方法直接调就可以了
[DllImport("__Internal")]
static extern void outputAppendString (string str1, string str2);
}
2.IOS中调用Unity的方法
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
这里使用unityengine.dll提供的C接口UnitySendMessage,这里第1个char* 表示接受该消息的GameObject的name, 第2个表示该GameObject的脚本中接受消息的函数名,第3个表示传递的参数。 要注意没有要传的参数直接写"",这里不能写null,会crash。
Unity2019的坑Unity在2019.3版本之后打包Xcode工程会多一个UnityFramework,这里要用Xcode创建Xworkspace并将内容集合进去,不然调不到方法。