iOS UnitySendMessage 调用参数

标签 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"];

应用程序没有崩溃,但调用不起作用,我得到如下输出:

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/

相关文章:

ios - iPad上的图像大小限制?

opengl - 具有连续随机偏移的纹理平铺?

c# - 通过C#中的TCP套接字将鼠标坐标发送到Unity Client

ios - 如何将文本文件用作数据库?

ios - 被放弃的 promise 会怎样?

ios - 如何在 ios 中获取像谷歌地图持续时间文本格式这样的持续时间?

objective-c - 清楚描述 NSArray isEqual 方法?

ios - 定期以后台模式 (iOS) 发送 HTTP 请求

ios - 是否可以为第一个字符手动创建 UITextRange?

c# - 执行一段代码后Unity 5无响应