Я создаю 3D-игру, которая будет стратегической игрой. Я хочу создать панель (группа пользовательских групп из текста и кнопок) кодом (C#), а затем переместить их так, чтобы они находились поверх GameObject в макете Canvas. Так что я делаю это:Переместить компонент пользовательского интерфейса после его создания
if (ThisBuilding == null)
ThisBuilding = this.gameObject;
Panel = Canvas.Instantiate(Panel);
Panel.transform.SetParent(canvas.transform, false); //false to prevent stupid scaling issues created by the parent change
Vector3 centerPosition = ThisBuilding.GetComponentInChildren<MeshRenderer>().bounds.center; //the building GameObject contains a MeshRenderer component in its only children.
panelRect.anchoredPosition = Vector3.Lerp(panelRect.anchoredPosition, centerPosition, 1.0f);
Дело в том, что этот скрипт запускается (Пуск()) один раз в здании, в надежде, что панель будет получить экземпляр в 3 раза, и каждая панель соответствует зданию, но и для какая-то странная причина этого не работает.
ОЖИДАЕМЫЕ РЕЗУЛЬТАТ: каждый раз, когда панель получает экземпляр, позиция такой же, как в здании, которое конкретизируется его (здание GameObject держит сценарий и включает/выключает панель)
ФАКТИЧЕСКОГО РЕЗУЛЬТАТА: даже несмотря на то, панель получает экземпляр 3 раза, как и следовало ожидать, все они находятся в одном положении и не меняются, даже когда моя функция Update() меняет свое положение. Что я делаю не так?
Человек! Это сработало отлично! Огромное спасибо! Он работает безупречно! –
Добро пожаловать, я рад, что смогу помочь! –