【问题标题】:iOS UnitySendMessage call parameteriOS UnitySendMessage 调用参数
【发布时间】:2013-08-17 01:42:46
【问题描述】:

我正在编写 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没有这样的函数声明。

提前致谢。

【问题讨论】:

  • 你不需要重新声明 UnitySendMessage,它已经在 iPhone_target_Prefix.pch 中。你有一个名为“_iosManager”的游戏对象,它的脚本有一个方法void GiveDynamite (string amount)
  • 我像上面的答案一样解决了它。我有方法,我发现我只能将 char 值发送到 _iosManager 对象。我在 Unity 部分中将 char 解析为 int,而不是在 Xcode 中。
  • 我在哪里写这段代码“extern void UnitySendMessage(constchar *, constchar *, constchar *);”当我在顶部写这个时,在导入函数下面我收到一条错误消息“未知类型名称 'constchar' "

标签: ios objective-c unity3d


【解决方案1】:

根据:

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

你应该通过char*:

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

在 Unity 类中,您应该收到“字符串”参数

void GiveDynamite(string dinamite) {
...
}

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

dinamiteAmount = int.Parse(dinamite);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多