我正在编写 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"];
应用程序没有崩溃,但调用不起作用,我得到如下输出:
The best match for method GiveDynamite has some invalid parameter.
如果我这样调用:
[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:50];
应用崩溃了。
如何将此消息从 Objective-c 发送到 Unity?
我试着像这样声明一个新方法:
extern void UnitySendMessage(const char *, const char *, int);
但是应用程序崩溃了,说 unity 没有这样的函数声明。
提前致谢。
最佳答案
根据:
void UnitySendMessage( const char * className, const char * methodName, const char * param )
你应该传递char*
:
[self callUnityObject:"_iosManager" Method:"GiveDynamite" Parameter:"50"];
在 Unity 类上你应该收到“string”参数
void GiveDynamite(string dinamite) {
...
}
然后将其解析为整数值,f.e:
dinamiteAmount = int.Parse(dinamite);
关于iOS UnitySendMessage 调用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252721/