unity Object-c交互

一、unity 调用 Object-c

C/C++可以直接与Object-c交互,只要把文件后缀.m直接改成.mm,成为C/C++与Object-c混编文件.

C#又可以调用C/C++方法,所以C#就是可以与Object-c交互.

过程: C# 调用 C/C++ 调用 Object-c

1.C/C++调用Object-c

新建一个Test.mm文件,定义一个C风格接口函数。如:

Test.mm

extern "C"{
  void Log(char* arg){
    // 这里可以调用object-c的函数了
    // 如 [[ AlertView alloc] init]; ...
  }
}

将Test.mm文件放到unity工程的Assets/Plugins/iOS路径下

2.C#调用C/C++

新建TestPluginiOS.cs,如:

TestPluginiOS.cs

#if UNITY_IOS && !UNITY_EDITOR//只在iOS平台下编译
using UnityEngine;
using System.Collections;
using System;
using System.Runtime.InteropServices;//DllImport在此命名空间下

public class UniWebViewPlugin {
        [DllImport("__Internal")]
        private static void Log(string arg);
        //1.访问权限不一定是private
        //2.必须是static
        //参数是string而不是char*
}
#endif

注意:参数是string而不是char*,关于C与C#参数类型映射关系 http://blog.csdn.net/yatusiter/article/details/9221861



二、Object-c调用C#

Object-c中直接使用该方法调用C#函数

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
//参数1:添加了要调用函数脚本组件的GameObject名
//参数2:回调函数的名字
//参数3:回调函数的参数

同Android开发中Java回调c#一样,三个参数都是字符串类型!但android开发中的第三个参数不能是null(若没有参数,可以用空字符串"",因为使用null程序会崩掉)

时间: 2024-10-06 18:32:01

unity Object-c交互的相关文章

Unity与服务区交互数据

Unity与服务区交互数据 Unity可能在用的时候使用到登陆等需要与服务器交互数据.今天尝试使用了WWW类和WWWForm类来实现Get请求与Post请求. 1.WWW Unity圣典解释: WWW会返回一个新的WWW对象.当它被下载,其结果可以从返回对象中获取.这个函数创建和发送一个GET请求,流将自动开始下载响应.流创建之后,你必须等待它完成,然而可以访问已下载的数据.作为一个方面的流可以被中断,因此你可以容易的告诉Unity等待下载完成.你可以检查isDone属性来查看是否已经下载完成,

Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息            使用的Unity版本为5.5,Androad Studio 2.3.1 接下来开始讲具体操作 首先是Androad Studio的基本配置 1.创建工程,空白的就行,反正也用不到界面布局 等待创建完成 2.新建库模块: 切换到Project视图 右击你的项目 新建一个库模块-用来负责与Unity交互 当然你也可以不

Unity与IOS交互

转自:http://www.cnblogs.com/alongu3d/p/3674174.html 环境:Mac os 10.9.2  Unity 4.2.1f4   Xcode 5.0.2 Unity IOS的交互我写过一个教程,当时我用的是Unity4.0,和现在的版本不太一样了! 链接是http://www.cnblogs.com/alongu3d/p/3279277.html 1.首先在unity的脚本中定义如下 其中,CallU3D是静态方法,供unity3d调用的! 2.导出ios工

unity与android交互

网上大多数都是把android的工程放到unity里来打包成.apk.但是我感觉那样不好,因为我延用了ios的思想,unity和ios交互是使用unity导出xcode工程进行二次开发,其实unity也可以导出eclipse进行二次开发,我用的版本是unity4.3,我记得之前我用4.0导出eclipse工程会生成三个.java脚本,现在只生成一个,UnityPlayerNativeActivity,不过这个类往上继承两层也是UnityPlayerActivity,都一样一样的,只能说4.3更简

unity和Android交互

最近在接触unity.对于unity和Android的交互,网上找了好多,大多都是一种方式,下面就说一下我使用后的心得. 首先: unity调用Android, unity代码: AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentA

unity与android交互总结

在网上找了很多教程,基本上使用的方法都是在eclipse上新建普通android工程,让主activity继承UnityPlayerActivity,然后在该activity中写供unity调用的接口或者主动要回调unity的接口,然后导出jar包到unity. 这种方式只要人品不好就会出一堆乱七八糟的问题: 如新建工程时选择SDK版本小于4.0时在unity build APK时报错,因为style.xml就不会有parent="Theme.AppCompat.Light,而是parent=&

Unity Object类

Object是unity中所有对象的基类.所以觉得有必要做出整理. 首先 DontDestroyOnLoad 就是Object类的静态方法 , 楼主在前面的博客中有详细的介绍.这里只提一下,不做任何介绍. 一 , 关于实例方法: ① :GetInstanceID -> 放回Object对象的ID号 定义 : public int GetInstanceID() (每一个GameObject , 组件 及其子类都有一个唯一的ID号 , 包括Clone的) 二 ,关于静态方法: ① : Destro

Unity与JavaScript交互——本网页弹出新窗口

赶项目遇到个需求需要在网页打开一个网页的应用因为不想在Unity场景中在编辑,所以产生了这么奇怪的需求 参考网页:http://www.studyofnet.com/news/27.html http://www.java123.net/v/959099.html http://www.java123.net/v/892812.html http://blog.csdn.net/riconyi/article/details/5540557 http://www.jb51.net/article

Unity和Lua交互

用lua就表示项目用到了热更新,通常每次热更新都会从服务器获取最新的lua脚本放到Android/ios设备的本地目录下,但是lua应该放到哪个目录下呢,这里就先说说lua里面的路径问题 1.不可以放到Resources文件夹下,因为无法找到其在设备下的位置,Resources下的东西是由unity来管理的,使用的时候通过Resources.load/loadAll来加载 2.不可以放到StreamingAssets文件夹,因为在设备下StreamingAssets文件夹里面的资源只能读,不能写

Unity 和android 交互 记录

参考文章 http://www.jianshu.com/p/c06063a403c6 趟坑如下 icon 冲突问题: 设置不了unity icon,显示的是默认的 android 小人 解决方法: 在 AndroidManifest.xml 文件添加/修改  android:icon="@drawable/app_icon", 如图: