Изменить размер Unity Sprite - PullRequest
       8

Изменить размер Unity Sprite

2 голосов
/ 09 января 2020

Итак, я делаю эту маленькую игру для университета, и у меня возникла проблема с изменением размера спрайтов. Моя игра похожа на приключение в графическом стиле c (остров обезьян, мрачный фандан go и прочее), и в ней есть инвентарь, в котором можно сохранять предметы. Проблема в , хотя спрайты мировых объектов хороши и имеют разные размеры, я хочу, чтобы их спрайты были изменены в размерах и сохранены в инвентаре, чтобы они могли поместиться.

Я думал, что это было сделано с использованием класса Bounds, но у меня есть некоторые проблемы с ним. Кроме того: учебник, за которым я следовал, сделал то, что в свое время могло бы сработать, но теперь оно дает мне ошибку компиляции. Ниже показана моя функция сохранения элемента (и изменения размера его спрайта в процессе):

void SaveInventoryItem()
{
    string name = transform.parent.gameObject.name;
    GameObject temporaryObject = Instantiate(inventoryItemPrefab);
    temporaryObject.name = name;
    temporaryObject.gameObject.GetComponent<SpriteRenderer>().sprite = transform.parent.GetComponent<SpriteRenderer>().sprite;
    temporaryObject.transform.parent = inventoryCanvas.transform;

    temporaryObject.transform.position = Vector3.forward * -1;
    temporaryObject.gameObject.GetComponentInChildren<InteractZone>().interactText = "Usar " + name;

    Bounds bounds = temporaryObject.gameObject.GetComponent<SpriteRenderer>().sprite.bounds.size ;
    float factor = General.inventoryItemSize / bounds.size.y;
}

The compile error

Ошибка говорит не может конвертировать из UnityEngine.Vector3 в UnityEngine.Bounds

Если кто-то знает способ устранения этой ошибки или другой способ изменения размера спрайтов в размере по умолчанию, сообщите мне.

Ответы [ 2 ]

1 голос
/ 09 января 2020

Как сказал Эрик в своем комментарии, вы можете просто установить изображение для элемента холста пользовательского интерфейса в инвентаре на спрайт, оно автоматически подгонит спрайт к элементу пользовательского интерфейса. Тогда все, что вам нужно сделать, - это использовать системную фигбар, предложенную для назначения спрайтов вашим изображениям, когда элементы инвентаря добавляются или удаляются.

1 голос
/ 09 января 2020

Посмотрите на комментарий @Erik Overflows. Используйте класс canvas в своей системе инвентаризации, который будет содержать набор изображений с правильно установленными размерами. Затем вы можете просто назначить спрайт изображению, и оно автоматически изменится.

...