Как сделать счетчик unity3d
Как сделать счетчик unity3d
using UnityEngine ;
using System.Collections ;
public class TimerLesson : MonoBehaviour <
public int xs, ys, ;
public int xm, ym ;
//do not edit
public int timersecond ;
public float secondgametime = 0 ;
public float secondgametimereset = 0 ;
public float minedgametime = 0 ;
public float minegametimereset = 0 ;
//up game timer translate in second
secondgametime += Time. deltaTime ;
if ( secondgametime >= 2.5 ) <
timersecond += 1 ;
>
if ( secondgametime >= 2.5 ) <
secondgametime = secondgametimereset ;
>
//up second time translate into minutes
if ( timersecond >= 60 ) <
minedgametime += 1 ;
timersecond = 0 ;
>
if ( minedgametime >= 60 ) <
minedgametime = minegametimereset ;
>
>
стартовые числа для счётчика
public int timersecond;
public float secondgametime = 0;
public float secondgametimereset = 0;
public float minedgametime = 0;
public float minegametimereset = 0;
Рассчитываем счётчик для минут
Вывод Чисел на экран, причём числа не будут плясать по экрану,на разных по размеру экранам, а будут фиксироваться.
Дальше вешаем скрипт на камеру, в инспекторе скрипта пишем координаты GUI 700,10 и 670,10 или же свои
Вывод числа не как в Unity таймере 1.343453 а культурные целые числа
Так же хочу отметить что если написать вместо апдейт, фиксапдейт, то скрипт на ос андроид будет работать немного точнее
версия 2 с подробным описанием в более оптемизированном скрипте
По этой ссылке скачивайте Asset и импортируете его в Unity
https://yadi.sk/d/X56YqD3JeoToL
Дальше откройте проект, он называется LessonTimer
Заходим папку скрипт и отрываем файл под названием TimerEmult
И так что мы видим
Поскольку описание в скрипте есть я не буду сильно на этом останавливаться..
Дальше вешаем наш скрипт на камеру
Запускаем и видим что отсчёт идёт
Дальше нам к примеру надо сделать что бы секунды и минуты начинали отчёт с 20 секунд 30 минут
Идём в Inspector
Пишем на против поля Timersecond 10, а на против поля Minedgametime 30
запускаем и видим отсчёт в секундах начался с 10 секунд, а отчёт минут с 30 минут.
Собственно сам скрипт кому лень скачивать)))
Unity3d. Уроки от Unity 3D Student (B13-B16)
Предыдущие уроки вы можете найти по следующим ссылкам:
Уроки B01-B03
Уроки B04-B08
Уроки B09-B12
PS: Так же исправленны некоторые ошибки в предыдущих уроках, большое спасибо хабравчанинам ufomesh и MikhailS.
Базовый Урок 13 — Определение столкновений с триггером
В уроке рассказывается, как определить столкновения между невидимыми для игрока объектами, используя неосязаемые «триггер коллайдеры» (trigger colliders).
Если вы хотите определить столкновения, но не ходите, чтоб столкнувшийся объект остановился, вам требуется использовать триггер (trigger)
Триггеры позволяют вам определить, где именно расположен объект на сцене (во время запуска приложения).
На нашей сцене имеется куб («box» с rigidbody), который падает на синюю платформу («platform»).
Естественно платформа останавливает куб, поскольку среди ее компонентов присутствует box collider.
У компонента box collider есть чекбокc Is Trigger. Если включить
его и запустить сцену снова, то куб провалиться через платформу.
Таким образом мы можем создавать столкновения, которые не должны быть видны пользователю. Например, отключим компонент Mesh Renderer у нашей платформы. Мы по прежнему видем зеленый контур объекта, если выделим его в Hierarchy View.
Если мы нажмем play, то куб провалиться через нивидимую платформу, но пока мы не можем ничего узнать о произошедшем.
Создадим скрипт, назовем его Trigger и добавим в тело класса следующий код
Добавим скрипт к платформе. Теперь, как тольку куб пройдет сквозь платформу, вы увидете сообщение «Box went through!» в консоли.
Базовый Урок 14 — GUI текст и счетчики
В уроке рассказывается, как отобразить информацию о счетчике на экран используя компонент GUI Text
Чтобы отображать текстовую информацию на экран воспользуемся элементом GUI Text.
Добавим его на сцену — Game Object->Create Other->GUI Text.
Так же, обратите внимание, чтоб у камеры был включен компонент GUILayer.
Текст можно редактировать напрямую через редактор (поле Text).
Но мы воспользуемся скриптом для этого. Добавим скрипт (GUITextExample). Код будем писать в метод Update():
Если зайти в стравку о параметре guiText.text, то увидите следующие:
var text: String
Description
The text to display.
То есть, при передачи параметра мы должны быть уверены что передаем string.
Теперь если запустить игру, то текст поменяется.
Попробуем отобразить счетчик. В класс добавим переменную-счетчик (Counter) и немного подправим код в методе Update().
В итоге Unity выдаст ошибку:
Нам требуется привести переменную типа int к типу string.
Это можно сделать многими способами. Вот некоторые из них:
Воспользуемся последним способом, только вместо пустой строки напишем текст:
Жмем play и наблюдаем как увеличивается значения переменной-счетчика.
Мы так же можем изменить шрифт текста, если у вас в проекте есть дополнительный шрифт (font).
Чтоб поменять шрифт, достаточно перетащить его в соответствующие поле компонента GUIText (Font).
Тут же можно поменять другие параметры, такие как размер (font size), выравнивание (alignment) и некоторые другие.
Базовый Урок 15 — Добавление компонентов с помощью скриптов
В уроке рассказывается, как добавить компонент к объекту используя скрипты и быть увереным, что мы их добавили только однажды.
Для того, чтобы добавить компонент в run-time воспользуемся скриптами.
В нашем примере у нас снова есть платформа («platform») и ящик(«box» с rigidbody) который на нее падает.
Попробуем добивать компонент к платформе, как только ящик упадёт на неё.
Добавим скрипт addComp В класс добивим следующий код:
Скрипт добавим к ящику. Жмем play и видим — как только ящик падает на платформа, она тоже начнёт падать.
Но в консоле вы увидите предупреждение:
Мы получили это сообщение, поскольку пытаемся добавить компонент Rigidbody каждый раз, когда ящик сталкивается с платформой, то есть — мы добавляем его более одного раза. Чтоб этого не происходило, нам нужно добавить проверку и добавлять компонент, только в случае его отсутствия. Добавим в OnCollisionEnter() еще одно условие:
Теперь запустим приложение и убедимся, что в консоли отсутствует предупреждение.
Базовый Урок 16 — Переключение между сцен
В уроке рассказывается, как написать скрипт, для переключения между сценами в проекте Unity.
Для полноценной работы с Unity нужно уметь переключаться между различными сценами, для загрузки разных уровней, меню и другого контента. Для этого воспользуемся методом LoadLevel() класса Application.
В нашем примере есть 2е сцены. Первая («Level») — с кубом и плоскостью («floor»), на которую куб падает.Вторая («gameover») — с зеленым фотон и GUI Text’ом — «YOU WIN!»
Добавим скрипт (LoadLevel) со следующим кодом:
Жмем play. В итоге в консоли появилась ошибка:
Дело в том, что когда мы работаем с классом Application, мы должны указывать в настройках сборки (Build Settings) все сцены, которые хотим загружать в итоговом приложении. Перейдем в настройки сборки File->Build Settings и перетащим сцены Level и gameover из Project View в верхнее поле Buil Settings
Немного подредактируем наш скрипт так, чтоб мы могли указывать имя уровня из окна редактора, таким образом мы делаем наш скрипт более «гибким».
В окне редактора, на против соответствующего поля компонента, напишем название сцены, которую хотим загрузить.
Как создать простой инвентарь в Unity
Инвентарь — одна из важнейших деталей игр многих жанров. Однако создать его может быть не так просто, как кажется на первый взгляд.
Чтобы реализовать инвентарь, нужно уже уметь создавать простые игры и работать с интерфейсами.
Как создать окно инвентаря
Добавьте на карту элементы Canvas с именем InventoryCanvas и Panel, в котором будут находиться остальные элементы:
Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
В компоненте Canvas Scaller укажите в UI Scale Mode вариант Scale With Screen. Так размер инвентаря будет зависеть от разрешения экрана. Внутри Panel создайте еще одну панель и назовите ее Items:
Поменяйте цвет и добавьте компонент Grid Layout Group — он позволит расположить компоненты по сетке. Можно указать отступы и размер клеток. Затем добавьте название окна — это еще одна панель с текстом.
Теперь пора приступить к созданию ячеек. Внутри панели Items создайте кнопку и назовите ее Slot. Внутрь кнопки добавьте Image и назовите этот элемент Icon — в нем будет отображаться спрайт предмета. Также создайте пустой скрипт Slot.cs, а потом сохраните слот как префаб.
После этого можно создать несколько копий ячейки, которые автоматически расположатся по сетке.
Теперь нужен скрипт, который будет отвечать за открытие и закрытие инвентаря и другой функционал, — Inventory.cs. Прикрепите его к InventoryCanvas.
Вот как это выглядит:
Как создать предмет
Рассмотреть создание предметов можно на примере брони для танка. Она будет выглядеть так:
А на танке крепится так:
Для начала перетащите спрайт на карту и добавьте ему коллайдер с триггером:
Триггер нужен, чтобы его объект можно было «подбирать», наезжая на него. Добавьте скрипт Item.cs:
Вот как будет выглядеть подбор предмета:
Пока скрипт Items.cs не создан, поэтому попытка его вызова может привести к ошибке — закомментируйте строку obj.GetComponent ().AddItem (index);
Как подобрать предмет
Создайте скрипт Items.cs и добавьте его персонажу:
Перед запуском игры нужно немного изменить персонажа. Создайте пустой объект и перетащите ему все компоненты персонажа. Сам же спрайт поместите внутрь этого объекта. Также нужно создать объект Armor — ему будет задаваться спрайт текущей брони:
Как добавить предмет в инвентарь
Теперь нужно сделать так, чтобы подобранные предметы отображались в инвентаре. Для этого добавьте вот такой код в скрипт Slot.cs:
Чтобы новый скрипт работал, нужно добавить новый функционал в Inventory.cs:
Вот как выглядит инвентарь с предметами:
Как надеть предмет
За надевание предмета будет отвечать скрипт Items:
Теперь метод Equip () нужно прикрепить к слоту и указать его номер. Первая ячейка должна идти под номером 0, вторая — под 1 и так далее:
Теперь пора проверить, как всё это работает:
Заключение
Инвентарь — достаточно сложный игровой компонент. В этой статье был разобран лишь минимальный функционал. Кроме него, можно реализовать еще много всего интересного: влияние предметов на характеристики персонажа, выкидывание предметов, передачу их другим игрокам, лут и многое другое.
Если вы хотите лучше изучить работу с Unity, записывайтесь на курс «Профессия разработчик игр на Unity». Вы научитесь создавать все основные компоненты для игры и сможете работать над крупными проектами.
Профессия
Разработчик игр на Unity
Годичный учебный курс с полным погружением в профессию разработчика игр. Вы изучите основы геймдизайна, научитесь разрабатывать 2D-, 3D- и мобильные игры, освоите способы их монетизации и продвижения.
Как создать инвентарь в 3D проекте UNITY?
В этой статье мы рассмотрим процесс создания простого инвентаря в 3D проекте и настройки его графического отображения. В качестве примера мы будем использовать бесплатные ассеты Unity.
Для Вашего удобства мы будем описывать последовательность шагов текстом и демонстрировать эти шаги в кратком видео. И так, приступим.
Нам понадобятся такие ассеты:
Подготовка проекта
Логика создания инвентаря
2. Создайте скрипт “Item” в папке “Scriptable objects”
3. Открываем скрипт “Item”, все предметы, которые мы будем создавать будут наследоваться от этого класса. Он будет наследоваться от ScriptableObject и содержать несколько полей (вы можете добавить какие-то поля по своему желанию):
4. Открываем скрипт “Inventory”, он будет прикрепляться к игроку и содержать список предметов. Создаем класс InventorySlot, он будет содержать предмет и количество экземпляров этого предмета в инвентаре. Определяем функцию добавления предмета в инвентарь, она сначала будет проверять, есть ли уже предмет с таким ID в инвентаре, в случае, если есть увеличивать их количество, а если нет – добавлять новый.
Собирание предметов
UI инвентаря
6. Создадим событие, которое будет вызываться при добавлении предмета в инвентарь
7. На панели создадим скрипт “Inventory UI”, он будет отвечать за графическое отображение инвентаря
8. Этот скрипт будет содержать метод UpdateUI, который будет принимать инвентарь и устанавливать изображения предметов. Так же необходимо добавить методы получения предмета в Inventory
9. Положим все Image в список
10. Теперь нам необходимо вызывать этот метод всякий раз, когда обновляется содержимое инвентаря, как раз для этого мы и создали событие OnInventoryChanged. Добавляем вызов нашего метода в это событие.
11. Делаем цвета всех Image прозрачными
12. Запускаем игру и убеждаемся, что подобранный предмет отображается в инвентаре
13. Осталось только сделать отображение количества предметов. Для этого к каждой картинке добавляем текстовое поле. Дополним скрипт UpdateUI, добавив туда отображение количества предметов, а так же делая пустые слоты прозрачными.
Заполняем список текстов
Создаем различные предметы (ВАЖНО: ID предметов должны быть различны) и тестируем
В данном уроке мы рассмотрели вариант создания инвентаря при помощи Scriptable Object. UI инвентаря – лишь тестовый вариант отображения, вы можете переделать его на свой вкус, так же можно сделать дополнительный класс для того, чтоб Image и Text не были отдельными списками, сделать инвентарь бесконечным, добавить возможность убирать предметы из инвентаря, сделать разные типы предметов наследуя их от Item и тд.