如何从Unity中的Objective-C代码调用c#脚本?

时间:2012-12-13 07:53:20

标签: plugins unity3d

在Unity中,Wen可以通过导入objective-C的函数作为extern函数来调用C#中的Objective-C代码。 但如何从Objective-C调用C#脚本代码?

5 个答案:

答案 0 :(得分:4)

您可以使用

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");

在其中填写您将收到此消息和消息名称的游戏对象名称。

从本机代码收到此消息后,您可以实现自己的委托/事件。 UnitySendMessage的限制是当它到达Unity代码时,在本机代码中调用它之后总是1帧。并且它只能将字符串作为参数。但大部分时间都不是大问题。

答案 1 :(得分:2)

用于此的方法是UnitySendMessage。请查看部分用中文书写的Building Plugins for iOS或此blog

答案 2 :(得分:1)

看看:http://www.tinytimgames.com/2010/01/10/the-unityobjective-c-divide/ bolg post显示了一种使用KVO(Key Value Observation)和PlayerPrefs将命令从unity传递到objective-c的技术。

PlayerPrefs.SetString("Commands",
   String.Format("AwesomeCommand|{0}|{1}", awesome1, awesome2));

答案 3 :(得分:1)

原来你可以创建一个回调方法,让你做任何你想做的事。

以下是一个示例视频,显示它正在为OSX完成,但C ++代码是跨平台的。

这家伙一直在为所有操作系统制作插件视频,但是到目前为止mac是最酷的,因为它为你提供了指向C#代码的函数指针。

http://www.youtube.com/watch?v=Q2dDK0ulDYY

答案 4 :(得分:0)

适用于iOS的统一插件,允许将C#与Objective-C混合使用 http://goo.gl/XDrQFh

Unity C#

var callbackClass = AKiOSMagic.CreateClass("MyCallbackClass", "NSObject");
callbackClass.AddMethod("methodWithArg:anotherArg:", (args)
{
    // do something...
    // args.GetObject(0);
    // args.GetObject(1);
});
callbackClass.RegisterClass();

目标-C

[[NSClassFromString(@"MyCallbackClass") new] methodWithArg:@"arg1" anotherArg:@"arg2"]