Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 14.05.2018
Сообщений: 11
1

Спрайт не загружается на кнопку

07.07.2018, 06:59. Показов 1553. Ответов 0

Author24 — интернет-сервис помощи студентам
Столкнулся с проблемой, что изображение не хочет загружаться на UI кнопку.
Вот скрипт, который висит на ней, функция SetItem должна задавать необходимые для игры параметры (кнопка используется для отображения предмета в инвентаре) и изменить спрайт в компоненте Image на этой кнопке, однако с последним возникают какие-то проблемы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class InventorySlot : MonoBehaviour
{
    private ItemDataBase item;
 
    private int number;
 
    private Image slotImage;
    public string sortType;
 
    public void Start()
    {
        slotImage = GetComponent<Image>();
    }
 
    public void SetItem(int index, ItemDataBase itemData)
    {
        number = index;
        item = itemData;
        sortType = itemData.sortType;
        slotImage.sprite = Resources.Load<Sprite>(item.iconPath);  //на этой строке выдаёт ошибку
    }
}
Unity выдаёт ошибку "Object reference not set to an instance of an object".

Папку "Resources" создал, спрайты туда закинул.
В item.iconPath путь до спрайта в этой папке.
Пытался гуглить, может я что-то не так загружаю, но во всех примерах, которые я находил, было так же.. Может надо выставить какие-то настройки для самой картинки? "Sprite (2D and UI)" я поставил, но может ещё чего не хватает ему?

Класс ItemDataBase, если нужно:
C#
1
2
3
4
5
6
7
8
9
public class ItemDataBase
{
    public int id;
    public string itemName;
    public string type;
    public string sortType;
    public string iconPath;
    [Multiline] public string description;
}
Добавлено через 2 часа 8 минут
Мне кажется, что так же возможна какая-то проблема с доступом к полям в ItemDataBase
Его полный скрипт:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
[System.Serializable]
public class ItemDataBase
{
    public int id;
    public string itemName;
    public string type;
    public string sortType;
    public string iconPath;
    [Multiline] public string description;
}
Добавлено через 3 минуты
но если создать переменную типа Sprite, то туда спокойно загружается тем же способом, значит дело не в ItemDataBase

Добавлено через 23 часа 41 минуту
Проблема решена.
Немного намудрил с созданием объектов и вызовами функций, в slotImage просто не успевал установиться компонент. Определил его не в Start(), а непосредственно перед загрузкой спрайта и всё заработало
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2018, 06:59
Ответы с готовыми решениями:

Не загружается текстура в спрайт
Создаю игру типа бомбермена. Вместо того, чтобы при нажатии пробела выводить динамит, он выводит...

Не загружается текстура/спрайт (библиотека SFML, VS 2012)
Пробовал много раз менять исходники, пробовал разные способы подключения текстуры/спрайта.....

При нажатии на кнопку открывается диалоговое окно OpenFileDialog, выбранный файл загружается в RichTextBox
Разработать Windows Forms приложение, содержащее RichTextBox и кнопку. При нажатии на кнопку...

Есть select и при нажатии на кнопку загружается определенный html файл. Как можно упростить код?
Есть select и при нажатии на кнопку загружается определенный html файл. Как можно упростить...

0
07.07.2018, 06:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2018, 06:59
Помогаю со студенческими работами здесь

p4s800-mx se. Загружается, почти сразу выключается и загружается нормально.
доброе утро!подскажите если несложно суть проблемы в следующем: привкл компа снача происходит...

Спрайт
Люди помогите я язнаю что такое спрайт но немогу найти как их создать дайте ссилки на литературу...

Спрайт изображения
Здравствуйте! Например, нужно плавно переместить какой-то геометрический примитив из точки А в...

Нажатие на спрайт
Помогите написать процедуру которая при нажатии на спрайт выполняет действие например уничтожает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru