Text Unity3D忽略我的布尔变量

Text Unity3D忽略我的布尔变量,text,unity3d,Text,Unity3d,我正在使用Unity 4.6.1开发一个项目,我遇到了一个奇怪的问题:我有一个bool变量,它最初被设置为false,我试图在Start()方法中将它设置为true。首先,同一个脚本中的函数在另一个脚本的Start()方法之前被调用(这不应该发生?),其次,行ready=true似乎没有效果。以下是相关代码: public int ready = 0; void Start() { texts = new List<string>(3);

我正在使用Unity 4.6.1开发一个项目,我遇到了一个奇怪的问题:我有一个bool变量,它最初被设置为
false
,我试图在Start()方法中将它设置为
true
。首先,同一个脚本中的函数在另一个脚本的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);
    }

为什么会这样

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

更改
public int ready=0


此外,由于ready是公共的,因此请确保在编辑器中未将其设置为false。如果对此不确定,请准备一个私有变量。所以,用私人代替公共。我的第一个答案应该能解决你的问题。

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

更改
public int ready=0


此外,由于ready是公共的,因此请确保在编辑器中未将其设置为false。如果对此不确定,请准备一个私有变量。所以,用私人代替公共。我的第一个答案应该能解决你的问题。

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

更改
public int ready=0


此外,由于ready是公共的,因此请确保在编辑器中未将其设置为false。如果对此不确定,请准备一个私有变量。所以,用私人代替公共。我的第一个答案应该能解决你的问题。

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

更改
public int ready=0


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

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

GameObject canvas = GameObject.Find("canvas");
uiController = canvas.AddComponent<UIText>();
gameobjectcanvas=GameObject.Find(“canvas”);
uiController=canvas.AddComponent();
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];
gameobjectcanvas=GameObject.Find(“canvas”);
text1=canvas.transform.FindChild(“text1”).GetComponent();
text2=canvas.transform.FindChild(“text2”).GetComponent();
text3=canvas.transform.FindChild(“text3”).GetComponent();
文本=新列表(3);
文本。添加(“”);
文本。添加(“”);
文本。添加(“”);
text1.text=文本[0];
text 2.text=文本[1];
text 3.text=文本[2];

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

GameObject canvas = GameObject.Find("canvas");
uiController = canvas.AddComponent<UIText>();
gameobjectcanvas=GameObject.Find(“canvas”);
uiController=canvas.AddComponent();
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];
gameobjectcanvas=GameObject.Find(“canvas”);
text1=canvas.transform.FindChild(“text1”).GetComponent();
text2=canvas.transform.FindChild(“text2”).GetComponent();
text3=canvas.transform.FindChild(“text3”).GetComponent();
文本=新列表(3);
文本。添加(“”);
文本。添加(“”);
文本。添加(“”);
text1.text=文本[0];
text 2.text=文本[1];
text 3.text=文本[2];

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

GameObject canvas = GameObject.Find("canvas");
uiController = canvas.AddComponent<UIText>();
gameobjectcanvas=GameObject.Find(“canvas”);
uiController=canvas.AddComponent();
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];
gameobjectcanvas=GameObject.Find(“canvas”);
text1=canvas.transform.FindChild(“text1”).GetComponent();
text2=canvas.transform.FindChild(“text2”).GetComponent();
text3=canvas.transform.FindChild(“text3”).GetComponent();
文本=新列表(3);
文本。添加(“”);
文本。添加(“”);
文本。添加(“”);
text1.text=文本[0];
text 2.text=文本[1];
text 3.text=文本[2];

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

GameObject canvas = GameObject.Find("canvas");
uiController = canvas.AddComponent<UIText>();
gameobjectcanvas=GameObject.Find(“canvas”);
uiController=canvas.AddComponent();
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];
gameobjectcanvas=GameObject.Find(“canvas”);
text1=canvas.transform.FindChild(“text1”).GetComponent();
text2=canvas.transform.FindChild(“text2”).GetComponent();
text3=canv