ИНВЕНТАРЬ В UNITY #4 || Unity C# Уроки Создание Игр На Андроид 2D
HTML-код
- Опубликовано: 4 мар 2020
- Это четвёртая часть моего курса туториалов по Unity для абсолютных новичков, в результате которых у нас получится 2D платформер с приятной графикой и анимациями, инвентарём и диалогами.
Конкретно в этой части показываю вам, как сделать простой инвентарь и систему предметов, которые игрок сможет собирать и выкладывать.
-
boosty.to/maxters - поддержать на бусти + получить доступ к исходнику этого проекта, попасть в титры к некст видосу и др.
-
ССЫЛКИ:
Скачать мою игру в GooglePlay - play.google.com/store/apps/de...
Предыдущая часть - • ДВИЖЕНИЕ КАМЕРЫ + ПАРА...
Плейлист со всеми частями - • Unity Уроки C# || Созд...
Скрипт сохранения слоёв Photoshop - github.com/hsw107/Photoshop-E...
Скачать Unity - unity3d.com/ru/get-unity/down...
-
СОЦСЕТИ:
• Телега - t.me/m4xter
• Twitch - / maxteru
• Группа VK - maxteriada
• Discord сервер - / discord
• DonationAlerts - www.donationalerts.com/r/m4xter
-
*Делитесь мнением о видео!*
Всё круто. Мне очень понравилось. Ты отлично записываешь, рассказываешь и есть много монтажа. Определённо лайк и подписка. Но! К сожелению, есть это но. Инвентарь получался прикольный, мне очень понравился. Ты показал как это сделать это круто. Но инвентарь создаётся не просто так, а для использования. А я что-то пока не очень топовый программист, чтобы понять самому как это работает. Буду безумно тебе благодарен, если ты подробно, как ты это умеешь, объяснишь как пользоваться инвенравём(использовать оружие, кушать еду, возможно отдавать или прислать вещи или даже что-то крафить). Это будет и тебе полезно, с точки зрения развития канала и привлечения подпищиков, и мне и многим остальным будет очень удобно и полезно. Заранее говорю спасибо!
@@blogerigor2904 по моему на примере кнопки Выбросить можно сделать другие функции. Предмет из слота так же удаляется но в этот раз не спавнит выброшенный, а добавляет одно сердечко к примеру
падает настроение при просмотре твоих видео хд
а что делать если у меня всё пихается в один слот, хотя скрипт PicUp написан верно ?
P.S. я прост абсолютный новичок в юнити
*Макс всё круто но можешь пожалуйста записать уроки для маленьких, тупых и обкаканых!!!*
Спасибо большое за урок! Всё понятно, ничего трудного, без воды, просто прекрасно!
что б canvas под все разрешения экранов растягивался. надо выбрать canvas Scaler и в этом окне в графе UI Scale Mode выбрать Scale With Screen Size. тогда инвентарь будет на всех устройствах отображаться как при создании . ура
спасибо помог
@@cubicworld01 там помимо этого ещё много заморочек, с якорями и тд. Причем очень важная тема.
Мне бы вот кто помог как врага прописать стреляющего..
@@veymatcompany6959 На этом канале есть туториалы где он шутер создаёт.
@@razvedchik2021 ага. С не рабочим кодом. Знаю, я все его видео ролики проверял и пытался и до сих пор пытаюсь
для верности можно задать разрешение, с которым работаешь, ибо частенько шалит (хз, как у всех, а у меня хорошо так веселится)
Везем Макса в топы ютуба))
Кстати, при прыжке может открыться инвентарь, или выброситься предмет. Чтобы этого не было в
настройке Navigation Вместо Automatic поставьте None.
Где можно найти?
@@user-qv8ob3yg6f Ты поставил к объекту Button?
Почему-то не помогает ((
А всё, я понял, спасибо
Это где
большое спасибо. в итоге все получилось. ты очень крут. желаю дальнейших успехов !
Инвентарь хоть и очень просто работает, но его можно взять за основу и просто переделать под себя. Большое спасибо автору.
Видео СУПЕРРР!!! Я в начале забыл предметам из префаба пикап добавить и думал почему предметы не берутся повторно))) Всем рекомендую! Крутые уроки!!!
спасибо тебе огромное
Я поставил пикап, всё равно не берутся повторно
@@vdtech5006 Добавь в префаб в файлах, а не в иерархии в пикап "яблокобаттон" и т.д. и заробит. только что проверил
@@vdtech5006 правда у меня другая беда. кнопка дропа не робит
@@user-mu5gm6fk9j можешь подсказать почему у меня вообще не берутся предметы? Я делал как на видео
Этот канал просто пушка!
Спасибо, очень полезное видео👍👍
Не могли бы вы создать видео про сохранение инвентаря? Мне кажется, это было бы многим интересно
да
макстер ты лучший я тебя обожаю господи ты просто богом дан всему миру. потому что показать такую схему инвентаря с более-менее понятным кодом это моё почтение
😍😍😍😍
Спасибо за ваши видео!!!!!!!!!!! Вы лучший😊
Спасибо большое автору !!!
Харош, пупсик, тутор имба🥵🥵😈
Забыли указать в стартовой функции inventory.SetActive(false); Так как изначально же false стоит и инвентарь должен быть закрытым.
Класс, спасибо.
а куда это вставлять?
@@d1kay в стартовой позиции логично же лол
@@mzng8970 da nu
да вобще в целом код можно сделать короче
Годно)
Слушайте а скоро новое видео? Очень нравиться Ваш канал, Вы один из лучших разработчиков из всех кого я знаю!
Спасибо)) Видео сегодня, если успею)
@@maxters ураа спасибо большое, иду смотреть
@@maxters привет, у меня такая ошибка : IndexOutRangeException : Index was outside the bouds of the array. Прошу твоей помощи.
@@pishy_kommentu ты стараешься добыться переменной которой нет хотя зачем это тебе сейчас
@@mzng8970 для будущих игроделов
Классный урок) если что проверка на истину можно осуществлять таким образом: if(переменная типа бул), это тоже самое, что и if(переменная == true), а ложь можно проверить if(!переменная)
Вот так вот, удачи :)
спасибо братан
Ko4ugov ьеь?))
Крутой плейлист очень!!!!!!!!!!!!
Спасибо, годно.
Тока жаль что не рассказал как юзать предметы)
Если у вас тоже такой ошибка то можно решить так
private void Start()
{
inventory = GameObject.FindGameObjectWithTag("Player").GetComponent();
}
здесь нужно написать
private void Start()
{
inventory = GameObject.FindWithTag("Player").GetComponent();
}
огромное спасибо, что бы я без вас делала
чел как же ты хорош
ты мой спаситель
я тебя обожаю,чтоб мы без тебя делали?^^
не сработало
Ты топ, спасибо большое
обяснение топ!
Чел ти лучший. Обясняеш понятно, просто, коротко. Спс
забавно, что я сундук и выброс назвал так же, как и ты, до просмотра :)
А что делать если я хочу к примеру что бы можно было брать предмет из инвентаря в руку? То есть у меня сейчас в руке меч, но я хочу взять другой меч из инвентаря. Как это сделать? А ещё скажи пожалуйста как сделать систему брони. Ответь пожалуйста.
если вначале видео на перемотку назад ставить. то Макс будет неплохой бит такой давать)
Как сделать сохранение этого инвентаря через player prefs или другую систему сохранений?
Большое спасибо за твои видео! Все понятно, у меня получается создавать игру. Только как сделать такую же систему сбора, но только с помощью клика мышки?
Блин чел спасибо рил помого!!!😎😎😎😎😎😎😎😎😎😎😎😎
У меня проблема, я сделал всё как надо, несколько раз всё проверил, а выдаёт такие ошибки:
(Недопустимый токен в объявлении класса, структура интерфейса) и (Ожидался класс, делегат, перечисление, интерфейс или структура), что мне делать?
Спасибо!!!!!
@maxter, подскажи, итем, который выбрасываю не является триггером и больше его подобрать нельзя, как исправить это?
П.С.Видосы классые, лайк однозначно!
проверь стоит ли в префабах у тебя на яблоке и смайле picUp
@@user-ul7pr7ib1t у меня стоит, но всё равно так
Не понимаю, вроде классный канал, почему так мало лайков и подписок
@Данияр Инсапов ХАЭАЭАХАХАХАХАХАХ
@Данияр Инсапов я не изза этого ору
потому что этот код после сборки нерабочий
@@sergdub6608всм, у меня все работало на 2020 версии
Потому что у всех разные увлечения и программистов особенно GameDev мало кто хочет и все идут делать сайты
Я ЛЮБЛЮ ТЕБЯЯЯЯЯЯЯЯЯ
Спасибо за видео! Нашел баг(ну или ошибся в процессе.. не понятно.
Каждое нажатие кнопок влево/вправо перемещает условный "курсор" по кнопкам. И если нажать пробел - то они нажимаются) Ну то есть если "курсор" будет под слотом сумки - прыжок будет открывать и закрывать её. Если под слотом инвентаря - будет нажиматься кнопка и вещь выбрасываться. Нашел решение, чуть ниже в комментах)
а как из инвентаря в руку поместить что бы использовать , например топор в руку что бы рубить дерево
Кстати скрипту можно поставить сразу же папку Textures так удобно
Ура инвентарь
Можешь помочь? У меня тоже самое что ты писал в pickUp, но у меня выскакивает ошибка: An object reference is required for the non-static field, method, or property "Inventory.slots"
Что то не пойму где ты переменную i объяснял? Если не сложно можешь рассказать?
я поиграл немного в твою игру она очень понравилась очень крутая , а ты можешь сделать видео про движущиеся платформы как в твоей игре
просто нажми ctrl+6 анимируй платформу так как она должна двигаться и всё. Платформа будет двигаться.
Ураааа новое видео! Кстати можешь сказать на слабых ПК юнити потянет или нет?
Привет! Да, конечно, всё должно быть гуд, если ты там гта писать не собрался))
Гта я точно писать не буду я пока новичок ).
Не знаю почему но у меня не тянет😔
@@Despa_YT🤔 ну не знаю, я лично кроме своего ПК нигде на работал, на счёт совсем слабых хз
Попробуй поставить версию 2017. У меня такая стоит на ноуте 2011 года выпуска, уверенно тянет на небольших проектах.
Maxter лучше использовать Sprite атласы, для оптимизации. И тогда не понадобится экспортировать слои.
привет, у меня вопрос, словил баг что если мышкой навестись на один из слотов и выбросить из него предмет, то потом при прыжке этот слот будет прожиматься и players будет пытаться пыкинуть предмет из этого слота, если наводиться мышкой на другой слот ситуация повторяется
Решил проблему?
нужно убрать automatic с кнопок
@@TheLartek спасибо :)
+ у меня тоже
В Button на всех кнопках drop где написано navigation выбери none
Наткнулся на одни проблемку: юнити и ошибок никаких не выдаёт, и код проверил всё без ошибок написал, и объекты все верно соединил между собой, но инвентарь всё равно почему-то не работает. А если конкретно, то игрок даже просто не поднимает предметы не понятно из-за чего. Писал на новой версии юнити, может из-за этого?
И спасибо за этот плейлист! Ты всё так понятно объясняешь!
У меня такая же проблема, нашел решение?
В добавить компонент нет моего скрипта Slot, хотя он был создан, как его там можно найти? В скриптах его тоже нет
Maxter, можешь пожалуйста сделать Гайдна про сохранение инвентаря?
Оставляй проект в описании, пожалуйста, я не всегда успеваю ловить суть и смысл твоего кода от и хочу разобрать его сам.
он же весь процесс создания снимает и поясняет
@@star_killer121 хуево поясняет
можете помочь. как зделать чтобы предметы можно было в руки брать
Кто-нибудь знает почему вещи появляются не в словах а в месте 0x 0y 0z и когда я клацаю по сундуку чтобы его закрыть он не закрывается, но последняя кнопка слота чтобы выкинуть вещь набирается непонятно для чего. Если вы знаете решение этих проблем напишите, пожалуйста!)
Почему в скрипте pickup, inventory = GameObject. FindGameObjectWithTag("Player").GetComponent() ; Пишет что GameObject[] не содержит определение GetComponent?
Тоже встретил такую ошибку. Видимо ты случайно написал FindGameObjectsWithTag, а не FindGameObjectWithTag.
Ошибка в том, что там перед With не должно быть буквы "s".
@@kosheii89 Огромное тебе спасибо! Реально и у меня была такая ошибка, аж расстроился!!! Теперь буду вчитываться в каждую букву )
@@maratkurokhtin автор работает на актуальной версии юнити, так что если что-то не работает - значит код не идентичен ;)
Что делать если я выкинул предмет то он выходит в обычное состояние и триггер перестаёт работать?Помоги плиз
нашел ответ?
Помогите, ошибку выдает
UnassignedReferenceException: The variable slots of Inventory has not been assigned.
You probably need to assign the slots variable of the Inventory script in the inspector.
Один предмет подбираю, а второй уже не могу. Это выдает
Про сокрытие и конвенцию именования ты не слышал, конечно. Ну и искать объекты по имени/тэгу - это антипаттерн.
баг:
3. предмет можно выложить под землю (можно сделать чтобы при прикосновении предмета с землёй он маленькими шагами поднимался вверх)
У меня предмет под землю проваливается как это исправить?
@@sashaurys2176 Проверь наличие колизии предмета с землей
Попробуй спавнить предмет выше
error CS0246: The type or namespace name 'Inventory' could not be found (are you missing a using directive or an assembly reference?)
Такая же фигня
Спасибо, нашёл почему кнопка была в иерархии с слотом, и потом префабы на земле не отображались, но клонировались. проблему решил выставил на ноль, и как кто то уже тут писал сделал небольшой рандом выгруженному инвентарю. так как у меня рпг .
Что то я не понял немного, в таком инвентаре каждый слот зависит от своей ячейки, то есть нельзя сделать чтобы в первом слоту был смайлик, а во втором яблочко?
Не зависит, они накапливаются слева направо в порядке заполнения инвентаря
@@maxters Спасибо
Пожалуйста, подскажите, в чем проблема! У меня Add Component не видит скрипт Pickup, почему так?
Что делать если предмет когда нажимаешь на крестик дюпается в остальные слота?
А можно поподробнее что означает private Inventory inventory; ?? Если Inventory это ссылка на наш скрипт Inventory, то разве он не должен быть static?
Так inventory это тип переменной.
Помогите вылазит ошибка:
Ошибка CS1061 "GameObject" не содержит определения "Length", и не удалось найти доступный метод расширения "Length", принимающий тип "GameObject" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Очень интересно!можете пожалуйста подсказать что делать с ошибкой когда прыгаешь инвентарь закрывается сам
Зайди во все Drop'ы и в параметрах в Button найди Navigation и смени Automatic на None
когда выбрасываю все предметы, а потом снова собираю, в один слот собирается много вещей. В чем проблема?
А как сделать сохранения инвентаря этого
Maxter , я думаю проще было бы сделать инвентарь через Scriptable Object (извините если Неправильно написал)
не знаю, проще или нет, но по крайней мере лучше, как минимум по той причине, что эта функция создана для этого, а так же она уменьшит затраты ресурса устройства, соответственно игра будет менее требовательной.
Assets\Scripts\Inventory\PickUp.cs(8,13): error CS0246: The type or namespace name 'Inventory' could not be found (are you missing a using directive or an assembly reference?)
у меня ошибка не могу исправить
такая же история
исправили ошибку? у меня тож самое
Проверте название скрипта Inventory
@@ppch21 нет
@@xain.offical проверил все ровно ошибка
не знаю почему но у меня пишет (в скрипте pickup) что System.Arrey не содержит GetComponent, не знаю почему так происходит, думаю что из-за старой весии а скачивать через Unity Hub скачивать версии не получается. (а в самом скрипте у меня как у maxter-а) и все равно спасибо maxter-у за столь хорошие обучалки, так что поднимаем его больше чем в тренды ютуба:))
Такая же ошибка была. Пробуй переписать эту строчку скрипта снова. Скорее всего ошибка в FindGameObject(S)WithTag
Привет, пытаюсь написать скрипт, чтобы при нажатии на игровой объект он удалялся, как это реализовать?
что не так в скрипте?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Destroy : MonoBehaviour
{
GameObject objectToDestroy;
public void DestroyGameObject()
{
Destroy (objectToDestroy);
}
}
В общем все отлично, но заметил пару моментов -
1. Когда меняю размер воспроизводимой игры, инветарь не увеличивается с окном, он остается мелким, а позицию сохраняет.
2. При выбрасывании предмета в прыжке, он остается висеть в воздухе.
Буду рад, если кто знает решение этих проблем)
добавь риджет бади чтоб предмет в воздухе не висел
В Canvas поставь в Ui scale mode "Scale With Screen"
@@yt_hail Огромное спасибо!!!
Помогите пожалуйста! Подбираю предмет, а когда выкидываю, то он снова не подбирается. Как исправить?
Maxter ПРОШУ сделай чтобы из инвентаря можно было использовать предмет и восстановить здоровье🙏🙏🙏Не одного видео на эту тему не нашёл
чел, тут еще здоровье толком не сделали, а ты уже его восстанавливать собрался
Опа, а где видос по навороченому инвентарю? Ты же сам видосе упомянул про него
Дарова Макс, все круто, все работает, но почему то помимо мышки, инвентарь так же открывается и закрывается на пробел. И в открытом инвентаре, когда я жму на пробел нажимаются случайные кнопки: выбрасываются предметы из случайных слотов, открывается и закрывается инвентарь, при этом мышку я даже не трогаю. Как пофиксить?
Скорее всего уже не актуально, но фиксится следующим образом:
У компонента Button(на всех объектах где компонент есть), параметр Navigation необходимо выставить = None.
@@Viskirson Сапасибо!!1раз
актуально) спасибо @@Viskirson
что делать если выбрасываю предмет, а он исчезает вообще
ВОУ ВАИДШМЙ
А с чем связано то что у меня не появилась кнопка "Button"
Еще возникли маленькие неполадки со скриптом, я это вроде написал точь в точь но цвета в некоторых словах другие
Вобщем все сложно, подскажите если знаете почему так...
цвет може тбыть другой потому что в вижуал студио он выделяется по одному, а у тебе- по другому
почему у меня в канвасе не получается сделать так, чтобы текстура предмета была поверх слота, как ни крути
А где ты обучался unity движку ?
вроде Макс учится в ВШЭиД на игрового дизайнера, но это не точно, просто в одном из видео как-то говорил
7:00 это таймкод для себя
Можно в void Chest() написать просто inventory.SetActive(!inventory); и убрать void Start() а также inventoryOn
у меня .SetActive подсвеичвается красным ничо не видет
@@ppch21 незн
А можно же создать анимацию для инвентаря чтоб плавно все слоты открывались закрывлись. Такое можно же??
Конечно можно
Что у тебя за наушники?
A4Tech Bloody G501, вообще все девайсы в описании канала есть
Может кто подсказать почему у меня функция OnTriggerEnter2D срабатывает несколько раз на один объект. Тоесть если я подбираю предмет то в инвентарь добавляется 2 или 3 объекта.
у тебя стоит 2
триггера?
Карантин начался в Казахстане как раз когда видео было залито
нечего не понятно, но очень интересно )
Только тебе не понятно
У этого пацана были 4 тысяч просмотров, а сейчас, каждые видео набирают не менее 100 тысяч просмотров.
потому что плохо сделан ролик ни чего не понятно посмотри куда людей у кого одно и тоже не получается,а это значит он рассказывает так что не понятно
за 1000 просмотров капает 5-7$ вот и считай
Бригада если у кого не подбираются вещи ПРОВЕРЬТЕ tag у Player!!! teg должен быть player, а не Untagget
Помогите, пожалуйста, после того как я возьму предмет и выбрасываю, когда я нажимаю пробел для прыжка инвентарь сам закрывается или нажимает выбросить
Понял как решить проблему?
Ребят, там просто нужно убрать automatic с кнопки которая в сундуке :D
@@user-sy6py2ql2w спасибо
@@user-sy6py2ql2w Знаю что у кого-то еще возникнет этот баг, поэтому оставлю это тут. Вместо automatic нужно выбрать none и нужно сделать это не только в Chest'e, но и в каждом из Drop. Если не сделать этого для Drop, то баг останется.
Почему то при выбрасывании предмекты висят в воздухе,а также не подбираются снова, подскажите как исправить?
чтобы не оставались в воздухе, поставь Rigidbody 2D на каждый обьект, который хочешь выкинуть
В скрипте Slot в
public class Slot : MonoBehaviour
{
private Inventory inventory;
public GameObject int i;
пишет что int - недопустимый токен в объявлении класса, записи, структуры, или элемента интерфейса.(8 строка)
ПОМОГИТЕ ПОЖАЛУЙСТА!!!!! КАК ЭТО ИСПРАВИТЬ!!!!!!
Там где public GameObject int i;
убери GameObject
блин , чем дальше , тем больше людей отсеиваются
Остаются самые сильные
СРОЧНО!! подскажите пж что делать если инвентарь не закрывается?
Метод Chest можно упростить
public void Chest()
{
inventoryOn = !inventoryOn;
inventory.SetActive(inventoryOn);
}
А ещё когда на пробел для прыжка нажимаешь то инвентарь сам откр и закр,не знаешь как это пофиксить?
@@sally4564 Пока не знаю, если узнаю то напишу.
Мне сказали что нужно убрать «автоматик» с кнопки сундука,в течении дня найду время туда заглянуть
@@sally4564 помогло, спасибо
у кого тоже интвентарь открывается от прыжка
Привет, Что делать если при запуске игры (сцены) она тупо не запускается? Одновременно нажимается пуск и пауза и нисего не происходит? Помгите пожалйста
У меня ошибка, даже без CS: Object reference not set to an instance of an object
Slot.DropItem() (at Assets/Scripts/inventory/Slot.cs27)
Не понимаю что делать
Нашел решение?
Понимаю,что вряд ли кто-то подскажет,но все же.У меня криво появляются объекты в инвентаре типо,они на половину вылезают из него,что делать?
если кто есть, помогите ошибка в инвенторе:
Assets\Pickup.cs(21,49): error CS1061: 'GameObject[]' does not contain a definition for 'size' and no accessible extension method 'size' accepting a first argument of type 'GameObject[]' could be found (are you missing a using directive or an assembly reference?)
хз бро
Нашёл как пофиксить?