Unity2019接入IOS SDK

前言

前段时间接入了IOS的SDK,主要参考了如下几篇博客。本篇博客重点记录踩坑。
官方文档
Unity3D 接入IOS SDK
untiy 项目接入 IOS SDK
Unity3D与iOS交互(接入原生sdk方法)
Unity项目接入IOS的Admob Native(原生视频广告) IOS SDK

下面简单介绍下Unity与IOS之间交互。

1.Unity调用IOS

Unity调用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并将内容集合进去,不然调不到方法。
Unity2019接入IOS SDK_第1张图片

你可能感兴趣的:(SDK接入,unity,unity3d,ios,sdk,游戏开发)