Я пытаюсь создать вид сетки прокрутки, в котором каждый объект ячейки доступен.
При касании объекта ячейки я хочу масштабировать и перемещать его к центру экрана и отображать его над другими ячейками.
Я был в состоянии сделать это записываемым и масштабировать это в его положении. Теперь я хочу переместить объект ячейки в центр экрана и отобразить его над другими ячейками.
Я перепробовал много решений, но ни одно из них не работает.
Это моя иерархия:
Это сетка в нормальном состоянии:
Это сетка, когда ячейка была нажата:
Я динамически заполняю сетку из скрипта C #.
void Populate()
{
GameObject cardContainerInstance, cardInstance;
foreach (var c in cardsCollection.GetAll())
{
if (c.IsOwned)
{
cardContainerInstance = Instantiate(cardContainer, transform);
cardInstance = cardContainerInstance.transform.Find("Card").gameObject;
var cardManager = cardInstance.GetComponent<CardManager>();
cardManager.card = c;
cardManager.AddListener(this);
}
else
{
Instantiate(cardSlot, transform);
}
}
}
public void OnCardClick(GameObject cardObject, Card card)
{
Debug.Log("OnCardClick " + card.name);
if (openedCard != null) {
if (openedCard.Number == card.Number)
{
CloseCard(openedCardObject);
}
else
{
CloseCard(openedCardObject);
OpenCard(cardObject, card);
}
}
else
{
OpenCard(cardObject, card);
}
}
void OpenCard(GameObject cardObject, Card card)
{
//cardObject.GetComponent<Canvas>().sortingOrder = 1;
var animator = cardObject.GetComponent<Animator>();
animator.SetTrigger("Open");
openedCard = card;
openedCardObject = cardObject;
}
void CloseCard(GameObject cardObject)
{
var animator = cardObject.GetComponent<Animator>();
animator.SetTrigger("Close");
openedCard = null;
openedCardObject = null;
}
Я не могу понять, как переместить ячейку в центр и сделать ее выше других.
Обратите внимание, что все анимируется с помощью аниматора, прикрепленного к самому объекту.
Может ли кто-нибудь помочь мне, пожалуйста? Большое спасибо!
РЕДАКТИРОВАТЬ: подробнее
Все объекты ячейки имеют следующую иерархию:
где:
- CardContainer - пустой объект, добавленный для использования аниматора в дочернем объекте Card
- Карточка - это сам объект, который имеет сценарий, средство визуализации холста и аниматор
- StatsImage - это объект, который выдвигается при нажатии карты
- Изображение является классическим UIImage со сценарием Image, сценарием Shadow и рендером Canvas
- Другим компонентом являются простые тексты.
РЕДАКТИРОВАТЬ: исправление в процессе
Попытка применить это предложения Я смог управлять порядком рендеринга (как вы видите на изображении ниже), но, похоже, препятствует обнаружению сенсорных событий на игровом объекте.
Я также добавил GraphicsRaycaster, и теперь нижний горизонтальный вид прокрутки снова прокручивается, но только если я щелкаю и перетаскиваю карту.
Более того, с помощью GraphicsRaycaster основная сеточная карта по-прежнему не активируется, и открыть ее можно только в том случае, если она находится за нижней панелью (если я щелкну красное пятно на изображении под картой, расположенной за панелью, получит щелчок)
Это CardContainer во время выполнения (обратите внимание, что я присоединяю новые Canvas и GraphicsRaycaster к CardContainer, который является «корневым» элементом):