【问题标题】:Debug.log not showing in consoleDebug.log 未显示在控制台中
【发布时间】:2015-12-20 15:23:23
【问题描述】:

我正在做一个登录系统,当用户输入用户名或密码时,它应该通过 debug.log 在控制台中显示一条消息。

我正在为不同脚本文件中的用户名和密码编写脚本。

这里的用户名脚本:

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


public class Username : MonoBehaviour {

    public string username;

    public void WritingUsername()
    {
    // store the input from the user in the username string

        username = transform.Find ("UsernameInputField/Text").GetComponent<InputField>().text;
        Debug.Log (username);


    }
}

密码脚本在这里:

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


public class Password : MonoBehaviour {

    public string password;

    public void WritingPassword()
    {
        // store the input from the user in the username string

        password = transform.Find ("PasswordInputField/Text").GetComponent<InputField>().text;
        Debug.Log (password);


    }

}

这里的层次结构:

有什么问题吗?

【问题讨论】:

  • writing 的电话是什么?
  • 我已经复制过去了,现在你说我没有更改密码中的写入功能,但我的想法是分别制作密码和用户名代码,然后在按下登录按钮时它调用 2 个脚本,这 2 个函数并验证它们,明白吗?

标签: c# unity3d textfield hierarchy


【解决方案1】:

如果这确实是调试未显示问题,请确保在控制台选项卡中您已选择Log选项,如图所示。使用这个选项我已经疯了:)

【讨论】:

  • 那么,你必须在按钮点击时调用 WritingUsername() 和 WritingPassword()
  • 3 年后,您的回答拯救了我的一天。互联网上的大多数其他答案甚至都没有考虑到这一点。谢谢!
【解决方案2】:

很可能输入控件不是保存脚本的对象的子对象。

Tranform.Find finds only children

你可以试试GameObject.Find

【讨论】:

  • 我将脚本放在 UsernameInputField 和 PasswordInputField 中,我做得对吗?还是我应该把它放在文本中?
  • 尝试将 PasswordInputField/Text 更改为“TexT”
【解决方案3】:

只要您在脚本中执行WritingUsernameWritingPassword 方法,您的代码就应该可以工作。

你确定你没有得到一个空字符串,String的默认值吗?

使用string.Format 通常更容易捕获空日志。它也更漂亮。

Debug.Log (string.Format("Password: {0}", password));

【讨论】:

  • 使用它不会在控制台中显示任何内容:\,当我按下子文本时,我可以看到当输入任何内容时,文本(脚本)会更改为我在密码字段中写入的内容,但是控制台一直没有显示
  • 您确定您正在执行这些方法并且脚本已添加到游戏对象中吗?您是否在控制台中收到任何其他日志消息?尝试在任何其他地方或在 void Start 中添加日志。
  • 对不起,我不明白你所说的“你确定你正在执行这些方法”是什么意思?我想我做得很好,两个脚本,用户名和密码都附加到层次结构中的 UsernameInputField 和 PasswordInputField 父级
【解决方案4】:

您确定这些脚本附加到层次结构上的某些东西吗?

只是为了测试,我会在两个脚本上都这样做:

void Start (){
    Debug.Log ("Test");
}

如果您没有看到任何内容,请尝试使用

print ("test");

如果您仍然看不到任何内容,则这些脚本由于某种原因无法运行,或者它们没有附加到任何游戏对象。

如果您看到这些消息,您的问题可能出在变量上。例如,您可以将(仅用于测试,不要为发布)存储为全局,或使用带参数的函数。

【讨论】:

  • 是的,我现在可以看到消息,我现在会检查变量
  • 我认为这可能是“.Find”上的内容,这就是为什么我说你可以使用带参数的函数。您只需在需要的地方调用函数并提供打印或调试所需的参数。
  • 关于带参数的函数我还没有研究太多,public void WritingPassword(string password),你是说这个吗?
  • 是的,你只需在其他脚本上简单地键入 WritingPassword(password)。
  • 一模一样……我实在想不通是怎么回事
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2015-03-14
  • 2017-01-19
相关资源
最近更新 更多