Text Unity3D忽略我的布尔变量
我正在使用Unity 4.6.1开发一个项目,我遇到了一个奇怪的问题:我有一个bool变量,它最初被设置为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);
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