Unity3D 插件方式接渠道IOS SDK

一般渠道都会提供Unity3D版本的接口插件脚本的,但林子太大嘛,总有那么几个不考虑我们的感受,所以偏偏没有,只能自己去动手写。

其实也不是很难,主要难点就是你到底会多少Objective C的内容。。反正我是几乎不会,所以在实际开始之前就看了两天的OC的语法相关的东西,本来还想在Windows下装什么IDE来着可以写OC代码,但这样太浪费时间了,而且也没什么必要要将OC学得多深,其实现在看来就两个文件,一个.h,一个.mm。

可能不同的SDK它提供的东西不一样吧,我这个SDK在OC中提供了一个单例,所以我只需要在我的代码中直接使用这个单例就好。而且该SDK还提供了委托,所以我要实现这个委托中的方法来 被回调。
委托,在C# 中我当然是好理解的,而且用的出神入化~~,但一到了OC中我彻底就蒙了,学了两天OC其中一天半是在搞明白这TM怎么用。我根本不想知道它的原理是个毛,我只想知道SDK提供了这个我TM怎么用。
我纠结牢骚的过程就不说了,总之最后还是老老实实的看些例子,用我的聪明才智理解一下文档中的部分关键词,总算明白是怎么回事了~~

写完了两个文件,可以在XCode工程中放到里面,也可以放到Unity工程的Plugins/IOS 目录下面,这样到处XCode工程的时候这两个文件会自动被加入到Libraries中。

然后其他内容可以看下Unity的提供的例子:http://docs.unity3d.com/Manual/PluginsForIOS.html

另外我将那两个例子贴一下吧,反正这也没什么,我就贴一下,说不定就帮助了哪个跟我一样纠结我就想知道TM怎么用的人:

SDK_7659.h

   1: #import <Foundation/Foundation.h>

   2: #import <xsdkFramework/XSDK.h>

   3: @interface SDK_7659:NSObject<XSDKDelegate>

   4:  

   5: @end

SDK_7659.mm

   1: #import "SDK_7659.h"

   2: #define SDKEvent "RecieveEventObjName"

   3: @implementation SDK_7659

   4:  

   5: -(void)XSDKCheckUpdateCallBack

   6: {

   7:     NSLog(@"XSDKCheckUpdateCallBack!!!!!!");

   8:     UnitySendMessage(SDKEvent, "eventXSDKCheckUpdateCallBack", "");

   9: }

  10: -(void)XSDKLoginCallBack:(NSString *)tokenKey

  11: {    

  12:     NSLog(@"XSDKLoginCallBack___tokenKey : %@", tokenKey);    

  13:     UnitySendMessage(SDKEvent, "eventXSDKLoginCallBack", [tokenKey UTF8String]);

  14: }

  15:  

  16: -(void)XSDKLogOutCallBack:(NSString *)guid

  17: {

  18:     NSLog(@"XSDKLogOutCallBack___guid:%@", guid);

  19:     UnitySendMessage(SDKEvent, "eventXSDKLogOutCallBack", [guid UTF8String]);

  20: }

  21:  

  22: -(void)XSDKGameLoginCallback:(NSString *)username password:(NSString *)password resultBlock:(void (^)(NSString * typeMessage))resultBlock

  23: {

  24:     NSLog(@"XSDKGameLoginCallback__usernam:%@, passward:%@", username, password);    

  25: }

  26:  

  27: -(void)XSDKGameLoginSuc

  28: {

  29:     NSLog(@"XSDKGameLoginSuc");

  30: }

  31:  

  32: -(void)XSDKPayCallback:(BOOL)isClientSuccess

  33: {

  34:     NSLog(@"XSDKPayCallback ___ %d", isClientSuccess ? 1 : 0);

  35: }

  36: @end

  37:  

  38: static SDK_7659* g_SDK7659 = nil;

  39: extern "C"

  40: {

  41:     void Init_7659(char* appKey)

  42:     {

  43:         NSLog(@"进入Init_7659~~~~~~~");

  44:         [[XSDK instanceXSDK] setAppKey:[NSString stringWithUTF8String:appKey]];    

  45:         if (g_SDK7659 == nil)

  46:         {

  47:              g_SDK7659 = [[SDK_7659 alloc] init];

  48:              [[XSDK instanceXSDK] setXsdkDelegate:g_SDK7659];

  49:         }

  50:         [[XSDK instanceXSDK] setISSupportGameNo:NO];

  51:         [[XSDK instanceXSDK] setOnlySupportIPhone:NO];

  52:         [[XSDK instanceXSDK] checkUpdate];

  53:         //[[XSDK instanceXSDK] login];    

  54:         //[[XSDK instanceXSDK] setGameContact:@"找回密码吗?"];

  55:     }    

  56:  

  57:     void ShowLogin_7659()

  58:     {

  59:         [[XSDK instanceXSDK] login];

  60:     }

  61:  

  62:     void Logout_7659()

  63:     {

  64:         [[XSDK instanceXSDK] logout];

  65:     }

  66: }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

* Copy This Password *

* Type Or Paste Password Here *