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 { …
找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of-swift-type-from-objective-c // Swift -------------------------------- @objc protocol FooDelegate:NSObjectProtocl { func bar() } class Foo: UIViewContr…
最近项目上使用js调用OC,OC再次调用JS,再次在JS页面上面回显数据. 项目中使用的是WKWebview,加载网路的URL,其实就是使用WK加载出来的H5网页,在项目中用的是H5网页有个识别按钮,调起工程里面的OCR识别功能进行识别,OCR识别的数据信息放到一个数据字典里面,直接回传值即可,用OC执行远程的js数据进行回显数据,把json字符串传给他,前端用js进行回显数据字典. js调用OC,以WKWebview为例 WKWebViewConfiguration *configuratio…
原址:http://blog.csdn.net/lwjok2007/article/details/47058101 1.普通调用 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framewor…
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用的.WKWebView 下使用WebViewJavascriptBridge与UIWebView 大同小异.主要是示例化的类不一样,一些与webView 相关的API调用不一样罢了. WKWebView 下使用WebViewJavascriptBri…
WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star.我去翻看了它的第一版本已经是4年前了,在版本V4.1.4以及之前,该库只有一个类和一个js 的txt文件,所以旧版本的WebViewJavascriptBridge 是非常容易理解的.而最新版的WebViewJavascriptBridge因为也要兼容WKWebView,所以里面也加入了两个新的类,一开始看的时候,会被它里面负责的逻辑吓到,其实仔细越多是非…
前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了.它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下,提供了简单快捷的方式与JavaScript交互. 关于JavaScriptCore的使用有两篇很好的文章: NSHipster中文版的Java​Script​Core iOS7 新JavaScriptCore框架入门介绍 看了上述两篇文章,对JavaScriptCore应该已经基本了解了.我就简要介…
在上篇文章中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互. 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView. 同样的用WKWebView也可以拦截URL,做JS 与OC交互.关于WKWebView与UIWebView的对比,大家请自动百度或者google. 打开百度网页前 打开百度网页后 UIWebView 内存47M WKWebView 内存47M WKWebView 拦截URL WKWebView 与 UIWebView 拦截…
最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换.顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊.目前我已知的JS 与 OC 交互的处理方式: * 1.在JS 中做一次URL跳转,然后在OC中拦截跳转.(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做.) * 2.利用WKWebView 的MessageHandler. * 3.利用系统库JavaScriptCore,来…
这是去年总结的一篇文章,也一并先放到这个目录下好了. iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式. JS调用原生OC篇 方式一 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理. 我写了一个简单的HTML网页和一个btn点击事件用来与原生OC交互,HTML代码如下: <html> <header> <meta http-equiv=&qu…
OS js oc相互调用(JavaScriptCore)   接着上节我们讲到的iOS调用js 下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用方法 首先我们看第一种,直接调用方法. 其中用到了iOS的block 上代码 -(void)webViewDidFinishLoad:(UIWebView *)webView { //网页加载完成调用此方法 //iOS调用js //首先创建JSContext 对象(此处通过当前webView的键获取…
iOS js oc相互调用(JavaScriptCore)   从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framework后 点击右下角Add 添加完成 好 创建完成之后我们导入一下头文件…
帮助码友解决问题,从而复习了一下oc中调用c函数的方式 1,新建c 头文件  test.h 定义 c 函数 #ifndef test_h #define test_h void verification(unsigned char INPUT[], unsigned int OUTPUT[]); #endif /* test_h */ 2,新建 c 实现文件,新建模板选中 c File  test.c 3.实现函数 // // test.c #include <stdio.h> #includ…
下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用方法 首先我们看第一种,直接调用方法. 其中用到了iOS的block 上代码 -(void)webViewDidFinishLoad:(UIWebView *)webView { //网页加载完成调用此方法 //iOS调用js //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext) JSContext *context=[webView valueFor…
我之前用了两篇文章写了WP与Unity相互通信.调用的办法,一个是事件,一个是插件. 这次来说个更简单的,我觉得这应该是Unity发布到WP或者Win Store上得天独厚的优势.毕竟都是C#. 懒得写的那么详细了. 具体就是在Unity里边定义了个Public的静态方法,在WP中直接就可以调用了,呵呵,就这样. 具体情况一般在保存数据的时候. 因为WP中的退出有可能是在多任务管理的时候,直接向下滑动,这样的退出是不会触发Unity的OnApplicationQuit的.如果你在这个事件里写了保…
1. Lua 调用OC 先看例子: hello.lua: -- 点击回调函数 local function notifymenuCallbackTest() local luaoc = require('luaoc') local ok, ret = luaoc.callStaticMethod("RemoteRequestRouter", "notifyWatch", {params1 = "NOTIFICATION_TO_HOME"}) en…
下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用方法 首先我们看第一种,直接调用方法. 其中用到了iOS的block 上代码 -(void)webViewDidFinishLoad:(UIWebView *)webView { //网页加载完成调用此方法 //iOS调用js //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext) JSContext *context=[webView valueFor…
扯两句,可以跳过 由于项目中Cordova相关功能一直是同事在负责,所以也没有仔细的去探究Cordova到底是怎么使用的,又是如何实现JS 与 OC 的交互.所以我基本上是从零开始研究和学习Cordova的使用,从上篇在官网实现命令行创建工程,到工程运行起来,实际项目中怎么使用Cordova,可能还有一些人并不懂,其实我当时执行完那些命令后也不懂. 后来搜索了一下关于Cordova 讲解的文章,没有找到一篇清晰将出如何使用Cordova,大多都是讲如何将Cordova.xcodeproj拖进工程…
使用WKWebView的时候,如果想要实现JS调用OC方法,除了拦截URL之外,还有一种简单的方式.那就是利用WKWebView的新特性MessageHandler来实现JS调用原生方法. MessageHandler 是什么? WKWebView 初始化时,有一个参数叫configuration,它是WKWebViewConfiguration类型的参数,而WKWebViewConfiguration有一个属性叫userContentController,它又是WKUserContentCon…
前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父类) 然后在类中创建几个方法,方便在OC文件中使用 class OneSwiftFile:NSObject{    override init() {        NSLog("这是在init方法中...");    }        //创建一个方法    func someFunc(…
本文主要讲如何完成lua和object-c的相互调用.       lua是一种脚本语言,可以方便的移植到各种宿主语言中,并且可以支持热更新,在游戏开发中也能当做主要的语言来编写游戏的逻辑,但是要接入第三方(例如支付宝等)时需要在不同的平台上(比如Android和ios)分别接入,这是就需要oc和lua完成通信   首先cocos2d 对oc和lua调用进行了封装,这就更有利于我们调用 cocos/cocos2d/luaoc   函数原型: -- 调用Objective-C类的接口. -- @f…
1.成员变量可以理解为所有在类的头上声明的,无论是@interface.@implementation下用大括号括起来或者是用@property声明的变量都可以称作这个类的 成员变量,只是在@implementation下声明的变量是这个类的私有变量,外部无法访问的,而在@interface下声明的变量可设定为全局或者私有变量, 而用@property声明的就是全局变量,是外部既可以访问,内部也可以调用的 2.首先确定一下,对象.xxx的语法后跟的不是成员变量,是一个可以被访问的方法名,之所以让…
新建工程,添加Cordova 关键类 新建一个工程TestCordova 然后添加:confug.xml.Private 和 Public 两个文件夹里的所有文件 然后build 发现报错 为什么有会这么多报错呢?原因是Cordova 部分类中,并没有#import <Foundation/Foundation.h>,但是它们却使用了这个库里的NSArray.NSString 等类型.为什么用在终端里用命令行创建的工程就正常呢?那是因为用命令行创建的工程里已经包含了pch 文件,并且已经imp…
示例一:在webView中调用js脚本进行搜索 1.首先导入JavaScriptCore.framework这个框架 2.创建webView.设置代理.请求手机端百度 #import "ViewController.h" #import <JavaScriptCore/JavaScriptCore.h> #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width #define SCREEN_HEIGHT [UI…
下来我们看第二种情况 就是js 中是通过一个对象来调用方法的. 此处稍微复杂一点我们需要使用到 JSExport 凡事添加了JSExport协议的协议,所规定的方法,变量等 就会对js开放,我们可以通过js调用到 如果js是一个参数或者没有参数的话 就比较简单,我们的方法名和js的方法名保持一致即可 比如: js方法为 testobject.TestOneParameter('参数1') 那么 我们在oc中添加的代理方法就为 -(void)TestOneParameter:(NSString *…
背景情况: app项目中有几个界面是需要经常变动的(不仅是内容还有UI布局等),比如活动宣传界面就是属于这一类.但是由于AppStore提交审核也是需要时间的,就算审核快,也不至于每次都为了这点事频繁审核吧.因此,这个界面就让Web组的来做HTML界面. 其实,如果只是安安静静的在app上展示下HTML,就很简单了. JS与OC之间的交互,其实也就是两个方面,一种是点击HTML上的按钮,但是调用OC方法.另一种就是点击OC原生按钮,但是调用HTML中的方法. 一.点击HTML上的按钮,但是调用O…
1.建一个OC工程命名为SwiftOC.如图所示: 2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h”,如图所示: 3.配置工程设置Defines Module 为Yes 设置Product Module Name 为当前工程名 此时系统会为工程创建一个“工程名-Swift.h”的文件,此文件不可手动创建,必须使用系统创建的. 4.创建一个Test2.swift…
1.在 Objective-C 项目中使用 Swift 代码 1)在 OC 项目中创建 .Swift 文件,文件中的格式为其本有的格式. 2)Xcode 提示是否创建 Objective-C bridging 头文件,点击 Yes 创建,Xcode 会自动创建一个桥接头文件,文件名的格式是 项目名-Bridging-Header.h. 一般情况下,Xcode 辅助生成的桥接头文件在编译属性里已经帮我们设置了引用. 如果没有的话需要自己将其配置到项目中,选中项目中的 Targets => Buil…
一,在脚本B中调用脚本A的函数. 脚本A: //myFuncs.cs using UnityEngine;using System.Collections; namespace myFuncs{    public class CmyFuncs{                public static void printHi(){            Debug.Log ("Hi");                    }    }} 脚本B: // test.cs usin…
//定义需要暴露给js的内容,这里我们只暴露personName和queryPersonName接口 @protocol PersonProtocol <JSExport> @property(nonatomic,copy)NSString *personName; -(NSString *)queryPersonName; @end //Person实现PersonProtocol协议,而自己定义的age和queryPersonAge接口不暴露给js @interface Person :…