3

我正在编写 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);

但是应用程序崩溃了,并说 unity 没有这样的函数声明。

提前致谢。

4

1 回答 1

5

根据:

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

你应该通过char*

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

在 Unity 课程上,您应该收到“字符串”参数

void GiveDynamite(string dinamite) {
...
}

然后将其解析为整数值fe:

dinamiteAmount = int.Parse(dinamite);
于 2013-08-15T13:10:19.120 回答