【发布时间】:2020-07-06 08:05:40
【问题描述】:
遇到了一个我正在努力解决的 UI 问题(UI 对我来说一直是个问题)。该项目的要点是我有一个生成点数组(Positions[i]),一个由敌人预制件(Enemies[j])和一个带有文本组件(EnemyHUD)的 UI 面板预制件组成的数组。当我通过某个函数传递字符串名称时,只要有一个具有相同名称和位置的预制件可用,它就会加载到敌人中。现在,对于加载的每个敌人预制件,我想要一个“EnemyHUD”预制件在敌人位置实例化,并带有显示敌人名称的文本。
GameObject HUD = Instantiate(EnemyHUB, Positions[i].position, Positions[i].rotation);
这一行在正确的位置生成 EnemyHUD 预制件,但它在画布外部实例化它们,因此它们显示为红色 x。所以我添加了这个:
HUD.transform.SetParent(GameObject.Find("Canvas").transform, false);
这解决了在画布之外进行实例化的问题,但也(令人恼火地)重置了实例化位置,令人尴尬的是,我不知道如何将其重新设置,同时确保它仍然是画布的子项。还没有事件触及改名部分。
从昨晚开始我就一直在研究这个,虽然我得到了很多不同的结果进行实验,但没有一个是我想要的。还是个新手,所以我确信它正看着我,所以请帮我找到它。
【问题讨论】:
标签: c# unity3d user-interface instantiation