C# 按钮子组件的统一更改图像 void Start(){ foreach(精灵图像中的精灵纹理){ GameObject button=实例化(shopButtonPrefab)为GameObject; getComponentChildren().sprite=纹理; button.transform.SetParent(shopButtonContrainer.transform,false); } }
我有一个按钮预制,这是一个按钮,作为一个孩子的图像组件。我不知道为什么我的代码会改变按钮的精灵形象,而不是孩子的形象。重要的是,我要更改子对象,我正在更改的图像也是一个圆,因此我不想丢失按钮已经存在的矩形默认图像。如何更改子映像,同时保留按钮映像为默认值?C# 按钮子组件的统一更改图像 void Start(){ foreach(精灵图像中的精灵纹理){ GameObject button=实例化(shopButtonPrefab)为GameObject; getComponentChildren().sprite=纹理; button.transform.SetParent(shopButtonContrainer.transform,false); } },c#,unity3d,C#,Unity3d,我有一个按钮预制,这是一个按钮,作为一个孩子的图像组件。我不知道为什么我的代码会改变按钮的精灵形象,而不是孩子的形象。重要的是,我要更改子对象,我正在更改的图像也是一个圆,因此我不想丢失按钮已经存在的矩形默认图像。如何更改子映像,同时保留按钮映像为默认值?getComponentChildren()使用深度优先搜索在游戏对象或其子对象中获取请求的组件,这意味着它将首先检查父对象,并返回找到的第一个实例。您可以使用GetComponentsInChildren()这将返回一个数组,其中包含在父级及
getComponentChildren()
使用深度优先搜索在游戏对象或其子对象中获取请求的组件,这意味着它将首先检查父对象,并返回找到的第一个实例。您可以使用GetComponentsInChildren()
这将返回一个数组,其中包含在父级及其子级中找到的所有组件
另一种方法是获取第一个子元素,并对该子元素调用GetComponent()
要跳过父级,请使用GetComponentsInChildren()
循环遍历所有找到的组件,如果它们不是父级上的t
,则更改其纹理
下面是一个例子,这并不是最有效的方法:
void Start () {
foreach (Sprite texture in spriteImages) {
GameObject button = Instantiate (shopButtonPrefab) as GameObject;
button.GetComponentInChildren<Image>().sprite = texture;
button.transform.SetParent (shopButtonContrainer.transform, false);
}
}
void Start(){
foreach(精灵图像中的精灵纹理){
GameObject button=实例化(shopButtonPrefab)为GameObject;
Image buttonImage=button.GetComponent();
Image[]images=button.GetComponentsInChildren().sprite=texture;
foreach(图像中的图像){
如果(图像!=按钮图像)
{
image.sprite=纹理;
打破
}
}
button.transform.SetParent(shopButtonContrainer.transform,false);
}
}
getComponentChildren()
使用深度优先搜索在游戏对象或其子对象中获取请求的组件,这意味着它将首先检查父对象,并返回找到的第一个实例。您可以使用GetComponentsInChildren()
这将返回一个数组,其中包含在父级及其子级中找到的所有组件
另一种方法是获取第一个子元素,并对该子元素调用GetComponent()
要跳过父级,请使用GetComponentsInChildren()
循环遍历所有找到的组件,如果它们不是父级上的t
,则更改其纹理
下面是一个例子,这并不是最有效的方法:
void Start () {
foreach (Sprite texture in spriteImages) {
GameObject button = Instantiate (shopButtonPrefab) as GameObject;
button.GetComponentInChildren<Image>().sprite = texture;
button.transform.SetParent (shopButtonContrainer.transform, false);
}
}
void Start(){
foreach(精灵图像中的精灵纹理){
GameObject button=实例化(shopButtonPrefab)为GameObject;
Image buttonImage=button.GetComponent();
Image[]images=button.GetComponentsInChildren().sprite=texture;
foreach(图像中的图像){
如果(图像!=按钮图像)
{
image.sprite=纹理;
打破
}
}
button.transform.SetParent(shopButtonContrainer.transform,false);
}
}
更多阅读:那么我如何让它跳过父对象?您不能让该函数跳过父对象,但是我的答案的最后一行为您提供了另一种获取子对象图像的方法。完全没有做到这一点。因为我对所有这些都是相当陌生的,我的for循环中的if语句是什么来检查它是否在父循环中?谢谢完成了!非常感谢你。出于兴趣,是否需要中断?更多阅读:那么我如何让它跳过父对象?您不能让该函数跳过父对象,但是我的答案的最后一行为您提供了另一种获取孩子图像的方法。完全没有做到这一点。因为我对所有这些都是相当陌生的,我的for循环中的if语句是什么来检查它是否在父循环中?谢谢完成了!非常感谢你。出于兴趣,有必要休息吗?