画布的所有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元素标记。
感谢您的帮助。
答案 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;