我正在尝试向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");
}
但是当我称之为没有任何反应时。我做错了什么?
答案 0 :(得分:5)
决定将评论答案发布为将来会出现此问题的人的答案。
页面必须在从Unity调用任何函数之前完成加载,否则它将无法正常工作。当Unity尚未加载时,您要发送消息的Objects
存在不。由于此原因将引发错误,或者如果禁用Exception
,它将无提示失败。因此,在从Unity调用Unity函数之前,您必须等待一段时间。
答案 1 :(得分:1)
我建议把这个选项放在你自己的游戏中,但是如果你真的需要制作一个外部脚本/应用程序(比如某个网站托管某个地方)与团结交谈,那么应该通过API完成。
使用您首选的后端(PHP,ASP.NET WebAPI,Node.JS)创建API,公开方法ReceiveMessageFromExternalSource()
,以便您可以使用post请求(使用适当的安全性)从您的javascript调用,存储它某处(数据库或任何其他持久性引擎),然后使用您的Unit3D应用程序使用WWWForm()
调用此相同的API,以获取所述值。为了避免一直从Unity调用服务器寻找更新的值,并使事情“实时”工作,我建议你学习像WebSocket这样的东西,让你的服务器向Unity发送信号,甚至实现一个小服务器与Unity。