Unity调用原生(iOS, Android)方法

Unity调用原生程序方法,定义接口(doTestSelector):

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;

public class TestScript : MonoBehaviour {
    // This tells unity to look up the function FooPluginFunction
    // inside the static binary
    [DllImport ("__Internal")]
    private static extern float doTestSelector (string info);

    void doTest () {
#if UNITY_ANDROID
        using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            using( AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))
            {
                jo.Call("doTestSelector", "my info");
            }
        }
#endif

#if UNITY_IPHONE
        doTestSelector("my info");
#endif
    }

  public void backToUnity () {
    // Do somthing...
  }

}

原生程序实现接口,例如iOS,打开原生ViewController:

因为需求限制,所以仍然以Objective-C开发

extern "C" float doTestSelector(const char* info) {
    YourViewController *vc = [[YourViewController alloc] initWithNibName:@"yourViewControllerName" bundle:nil];
    [[UnityGetMainWindow() rootViewController] presentViewController:vc animated:YES completion:nil];

    return 0.0f;
}

关闭原生程序,回到Unity,同样以iOS为例:

- (IBAction)OnClickBack:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
    UnitySendMessage("TestScriptGameObject", [@"backToUnity" UTF8String], [@"" UTF8String]);
}
时间: 2024-10-10 15:01:27

Unity调用原生(iOS, Android)方法的相关文章

JavaScript如何调用Native iOS/Android 方法

写在前面的话:本文面向web前端工程师,iOS 或 Android 请移步这里stackoverflow.关于app开发模式,这里不再赘述. 一.判断机型 js 调用 Native iOS/Android function 需要使用不同的方法,所以首先要做的是判断用户机型,代码如下: var u = navigator.userAgent.toLowerCase(); var isApple = /iphone|ipad|ipod|ios/i.test(u); var isAndroid = /

Unity 发布到IOS,Android的各种坑

Unity 发布到IOS的注意事项1.开发环境MAC环境:Xcode环境 7.2.1Unity环境:Unity5.32.基本说明首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的经验!如果你想一次就发布成功,如果你想少走弯路,请仔细看我的说明.因为坑比较多!由于Unity发布到IOS,是以Xcode工程的形式发布到MAC中,所以,在发布的时候需要注意以下几点:1. 发布的工程,需要以真机进行调试(我发布的时候,选择发布unity到模拟器版本,发布后无法用模拟器运行)2. U

Unity调用Android配置方法

方法一:发布eclipse android工程(如图勾选),如同IOS发布xcode一样,在eclipse中编写调用 方法二: 操作过程配置要点: 1.新建Android工程,注意包路径比如我的是com.zx,其他步骤直接下一步完成 2.勾选Mark this project as a library 3.新建Android工程编写相关接口方法后,复制bin文件(只需要zx.jar).res资源包.AndroidMainfest.xml配置文件 4.复制到Unity工程中Plugins/Andr

「Unity」与iOS、Android平台的整合:3、导出的Android-Studio工程

本文属于「Unity与iOS.Android平台的整合」系列文章之一,转载请注明出处. Unity默认导出的是Android-Eclipse工程,毕竟Eclipse for Android开发在近一两年才开始没落,用户量还是非常巨大的. 个人认为AndroidStudio非常好用,能轻易解决很多Eclipse解决不了或者很难解决的问题. 所以我将Unity导出的Andoid工程分为Eclipse和AndroidStudio两部分. 不过我之后的相关内容都会使用AndroidStudio,希望依然

「Unity」与iOS、Android平台的整合:4、与iOS、Android的交互理论篇

本文属于「Unity与iOS.Android平台的整合」系列文章之一,转载请注明出处. 本文主要讲解Unity与iOS.Android平台进行交互的理论基础. 零.前言 在Unity端使用的是C# 在iOS端使用的是Object-C 在Android端使用的是Java 你要问我为什么? 因为我乐意啊~ 一.交互需求 代码与代码之间的交互需求抽象之后是两个最基础的要求: 1.调用函数 2.传递数据 所以我们只需要在Unity与iOS.Android之间实现这两个基础要求即可. 二.交互原理 首先,

Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 delegate 方法使我们可以做到让 js 需要调用时,通知 native.在 native 执行完相应调用后,可以用stringByEvaluatingJavaScriptFromString 方法,将执行结果返回给 js.这样,就实现了 js 与 native 代码的相互调用.具体让 js 通知 na

配置Android插件并使用unity调用

方法一:发布eclipse android工程(如图勾选),如同IOS发布xcode一样,在eclipse中编写调用 方法二:使用eclipse发布插件在unity中调用 eclipse中配置要点: 操作过程: 1.新建Android工程,注意包路径比如我的是com.zxkj,cyy,其他步骤直接下一步完成 2.右击Android工程项目导入unity 安装包中.class.jar包 Unity安装包中路径:Uniy\Editor\Data\PlaybackEngines\androidplay

(插播)unity的 异常捕捉和 ios Android 崩溃信息的捕捉。

最近 做些准备性得工作和有意思的事情.所以最近做了一个适合ios和android 错误信息捕捉的unity插件. 两个功能,app崩溃也就是闪退 是开发者 很头疼的一件事,还有就是一些莫名得错误 有时候也会困扰着我们.现在,unity已经封装得挺好了,及时出现数组越界,和空对象这样严重得错误也不会崩溃,听着挺好,但是这给开发者带了很多烦恼啊.因为有时候可能出错了 你要跟就不知道 ,在什么地方出得错误啊.所以我们要想办法去解决这个问题. 我们都知道及时app崩溃,其实后台还是在运行得 只不过是 到

react-native 调用原生方法

基于RN0.40. MyNativeModule.java package com.www; //路径名字 import android.content.Context; import android.widget.Toast; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.faceb