unity3d与Object-C交互

(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 <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@protocol  MeiyuPushSdkDelegate;
@interface MeiyuPushSdk : NSObject

@property (nonatomic, assign)id<MeiyuPushSdkDelegate> 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 <NSObject>
@optional
-(void)cTestResult;
@end

MeiyuPushSdkC.h

#import <Foundation/Foundation.h>

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

MeiyuPushSdkC.mm

#import "MeiyuPushSdkC.h"
#import "MeiyuPushSdk.h"

@interface MeiyuPushSdkC : NSObject<MeiyuPushSdkDelegate>
@end

@implementation MeiyuPushSdkC

- (id)init
{
    id object = [super init];
    [[MeiyuPushSdk my_initPush]setDelegate:self];
    NSLog(@"initMeiyuPushSdkC");
    return object;
}

-(void)cTestResult
{
    UnitySendMessage("Main Camera", "testSuceessResult", "成功");
}
@end

MeiyuPushSdkC *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 连到了一起。

unity3d与Object-C交互

时间: 2024-08-02 18:29:54

unity3d与Object-C交互的相关文章

unity3D与网页的交互 做项目的一点总结

http://www.游戏蛮牛.com/forum.php?mod=viewthread&tid=15507&page=1&authorid=1235 unity3D与网页的交互 做项目的一点总结,布布扣,bubuko.com

Unity3D与iOS的交互设计&lt;ViewController 的跳转&gt;

原地址:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/28797_12.html Unity3D与iOS的交互设计<ViewController 的跳转>,有需要的朋友可以参考下. 这也是第一次做这样的需求,也是公司的需要呀.做出这个真是一言难尽呀... 小弟主要不是搞iOS开发的,一直以来都是开发Android开发,只是昨天被老大叫过去做一下iOS的二维码扫描.有点iOS基础的我,只好到处搜索了.然后,二维码扫描做好了,遇

Android Studio 2.1 和 Unity3D 5.3.4 交互

这次博客讲解 Android Studio 怎么导出项目到 Unity. 在这里先吐槽一下天朝的防火墙,国内资料真的少,只有科学上网去查找各种资料,幸苦了一天总算能够正常使用了. 官网其实也有教程,只不过有点难看懂,还全是英文的,而且好像是使用Eclipse(猜的),地址是 http://docs.unity3d.com/Manual/PluginsForAndroid.html 这里我就介绍AS的创建方法吧.用AS新建一个工程,建议不熟的朋友和我一起使用相同的包名等. 工程名: 我的手机是魅蓝

UNITY3D与iOS交互解决方案

原地址:http://bbs.18183.com/thread-456979-1-1.html 本帖最后由 啊,将进酒 于 2014-2-27 11:17 编辑 "授人以鱼,不如授人以渔",以UNITY3D调用iOS版的91SDK为例,利用C# / C / OBJ-C 交互原理,本文将详细介绍UNITY3D与iOS之间交互的解决方案. 首先,打开XCODE新建一个空项目,参照91SDK开发文档将91SDK引入并进行环境配置. 配置完毕后创建一个名为"LsSdkConector

android与fragment交互,fragment显示unity3d视图。

这两天刚刚接触Unity3d,之前一直是做android开发,对于Unity3d的开发有专门的人才,我主要涉及在Unity3d与android的交互,经过两天是实验终于完成了下面的效果: 本来想写几篇博客,来详细说明下Unity3d导出android Project然后再进行二次开发的过程,后来发现几篇博客,过程和我的类似,对于重复的过程我就不写了,大家参考他的博客就可以了.而且,包括了Unity3d调用android脚本,这一块我暂时还没有涉及. Unity3D游戏开发之Unity与Andro

实操UNITY3D接入91SDK安卓版

原地址:http://bbs.18183.com/thread-149758-1-1.html 本文内容为创建UNITY3D接入91SDK的DEMO的具体操作过程.本人水平有限,UNITY3D与Android如何交互的技术请大家参看雨松的博客.我的开发环境: MAC系统, ECLIPSE, UNITY4.0开发过程:1.准备要UNITY为交互Android自备的CLASS.JAR文件.   我的操作过程是:应用程序->UNTITY文件夹->UNITY->右键:显示包内容->CONT

第一章-第二题Unity3D游戏引擎相关--By林培文

1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的?  他们的目标都是盈利么?  他们的目标都是赚取用户的现金么?还是别的? 2004年,Unity3D诞生于丹麦哥本哈根,05年将总部设在了美国旧金山,并发布了Unity 1.0版本,支持MAC平台.随后几年,Unity3D陆续Windows.IOS及Android等平台,至2011构建完PS3和XBOX360,标志其全平台的构建完成.(参考<Unity诞生于发展> link:http://www.leipho

Unity3D如何接入第三方的SDK - iOS篇

来源:http://blog.csdn.net/smlisi2/article/details/8786485 授人以鱼,不如授人以渔”,以UNITY3D调用iOS版的91SDK为例,利用C# / C / OBJ-C 交互原理,本文将详细介绍UNITY3D与iOS之间交互的解决方案. 首先,打开XCODE新建一个空项目,参照91SDK开发文档将91SDK引入并进行环境配置. 配置完毕后创建一个名为“LsSdkConector”的OBJ-C CLASS文件.完毕后,当前项目应如图: LsSdkCo

Unity3D 研究院之IOS高级界面发送消息与Unity3D消息的接收

今天和盆友们讨论IOS的高级界面与unity3d游戏引擎的交互,这个在开发中是非常重要的,unity3d 毕竟是一个面向多平台的一个游戏引擎,它不可能全部为IOS 考虑的面面俱到,引擎中也不存在针对IOS的高级界面的控件的使用. 本例实现游戏背景是Unity3D 的游戏世界,前面添加4个IOS的高级界面的按钮,并且点击这些按钮可以将消息传递给背景的Unity3D ,让它做一些事情. 上一章介绍了触摸IOS屏幕 移动摄像机的位置,下面有盆友问我说他不想移动摄像机的位置,就想移动物体的位置,我在这里

unity泛型单例

参考自:http://wiki.unity3d.com/index.php/Singleton 我们要使用Unity3d在Object类中提供了一个静态函数 :Object.DontDestroyOnLoad (Object target) . 加载新场景的时候使单例对象不被自动销毁 作为 MonoBehaviour 因为我们可能需要协同程序,所以使用 Lock同步 用法示例 MyClass.cs public class MyClass : MonoBehaviour { void Awake