gpt4 book ai didi

c# - 应用程序可以在 Unity 编辑器中运行,但不能在 Android 上运行

转载 作者:行者123 更新时间:2023-11-29 17:08:50 25 4
gpt4 key购买 nike

构建与 PHP/MySQL 后端通信的 Unity 前端应用程序。现在我正在研究它的注册和登录部分。在 Unity 编辑器中,一切工作正常,在浏览器前端注册也工作正常。但是,当我在 Unity 中进行工作构建并构建它并在我的 Google Pixel 手机上进行测试时,我的手机上的注册和登录都失败了。我在登录时收到的错误消息是“解析服务器响应时出错,请重试!”它位于我的 UILogin.cs 中。但除此之外没有任何附加的东西。我尝试按照 Unity 文档进行调试、adb 和 DDMS 来了解发生了什么,但所有这些尝试都失败了。 Android 和 WWW 对象或 Web 通信有什么特别不同的地方吗?这是我的 UILogin.cs 的一部分,还将包括 Login.php。

UILogin.cs

IEnumerator AttemptLogin(bool quickLogin)
{
CreateLoadingScreen();
DeactivateForm();
WWWForm form = new WWWForm();
form.AddField("email", Email.text);
form.AddField("password", Password.text);

WWW www = new WWW(URL.GetLoginURL, form);
yield return www;

DestroyLoadingScreen();
ActivateForm();
ParseResult(www.text, quickLogin);
}

void ParseResult(string result, bool quickLogin)
{
byte resultCode;
if (!byte.TryParse(result, out resultCode))
Result.text = "Error parsing response from server, please try again!";
else if (resultCode == 0)
{
if (RememberToggle.isOn && !quickLogin) // Remember me
{
PlayerPrefs.SetInt("remember", 1);
PlayerPrefs.SetString("email", Email.text);
PlayerPrefs.SetString("password", Password.text);
}
else if (!quickLogin)
{
TemporaryAccount.Email = Email.text;
TemporaryAccount.Password = Password.text;
}

SceneManager.LoadScene(3);
}
else // Failure
{
if (quickLogin)
ShowForm();

Result.text = WebError.GetLoginError(resultCode);
}
}

登录.php

<?php
require "conn.php";

$stmt = $pdo->prepare("SELECT * FROM account WHERE email=:email");
$stmt->bindParam(":email", $_POST['email']);
$stmt->execute();
$count = $stmt->rowCount(); // gets count of records found

if($count > 0) {
$result = $stmt->fetch(); // gets resultset
if(!password_verify($_POST['password'], $result[4]))
echo "2";
else
echo "0";
}
else {
echo "1";
}
?>

有什么想法吗?

更新#1我在yield return www之后打印了www.text和www.error;文本为空,错误显示:未知错误。

更新#2有趣的是,我也从中得到了未知错误:

Clickme.cs

using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class Clickme : MonoBehaviour
{
public Text Result;

public void OnClick()
{
StartCoroutine(RunScript());
}

IEnumerator RunScript()
{
WWW www = new WWW("http://www.familypolaris.com/helloWorld.php");
yield return www;

if (www.text == "")
Result.text = "Result was empty, error: " + www.error;
}
}

HelloWorld.php

<?php
echo "Hello World!";
?>

最佳答案

我明白了,所以我将在这里发布答案。在有人评论说他们尝试了我的代码并且运行得很好之后,我决定在这里尝试另一个设备。该设备也无法注册和登录。这告诉我我的build设置有问题。我的第一个想法是将构建类型从 Gradle 切换为 Internal,这立即解决了我的两台设备的问题。

关于c# - 应用程序可以在 Unity 编辑器中运行,但不能在 Android 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com