iOS UnitySendMessage调用参数

时间:2013-08-15 12:33:20

标签: ios objective-c unity3d

我正在编写Unity项目的Objective-C部分。在AppController.mm中,我声明了

extern void UnitySendMessage(const char *, const char *, const char *);

我称之为,

- (void)callUnityObject:(const char*)object Method:(const char*)method Parameter:(const char*)parameter
{
    UnitySendMessage(object, method, parameter);
}

但我有一个必须接收int参数的Unity函数。 所以,如果我这样打电话:

[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:"50"];

该应用程序不会崩溃,但调用不起作用,我得到这样的输出:

  

方法GiveDynamite的最佳匹配有一些无效参数。

如果我这样打电话:

[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:50];

应用程序正在崩溃。

如何将此消息从Objective-c发送到Unity?

我尝试声明一个像这样的新方法:

extern void UnitySendMessage(const char *, const char *, int);

但是应用程序崩溃并且说团结没有这样的功能声明。

提前致谢。

1 个答案:

答案 0 :(得分:5)

根据:

void UnitySendMessage( const char * className, const char * methodName, const char * param )

您应该通过char*

[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:"50"];

在Unity类中,您应该收到“string”param

void GiveDynamite(string dinamite) {
...
}

然后将其解析为整数值,f.e:

dinamiteAmount = int.Parse(dinamite);