Unity - 获取canvas元素的引用

时间:2017-03-11 09:17:14

标签: c# canvas unity3d

画布的所有GUI元素都有一个标签。例如,我的健康栏获得了标签" HealthBar"。在脚本中,我不想编写公共变量,我想通过查找标记自动找到这些元素。

所以当我尝试引用它们时,我该如何搜索它们?它们不是游戏对象。

我目前的状态:

private Image experienceBar; // The XP bar

private void Start()
{
    GameObject playerUI = GameObject.FindGameObjectWithTag("PlayerUI"); // The canvas
    experienceBar = playerUI. ?; // Find the UI element by tag
}

我不知道如何在那里获取ui元素标记。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你快到了!基本上现在你有了该UI元素的游戏对象,如果你想访问一个UI元素,那么你想要进行GetComponent调用。在你的情况下,你这样做:

experienceBar = playerUI.Find(ObjectName).GetComponent<Image>();

如果没有与<...>中的类型匹配的组件返回null,那么您所做的就是告诉系统返回附加到您的游戏对象的组件。另请注意,对象名称与对象的名称相匹配(即&#34; ExperienceBar&#34;或其他)

答案 1 :(得分:0)

experienceBar = playerUI.Find("ExperienceBar").getComponent<Image>();

“ExperienceBar”是体验栏预制名称。

更好的是,如果您的PlayerUI有一个用于体验栏的SerializedField,您可以使用体验栏填充编辑器。因此,您不需要“查找”它。

[SerializeField]
private Image experienceBar;