Показать сообщение отдельно
Старый 31.05.2020, 17:23   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Как текстуру в RawImage грузить?

Сообщение от Crystal Посмотреть сообщение
Теперь решил и проблему загрузки текстуры на RawImage висящий на канвасе.

Короче, юнити странная штука, которую пишут макаки ногами.
Загрузить мы на RawImage можем текстуру только через "Resources.Load".
Самое интересное, что функция "Resources.Load" загружает текстуры
только из папок с именем "Resources". Папка может валяться где
угодно среди ассетов, главное её название, если вы решите назвать
её например "Textures", или "Zadnica", то у вас ничего не выйдет.
Здесь можно почитать про это: ТЫК

В итоге, чё делаем? Вот:

public class SUKA : MonoBehaviour
{
    public RawImage RAWA; //Сюда заранее в инспекторе запихали наш RawImage к которому этот скрипт и прикреплён
    public Texture2D TEXTA; // Сюда будем запихивать текстуру из папки "Resources" программно


    public void Start()
    {
        TEXTA = Resources.Load<Texture2D>("имя"); //Загружаем в TEXTA текстуру из папки "Resources", указываем её имя без расширения.
        RAWA.texture = TEXTA; // Натягиваем на наш RawImage эту текстуру.

    }

}
Примечательно и важно то, что в строчке "TEXTA = Resources.Load<Texture2D>("имя");" я нигде не писал путь к папке "Resources",
юнити сам находит путь, по тому что функция Resources.Load может грузить ресурсы только из папок с именем "Resources",
и по этому сама знает что искать, и путь к папке прописывать категорически запрещено!
Папок может быть сколько угодно, но имена ресурсов в них не должны повторяться,
иначе юнька будет брать тот ресурс, до которого первым доберётся листая папки.

У меня вопросов больше нет товарищи, сам до всего допёр.
У вас есть вопросы? )
Ну это на самом деле не просто так, а потому что при конпеляции приложения в него конпелируются только те ресурсы, которые точно используются.

Если ресурс был размещён на сцене или в префабе, то тогда Юнити знает, что он юзается в приложении, и будет его туда прикладывать.

А вот если ты сам грузишь через Resources.Load, то тут уже заранее неизвестно, будет файл грузиться или нет. А прикладывать вообще всё тоже не варик. Поэтому такой компромисс.

Ну, это по мнению авторов Юнити, можно соглашаться или не соглашаться.
Например, ты не кладёшь в проект лишнего, а школотроны кладут и потом плачут что приложение для телефона весит 100 ГБ. Юнити пошли навстречу народу, так сказатб.

Но вот то, что не выдаётся внятное сообщение об ошибке, из которого можно понять, в чём дело — это косяк, да. Сам в своё время точно так же налюбился, так что отлично понимаю бугурт.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Arton (02.06.2020), Crystal (31.05.2020), St_AnGer (01.06.2020)