[英]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.