我正在学习如何从 Unity3d 将数据发布到 Web 服务器,作为为我的游戏创建排行榜的第一步。现在,我在 Unity 中有一个非常简单的脚本,可以将名称和分数发布到我的服务器。PostScoreURL 映射到 Rails 中的创建操作(当作为 POST 发送时)。它非常简单,但在基本层面上工作。
Unity 有一个 WWW 类,我用它来 POST 到服务器。此类具有错误属性,但始终显示为 500 Internal Server Error;如果成功创建用户或由于验证问题未创建用户,则会出现此错误。我想添加到我的 Rails 应用程序中,以便我可以将更有意义的错误消息发送回 Unity,以便用户知道发生了什么。例如,如果他们尝试创建一个已经存在的用户,则应该通知他们需要使用不同的名称。
这是我的代码: Unity 脚本:
string PostScoreURL = "http://localhost:3000/users";
string name = "Melanie";
int score = 8732;
WWW www;
bool requestSent = false;
void OnGUI()
{
if (GUI.Button(new Rect(0, 0, 100, 100),"Post Score"))
{
WWWForm form = new WWWForm();
form.AddField("user[name]", name);
form.AddField("user[score]", score);
www = new WWW(PostScoreURL,form);
requestSent = true;
}
if(requestSent && www.isDone)
{
print (www.error);
requestSent = false;
}
}
从 Rails 应用程序:user.rb:
class User < ActiveRecord::Base
attr_accessible :name, :score
validates_presence_of :name, :score
validates_uniqueness_of :name
end
这是我的创建操作:
def create
@user = User.new(params[:user])
@user.save
end
我想将相关的错误消息发送回 Unity。例如:缺少用户名、缺少分数、使用的用户名。