Unity C#和OC互相调用

Unity  两种方式 一般都是组合使用

1.[DllImport("__Internal")]  C#调用oc

2.UnitySendMessage        oc调用C#

1 C#调用oc 在C#脚本中

using UnityEngine;

using System.Collections;
using System.Runtime.InteropServices;//引入

public class NewBehaviourScript : MonoBehaviour {
    [DllImport("__Internal")] 
    private static extern void CallOC();   //该方法为oc 中mm文件方法名称
    // Use this for initialization
    void Start () {
        CallOC ();                                     //调用
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

在MM文件中

#import

// 函数实现

#ifdef __cplusplus

extern "C" {

#endif

void CallOC()

{

NSLog(@"调用到了OC");

}

#ifdef __cplusplus

}

#endif

2 oc调用unity中代码  unity 帮我封装好的

UnitySendMessage 在java通知unity 同样可以使用

首先在MM文件中

//这段就是加了一个按钮 触发一个方法

UIButton *but=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[but setImage:[UIImage imageNamed:@"button1.png"] forState:UIControlStateNormal];

[but setImage:[UIImage imageNamed:@"button2.png"] forState:UIControlStateHighlighted];

but.frame=CGRectMake(20, 20, 50, 60);

[self.view addSubview:but];

[but addTarget:self action:@selector(buttonCall) forControlEvents:UIControlEventEditingDidEnd];

//触发方法

-(void)buttonCall{

UnitySendMessage("Cube", "buttonCall", ""); //第一个参数 同时模型名称 2 该模型挂的脚本方法名称  3参数

}

在C#中  该脚本 挂在一个Cube上

using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
    void buttonCall () {
        Debug.Log("OC buttonCall")
    }

}

时间: 2024-10-26 13:11:05

Unity C#和OC互相调用的相关文章

iOS js oc相互调用JavaScriptCore(一)

原址:http://blog.csdn.net/lwjok2007/article/details/47058101 1.普通调用 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framewor

iOS js oc相互调用(JavaScriptCore)

从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framework后 点击右下角Add 添加完成 好 创建完成之后我们导入一下头文件 #import <JavaScriptCore/JavaScr

iOS下JS与OC互相调用(一)--UIWebView 拦截URL

http://blog.csdn.net/u011619283/article/details/52135977 最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换.顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊.目前我已知的JS 与 OC 交互的处理方式: * 1.在JS 中做一次URL跳转,然后在OC中拦截跳转.(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做.) *

转载 iOS js oc相互调用(JavaScriptCore)

iOS js oc相互调用(JavaScriptCore) 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framework后 点击右下角Add 添加完成 好 创建完成之后我们导入一下头文件 [

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

在第一篇文章 iOS下JS与OC互相调用(一)中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互. 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView. 同样的用WKWebView也可以拦截URL,做JS 与OC交互.关于WKWebView与UIWebView的对比,大家请自动百度或者google. WKWebView 拦截URL WKWebView 与 UIWebView 拦截URL 的处理方式基本一样.除了代理方法和WKWebView

转--iOS下JS与原生OC互相调用

iOS下JS与原生OC互相调用 引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更容易学习上手,这里写下这篇文章来记录如何使用以及需要注意的地方. 温馨提示:本人在学习使用过程中,确实有此体会,WKWebView的确比UIWebView强大很多,与JS交互的能力显示增强,在加载速度上有所提升. WKWebView新特性 性能.稳定性.功能大幅度提升 允许JavaScript的N

iOS:在OC中调用JS脚本:示例一

1.首先导入JavaScriptCore.framework这个框架 2.创建webView.设置代理.请求手机端百度 #import "ViewController.h" #import <JavaScriptCore/JavaScriptCore.h> #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width #define SCREEN_HEIGHT [UIScreen mainScreen].bound

OC 对象调用属性(成员变量)和方法

1.成员变量可以理解为所有在类的头上声明的,无论是@interface.@implementation下用大括号括起来或者是用@property声明的变量都可以称作这个类的 成员变量,只是在@implementation下声明的变量是这个类的私有变量,外部无法访问的,而在@interface下声明的变量可以设定为全局或者私有变量, 而用@property声明的就是全局变量,是外部既可以访问,内部也可以调用的 2.首先确定一下,对象.xxx的语法后面跟的不是方法,是一个可以被访问的成员变量,之所以

cocos2d-x Lua与OC互相调用

1. Lua 调用OC 先看例子: hello.lua: -- 点击回调函数 local function notifymenuCallbackTest() local luaoc = require('luaoc') local ok, ret = luaoc.callStaticMethod("RemoteRequestRouter", "notifyWatch", {params1 = "NOTIFICATION_TO_HOME"}) en