Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮子组件的统一更改图像 void Start(){ foreach(精灵图像中的精灵纹理){ GameObject button=实例化(shopButtonPrefab)为GameObject; getComponentChildren().sprite=纹理; button.transform.SetParent(shopButtonContrainer.transform,false); } }_C#_Unity3d - Fatal编程技术网

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语句是什么来检查它是否在父循环中?谢谢完成了!非常感谢你。出于兴趣,有必要休息吗?