Unity3D C#如何设置GUI文本框的内容
用的VS2013写的脚本,教程是JS语言,请问C#怎么访问其他物体,比如这个GUITEXT,且改变它的某个属性...
用的VS2013写的脚本,教程是JS语言,请问C#怎么访问其他物体,比如这个GUITEXT,且改变它的某个属性
展开
展开全部
GameObject.Find("GUI_ZT").guiText.text="";
注意GameObject.guiText是一个组件(脚本),他有一个属性叫text,所以要改的不是guiText而是guiText.text
关于该脚本的属性这个问题,首先你要明白unity的组织结构。他是通过场景里的所有物体(GameObject)形成的树状结构,最直观的就说Hierarchy面板下的所有物体(GameObject,以下称为Go)。即,每个Go下面有除了一堆组件(Component,或者Monobaviour,也称为脚本)外,还有一个或者多个子Go。
unity的这种结构和很多主流引擎的结构是相同的,这种结构的好处就是加快搜索效率,从而提高游戏效率。在unity中,形成这个结构的组件就是Transform,通过它的Parent、Root、Child等方法就能搜索在这个Transform所在的Go上的子Go或者父Go。unity还提供了很多搜索的方法,比如用GetComponent,GetComponent<T>,GetComponentInChildren等很多查询组件的方法。为了更方便地查询,还有全局静态方法如GameObject.Find,GameObject.FindOfType等来支持开发者。
所以,你的问题的解决方案更详细地就是:
GameObject ui=GameObject.Find("GUI_ZT");
ui.guiText.text="";
推而广之,你要想改变某个组件(脚本)的某个属性,
1:找到那个脚本所在的GameObject
2:通过这个GameObject找到这个组件(脚本)
3:改变这个组件(脚本)的那个属性值
注意GameObject.guiText是一个组件(脚本),他有一个属性叫text,所以要改的不是guiText而是guiText.text
关于该脚本的属性这个问题,首先你要明白unity的组织结构。他是通过场景里的所有物体(GameObject)形成的树状结构,最直观的就说Hierarchy面板下的所有物体(GameObject,以下称为Go)。即,每个Go下面有除了一堆组件(Component,或者Monobaviour,也称为脚本)外,还有一个或者多个子Go。
unity的这种结构和很多主流引擎的结构是相同的,这种结构的好处就是加快搜索效率,从而提高游戏效率。在unity中,形成这个结构的组件就是Transform,通过它的Parent、Root、Child等方法就能搜索在这个Transform所在的Go上的子Go或者父Go。unity还提供了很多搜索的方法,比如用GetComponent,GetComponent<T>,GetComponentInChildren等很多查询组件的方法。为了更方便地查询,还有全局静态方法如GameObject.Find,GameObject.FindOfType等来支持开发者。
所以,你的问题的解决方案更详细地就是:
GameObject ui=GameObject.Find("GUI_ZT");
ui.guiText.text="";
推而广之,你要想改变某个组件(脚本)的某个属性,
1:找到那个脚本所在的GameObject
2:通过这个GameObject找到这个组件(脚本)
3:改变这个组件(脚本)的那个属性值
追问
既然是一样的写法,我错在哪里,为什么说guitext为只读
追答
注意:GameObject.Find("GUI_ZT").guiText.text="";
是text,不是guitext
guitext是自带的组件,里面有一堆属性,你让他如何等于一个字符串,类型都不相同
他有一个属性叫做text,这个才是你要赋值的属性
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询