【问题标题】:Unity3D ignoring my boolean variableUnity3D忽略我的布尔变量
【发布时间】:2015-05-02 16:17:32
【问题描述】:

我正在使用 Unity 4.6.1 开发一个项目,但遇到了一个奇怪的问题:我有一个初始设置为 false 的 bool 变量,我正在尝试在 Start() 方法中将其设置为true。首先,同一脚本中的函数在另一个脚本的 Start() 方法之前被调用(这不应该发生吗?)其次,Start() 中的 ready = true; 行似乎没有效果.以下是相关代码:

public int ready = 0;

    void Start()
    {
        texts = new List<string>(3);
        texts.Add("");
        texts.Add("");
        texts.Add("");
        text1.text = texts[0];
        text2.text = texts[1];
        text3.text = texts[2];
        Debug.Log("Setting ready to true");
        ready = true;
    }

    public void showText(string text)
    {
        Debug.Log("Ready=" + ready);
        if (!ready)
            return;        
        texts.Insert(2, texts[1]);
        texts.Insert(1, texts[0]);
        texts.Insert(0, text);
    }

运行的日志输出是:

16:07:03.563: Setting ready to true
16:07:24.831: Ready=0

为什么会这样?!

【问题讨论】:

  • 尝试更改 Awake() 的启动方法,因为您没有与 UI 进行任何交互,并且该方法应该对您的变量有一些影响。 Unity 有时会用初始化做一些奇怪的事情
  • 这并没有真正的帮助,嗯,准备好了是false无论如何

标签: text unity3d


【解决方案1】:

你犯了一个简单的错误。您将就绪变量声明为 int 而不是 bool。

更改public int ready = 0;

public bool ready = false;

另外,由于 ready 是公开的,请确保它没有在编辑器中设置为 false。如果您对此不确定,请准备一个私有变量。因此,将公共替换为私有。我的第一个答案应该可以解决您的问题。

【讨论】:

  • 实际代码没问题,就是我这里复制的时候出错了。我用一种解决方法解决了这个问题。仍然不知道为什么该语句被忽略。
【解决方案2】:

在发布问题之前,我决定尝试使用int 变量而不是boolean,但我忘记了将其更改回来,这就是为什么int 声明是上述问题中的错误。似乎根本没有调用 Start() 或 Awake() 方法,因为我使用 new 运算符实例化了该类。我让这个类扩展了 MonoBehaviour,插入了一个空的 GameObject 作为 Text 对象的父对象,并做了以下事情:

GameObject canvas = GameObject.Find("canvas");
uiController = canvas.AddComponent<UIText>();

Awake() 中的代码改为:

GameObject canvas = GameObject.Find("canvas");
text1 = canvas.transform.FindChild("Text1").GetComponent<Text>();
text2 = canvas.transform.FindChild("Text2").GetComponent<Text>();
text3 = canvas.transform.FindChild("Text3").GetComponent<Text>();
texts = new List<string>(3);
texts.Add("");
texts.Add("");
texts.Add("");
text1.text = texts[0];
text2.text = texts[1];
text3.text = texts[2];

【讨论】:

  • 好。我曾经犯过这个错误,但很高兴展示您的解决方案,以便其他人可以从中学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 2018-02-22
  • 2011-09-12
  • 2016-02-12
相关资源
最近更新 更多