IOS使用C#预处理命令,多种SDK共存

当我们使用Unity接 91,XY助手等等SDK时候. 我们需要使用[DllImport("__Internal")] 来声明一个C++的方法调用.

不同的SDK总会有不同的方法. 我习惯是写成 XYSDK类, Baidu91SDK类里面封装的各种[DllImport("__Internal")]声明的方法

问题就来了, 如果我们发布XY SDK,而91 SDK的方法并没有放在xcode工程里面. 所以造成编译不通过.我们就需要把91 C++封装好的方法放入工程当中.

我们可以使用预处理命令(来选择编译某些代码),这样就不需要发布XY,还要把91 C++封装好的方法放入到Xcode中编译啦

#define BaiDuSDK
//#define XYSDK
//如果我们需要发那个版本的SDK,就注释掉其他的#define.


using UnityEngine;
using System.Collections;


BaiDu91SDK
{
#if (BaiDuSDK)
    [DllImport("__Internal")]
    private static extern void 购买道具 ();
#endif

}

XYSDK
{
#if (XYSDK)
    [DllImport("__Internal")]
    private static extern void 打开悬浮窗口 ();
#endif
}

上面代码很简单 #define BaiDuSDK. 定义个预处理命令变量(它就是一个标记)

#if(BaiDuSDK){ //如果标记被定义

//里面的代码将会被编译

}

这样就是实现代码选择编译O(∩_∩)O~