1

我正在尝试向我的 Unity3D WebGl 应用程序发送消息。

我的游戏对象“玩家”的控制器基本上是这样的:

public class color : MonoBehaviour {

    void Start ()
    {
        gameObject.GetComponent<Renderer>().material.color = Color.red;
    }

    public void green(string s)
    {
        gameObject.GetComponent<Renderer>().material.color = Color.green;
    }
} 

我的Javascript方法是这样的:

function SaySomethingToUnity() {
    SendMessage("Player", "green", "teeeext");
}

但是当我调用它时,什么也没有发生。我究竟做错了什么?

4

2 回答 2

5

决定将评论答案发布为将来会遇到此问题的人的答案。

页面必须在从 Unity 调用任何函数之前完成加载,否则它将无法工作。当 Unity 尚未完成加载时Objects,您要向其发送消息的存在。因此会抛出错误,或者如果Exception禁用它会静默失败。所以你必须等待一段时间才能从 Unity 调用 Unity 函数。

于 2016-06-16T23:35:17.467 回答
1

我建议将此选项放在您自己的游戏中,但是如果您确实需要使外部脚本/应用程序(例如托管在某处的某些网站)与统一通信,则应通过 API 完成。

使用您喜欢的后端(PHP、ASP.NET WebAPI、Node.JS)创建一个 API,公开一个方法ReceiveMessageFromExternalSource(),以便您可以使用发布请求(使用适当的安全性)从您的 javascript 调用,将其存储在某处(数据库或任何其他持久性引擎),然后使用您的 Unit3D 应用程序使用WWWForm(), 调用相同的 API 以获取所述值。为了避免一直从 Unity 调用服务器以查找更新的值,并使事情“实时”工作,我建议您研究 WebSocket 之类的东西,以使您的服务器向 Unity 发送信号,甚至实现一个小型服务器与团结。

于 2016-06-15T12:32:00.743 回答