unity Object-c交互

Posted kingBook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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程序会崩掉)

 

以上是关于unity Object-c交互的主要内容,如果未能解决你的问题,请参考以下文章

REACT NATIVE 系列教程之十二REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

REACT NATIVE 系列教程之十二REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

如何正确编组从Unity到C / C ++的字符串?

Unity如何调用Xcode中的方法

Unity与安卓交互 | Unity2019.3版本之后,在Android Studio中写代码导出aar包与Unity中使用交互的方法

Unity与安卓交互 | Unity2019.3版本之后,在Android Studio中写代码导出aar包与Unity中使用交互的方法