MAU*_*UT 1 c# unity-game-engine
预制层级:
纽扣
1个文字
2图片
我希望访问预制的Image子组件。
我尝试了以下代码:
GameObject addTypeButton = (GameObject)Instantiate(prefabButton);
addTypeButton.transform.SetParent(ParentPanel, false);
//set text
addTypeButton.GetComponentInChildren<Text>().text ="Some string";
//get image
WWW www = new WWW("someImagelink");
yield return www;
//set image
addTypeButton.GetComponentInChildren<Image>().sprite = Sprite.Create(www.texture, new Rect(0, 0, www.texture.width,www.texture.height), new Vector2(0, 0));
Run Code Online (Sandbox Code Playgroud)
但是,以上代码正在访问Button(内置)的图像脚本。不是Image UI组件。如何访问UI图像(子级)组件?
请帮忙。
谢谢!
GetComponentInChildren 还将返回gameObject本身的组件。
Run Code Online (Sandbox Code Playgroud)public Component GetComponentInChildren(Type t);使用深度优先搜索返回GameObject或其任何子级中Type类型的组件。
如果子GameObject 1 Text和的索引2 Image是固定的。您可以通过Transform.GetChild(index)。
var buttonTransform = addTypeButton.transform;
var text = buttonTransform.GetChild(0);
var image = buttonTransform.GetChild(1);
Run Code Online (Sandbox Code Playgroud)如果顺序不固定,请使用Transform.Find(childName)。
var buttonTransform = addTypeButton.transform;
var text = buttonTransform.Find("1 Text");
var image = buttonTransform.Find("2 Image");
Run Code Online (Sandbox Code Playgroud)在最安全的解决方案:
将您的预制件拖到场景并将脚本附加到Button GameObject:
using UnityEngine;
using UnityEngine.UI;
public class MyButton : MonoBehaviour
{
public Text text;
public Image image;
}
Run Code Online (Sandbox Code Playgroud)
然后将1 Text和拖动2 Image到text和image在按钮检查器中的字段中。

请记住按“应用”按钮并将Ctrl+S其保存到预制件中。
这样,您可以访问文本和图像,例如:
var mybutton = addTypeButton.GetComponent<MyButton>();
mybutton.text.text = "Some string";
mybutton.image.sprite = Sprite.Create(...);
Run Code Online (Sandbox Code Playgroud)