博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity3d与Object-C交互
阅读量:5081 次
发布时间:2019-06-13

本文共 2809 字,大约阅读时间需要 9 分钟。

(1)unity3d 中如何调用IOS的Api

1、在C# 脚本中使用

 (1) 需要导入文件 using System.Runtime.InteropServices; 

 (2) [System.Runtime.InteropServices.DllImport("__Internal")]

      extern static public int AwesomeFunction(int awesomeParameter);

2、在unity导出的xcode工程中的C/C++/objective-C 文件中的任意位置, 新建一个类 unityplugin.h, unityplugin.mm

头文件中:

extern "C" void AwesomeFunction();

 类体中:

int AwesomeFunction(int awesomeParameter)

{

     return somethingAwesome;

}

 

具体的:

 

Unity C# 代码

using UnityEngine;using System.Collections;using System.Runtime.InteropServices;public class testFeil : MonoBehaviour {        [DllImport("__Internal")]    private static extern void c_ctest();        void Start () {    }    void Update () {    }        void OnGUI()      {          //开始按钮  创建了一个按钮。          if(GUI.Button(new Rect(20,100,200,50),"qingyun "))          {               c_ctest();          }          }     // 这个是C#里的一个回调。OC处理完成后 调用Unity方法    void testFaildResult (string msg)    {        Debug.Log("testResult:" +msg);    }    //这个是C#里的一个回调。这里的作用就是OC里的回调函数。    void testSuccessResult (string msg)    {        Debug.Log ("btnPressSuccess:"+msg);    }}

Object-C  .mm 文件里的OC  与 C 接口

 

MeiyuPushSdk.h

#import 
#import
@protocol MeiyuPushSdkDelegate; @interface MeiyuPushSdk : NSObject@property (nonatomic, assign)id
delegate;//初始化+(MeiyuPushSdk*)my_initPush;+ (void)my_setupWithOption:(NSDictionary *)launchingOption registerForRemoteNotificationTypes:(int)types ; // 注册APNS类型+ (void)my_registerDeviceToken:(NSData *)deviceToken; // 向服务器上传Device Token+ (void)my_receiveRemoteNotification:(NSDictionary *)remoteInfo; // 处理收到的APNS消息,向服务器上传收到APNS消息-(void)cTest;@end@protocol MeiyuPushSdkDelegate
@optional-(void)cTestResult;@end

 

MeiyuPushSdkC.h

#import 
#ifdef __cplusplusextern "C"{#endif void c_ctest(); #ifdef __cplusplus}#endif

MeiyuPushSdkC.mm

#import "MeiyuPushSdkC.h"#import "MeiyuPushSdk.h"@interface MeiyuPushSdkC : NSObject
@end@implementation MeiyuPushSdkC- (id)init{ id object = [super init]; [[MeiyuPushSdk my_initPush]setDelegate:self]; NSLog(@"initMeiyuPushSdkC"); return object;}-(void)cTestResult{ UnitySendMessage("Main Camera", "testSuceessResult", "成功");}@endMeiyuPushSdkC *m_pushSdk = NULL;#if defined (__cplusplus)extern "C"{#endif void c_ctest() { if(m_pushSdk == NULL) { m_pushSdk = [[MeiyuPushSdkC alloc]init]; } MeiyuPushSdk *m = [MeiyuPushSdk my_initPush]; [m cTest]; UnitySendMessage("Main Camera", "testFaildResult", "接口调用失败"); } #if defined (__cplusplus)}#endif

这样就把Unity3d 与OC 连到了一起。

 

 

 

 

 

转载于:https://www.cnblogs.com/liusj/p/3836300.html

你可能感兴趣的文章
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>