Страница 1 из 1

Префаб на передний план

СообщениеДобавлено: 19 апр 2019, 16:33
krauser0993
Всем привет.
Подскажите, пожалуйста, как префаб, который находится в Project/Prefabs переместить на передний план в игровой сцене.
На самой сцене его нет, создается через Instantiate.

Canvas недоступен, Layer менял на UI не помогает

Изображение

Re: Префаб на передний план

СообщениеДобавлено: 19 апр 2019, 18:41
1max1
Отображение в канвасе идет по иерархии, самый нижний (последний) в иерархии будет перекрывать остальные:
Синтаксис:
Используется csharp
transform.SetAsLastSibling();

Re: Префаб на передний план

СообщениеДобавлено: 20 апр 2019, 03:03
krauser0993
1max1 писал(а):Отображение в канвасе идет по иерархии, самый нижний (последний) в иерархии будет перекрывать остальные:
Синтаксис:
Используется csharp
transform.SetAsLastSibling();


не работает :(

Синтаксис:
Используется csharp
 public class FlyDamageText : MonoBehaviour
    {
        public TextMeshProUGUI Text;
        public RectTransform Self;

        public void Start()
        {
            Text.transform.SetAsLastSibling();
        }

Re: Префаб на передний план

СообщениеДобавлено: 20 апр 2019, 03:15
1max1
Хм...


Re: Префаб на передний план

СообщениеДобавлено: 20 апр 2019, 13:43
krauser0993
Изображение

На скрине указал префаб, который создается и противника который перекрывает текст.
Менял по-разному местами, поверх противника никак не получается. :(

Re: Префаб на передний план

СообщениеДобавлено: 20 апр 2019, 13:57
1max1
Дак он же не под канвасом. И что такое лайфбар? Это спрайт? Если да, то такое смешивание я не знаю как упорядочить. Попробуй координату Z у текста подкрутить ближе к камере :-?

Re: Префаб на передний план

СообщениеДобавлено: 21 апр 2019, 07:59
krauser0993
1max1 писал(а):Дак он же не под канвасом. И что такое лайфбар? Это спрайт? Если да, то такое смешивание я не знаю как упорядочить. Попробуй координату Z у текста подкрутить ближе к камере :-?


Lifebar оказывается и есть Canvas) Стоял в режиме World Space поменял на Overlay - перекрывает, но теперь проблема в другом.
Текст создается только в центре экрана, я так понял, потому что нет значений RectTransform у Canvas.

скрипт префаба
var fly = Instantiate(FlyDamageTextPrefab, LifeBar.parent);

LifeBar.parent - это дочерний объект канваса у которого есть RectTransform(на скрине "Bar")

Re: Префаб на передний план

СообщениеДобавлено: 21 апр 2019, 11:33
1max1
Зачем тебе куча канвасов? Сделай 1 для всех своих баров.
я так понял, потому что нет значений RectTransform у Canvas

canvas.transform, но это не поможет в оверлее.
Если у тебя там вложенные канвасы, то я знаю как определить правильно положение текста. Попробуй метод:
life.position = Camera.main.WorldToScreenPoint(skelet.position + offset);

Re: Префаб на передний план

СообщениеДобавлено: 22 апр 2019, 14:40
krauser0993
Долго мучался, оказывается на префабе был прикреплен скрипт, в котором значение Order in Layer было 200, поэтому этот префаб все перекрывал.
Спасибо за ответы :)