3

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

4

5 回答 5

4

您可以使用

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

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

一旦您从本机代码收到此消息,您就可以实现自己的委托/事件。UnitySendMessage 的限制是当它到达 Unity 代码时,在您在本机代码中调用它后始终为 1 帧。而且它只能以字符串作为参数。但大多数时候这不是什么大问题。

于 2012-12-13T11:35:17.580 回答
2

用于此的方法是 UnitySendMessage。看看Building Plugins for iOS或这个部分用中文写的博客。

于 2012-12-13T08:56:38.197 回答
1

看看:http ://www.tinytimgames.com/2010/01/10/the-unityobjective-c-divide/ 博尔格帖子展示了一种使用 KVO(键值观察)和 PlayerPrefs 传递命令的技术统一到目标-c。

PlayerPrefs.SetString("Commands",
   String.Format("AwesomeCommand|{0}|{1}", awesome1, awesome2));
于 2013-02-13T14:59:17.863 回答
1

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

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

这个人一直在为所有操作系统制作插件视频,但 mac 是迄今为止最酷的,因为它为您提供了指向 C# 代码的函数指针。

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

于 2013-09-17T16:03:38.960 回答
0

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

统一 C#

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

Objective-C

[[NSClassFromString(@"MyCallbackClass") new] methodWithArg:@"arg1" anotherArg:@"arg2"]
于 2013-10-03T20:04:50.430 回答