繁体   English   中英

从浏览器发送消息到Unity3D

[英]Send message from Browser to Unity3D

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

我的GameObject“ Player”的控制器基本上如下所示:

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");
}

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

决定将评论答案发布为将来将有此问题的人们的答案。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM