接入前需要了解的一些常识
首先明确一点,Unity接入IOS并不能像Android那样,打包一个AAR或者其他包给Unity使用,然后直接在Unity打包Android包,Unity打包的IOS包必须再次放到XCode(苹果编辑器)里面再次进行打包,才能打包成IOS包,这个也是我踩过坑点之一。
其二在 Unity 项目中的 Plugins->IOS 中编写的代码会在打包的时候一同带入 Xcode 项目中的 Libraries->Plugins->IOS 文件夹下,因而所有要编写的代码都应该放在这里面。
首先要搞懂Unity和XCode的交互,Unity是直接调用Objc或者Switft语言声明的接口的。因此需要使用到C#的特性来访问C语言所定义的接口,然后再通过c语言再调用Objc代码。
下面通过一个例子来说明怎么让Unity和XCode交互。
首先写一个c语言方法
void AcceptUnityMethod ()
{
NSLog(@"------- Accept Unity call...\n");
}
然后再C#调用该方法
using System.Runtime.InteropServices;
[DllImport("__Internal")]
internal extern static void nativeMethod();
public class Sample
{
public void test ()
{
nativeMethod();
}
}
其中DllImport为一个Attribute,目的是通过非托管方式将库中的方法导出到C#中进行使用。而传入"__Internal"则是表示这个是一个静态库或者是一个内部方法。通过上面的声明,这个方法就可以在C#里面进行调用了。