Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 31.05.2020, 11:12   #1
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 4,792
Написано 1,504 полезных сообщений
(для 4,872 пользователей)
Как текстуру в RawImage грузить?

Я заступорился на попытках загрузить и натянуть текстуру
на RawImage программно. Сам сначала пытался по всякому,
потом уже плюнул и напрямую пробовал пример копировать,
и все эти примеры не работают, так как-они о тстарых версий юнити.
Короче у меня Rawimage висит на канвасе, и на нём периодично текстуру
нужно менять, если у кого есть рабочий код на версию 2019.3f1,
я с удовольствие пощупаю.

Так же у меня не получается готовый ассет RawImage загрузить,
с ассетами моделей проблем нет, а с этим ступор.

P.s. Документацию юнити читал, их документация говно полное.
(Offline)
 
Ответить с цитированием
Старый 31.05.2020, 15:26   #2
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 4,792
Написано 1,504 полезных сообщений
(для 4,872 пользователей)
Ответ: Как текстуру в RawImage грузить?

Короче, пошёл таким путём.
Создал рав имэйдж, натянул на него текстуру,
сделал из него ассет. Загружаю ассет через SetParent
прикрепляя к объекту внутри холста.
Так работает.

public class FuckingMonIcon : MonoBehaviour
{
    public Transform Robj; // Родительский объект внутри канваса
    public GameObject MonsterIcon1; // Ассет RawImage


    public void Start()
    {

        Instantiate(MonsterIcon1).transform.SetParent(Robj);
    }
}

Пробовал то же самое через transform.parent,
юнити грузил ассет, но восклицательными знаками ругался
типа делай через SetParent, сделал, результат - ругаться перестал.
В transform.parent родительским объектом Robj являлся GameObjectom,
а в SetParent Robj должен быть не гейм обжектом, а Transform,
координатами объекта короче.

В случае кода выше, рав имэйдж грузится в глобальных координатах,
если хотим вляпать в локальных, тобишь прямо на объект к которому лепим внутри
канваса то нужно добавить параметр "false":

Instantiate(MonsterIcon1).transform.SetParent(Robj, false);
Если в SetParent в скобках поставить "null", то загружаемый рав имйёдж
не будет привязан к холсту, а улетит в иерархию как самостоятельный объект.

Instantiate(MonsterIcon1).transform.SetParent(null);

Последний раз редактировалось Crystal, 31.05.2020 в 16:30.
(Offline)
 
Ответить с цитированием
Старый 31.05.2020, 16:11   #3
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 4,792
Написано 1,504 полезных сообщений
(для 4,872 пользователей)
Ответ: Как текстуру в RawImage грузить?

Теперь решил и проблему загрузки текстуры на 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",
и по этому сама знает что искать, и путь к папке прописывать категорически запрещено!
Папок может быть сколько угодно, но имена ресурсов в них не должны повторяться,
иначе юнька будет брать тот ресурс, до которого первым доберётся листая папки.

У меня вопросов больше нет товарищи, сам до всего допёр.
У вас есть вопросы? )
(Offline)
 
Ответить с цитированием
Старый 31.05.2020, 17:23   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,633
Написано 5,377 полезных сообщений
(для 15,499 пользователей)
Ответ: Как текстуру в 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)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:18.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com