object-c的介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了object-c的介绍相关的知识,希望对你有一定的参考价值。
参考技术AObject-C通常写作Objective-C或者Obj-C或OC,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。在MAC OS X系统下,运用苹果提供的SDK等开发工具包,可以用来做IOS开发,开发后的程序在Iphone虚拟机中进行测试,运用的主要语言为Object-c。与C#类似。Object-c仅支持单一父类继承,不支持多重继承。
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程序会崩掉)
以上是关于object-c的介绍的主要内容,如果未能解决你的问题,请参考以下文章