我正在制作一个非常简单的部落战争类型的游戏,我使用Unity作为UI而不是浏览器。 我想知道如何在登录成功后让整个游戏会话保持活动状态。
我做了一个非常简单的测试,但是没有用。 我有一个InputField,它接受一个字符串(登录)和一个按钮,该按钮向php脚本发送该InputField的文本。 php脚本将其存储到$ _SESSION ['username']中。另一个按钮只是转到另一个页面并打印$ _SESSION ['username']但是它表示该变量未设置。
我曾尝试使用session_id(),但这并没有改变任何东西。 (虽然我可能错了..) 我希望自己明确表示,因为很难解释。 提前致谢
答案 0 :(得分:1)
Unity不会自动处理Cookie /会话ID。因此,每次获得www的结果时,都将带有会话ID的cookie存储在playerprefs中,如下所示:
if (www.responseHeaders.ContainsKey("SET-COOKIE")) {
PlayerPrefs.SetString("php_cookie", www.responseHeaders["SET-COOKIE"]);
}
然后将cookie字符串放回每个请求中,如下所示:
WWWForm form = new WWWForm();
Dictionary<string, string> headers = form.headers;
headers["Cookie"] = PlayerPrefs.GetString("php_cookie");
WWW www = new WWW("[full url]", form.data, headers);
while (www != null && !www.isDone) yield return null;
(我不知道它是否仍然如此,但我无法使用正常的WWW,我不得不使用WWWForm设置标题。但是不久前。)