在Unity中,Wen可以通过导入objective-C的函数作为extern函数来调用C#中的Objective-C代码。 但如何从Objective-C调用C#脚本代码?
答案 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#代码的函数指针。
答案 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"]