Как сделать счетчик 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
И так что мы видим
13d189b5afd0
Поскольку описание в скрипте есть я не буду сильно на этом останавливаться..
Дальше вешаем наш скрипт на камеру
58bb876b8e71
Запускаем и видим что отсчёт идёт
e91d2f9b40ba
Дальше нам к примеру надо сделать что бы секунды и минуты начинали отчёт с 20 секунд 30 минут
Идём в Inspector
Пишем на против поля Timersecond 10, а на против поля Minedgametime 30
126a32f61462
запускаем и видим отсчёт в секундах начался с 10 секунд, а отчёт минут с 30 минут.
Собственно сам скрипт кому лень скачивать)))

Источник

Unity3d. Уроки от Unity 3D Student (B13-B16)

Предыдущие уроки вы можете найти по следующим ссылкам:
Уроки B01-B03
Уроки B04-B08
Уроки B09-B12

PS: Так же исправленны некоторые ошибки в предыдущих уроках, большое спасибо хабравчанинам ufomesh и MikhailS.

Базовый Урок 13 — Определение столкновений с триггером

В уроке рассказывается, как определить столкновения между невидимыми для игрока объектами, используя неосязаемые «триггер коллайдеры» (trigger colliders).

Если вы хотите определить столкновения, но не ходите, чтоб столкнувшийся объект остановился, вам требуется использовать триггер (trigger)

Триггеры позволяют вам определить, где именно расположен объект на сцене (во время запуска приложения).

На нашей сцене имеется куб («box» с rigidbody), который падает на синюю платформу («platform»).
9fd4325132f9ffbc02ea7b1ee9820cd0
465936e821b794095774157816a9dbd7

Естественно платформа останавливает куб, поскольку среди ее компонентов присутствует box collider.
557092081607f50c10ad5f5c47e7d027

У компонента box collider есть чекбокc Is Trigger. Если включить
его и запустить сцену снова, то куб провалиться через платформу.
b57449b21580171c3dc535c9024977bb

Таким образом мы можем создавать столкновения, которые не должны быть видны пользователю. Например, отключим компонент Mesh Renderer у нашей платформы. Мы по прежнему видем зеленый контур объекта, если выделим его в Hierarchy View.
51a50a8444b96d705dc1446d9f72e959

Если мы нажмем play, то куб провалиться через нивидимую платформу, но пока мы не можем ничего узнать о произошедшем.
5774d4ac9bc3c110630c924965878d81

Создадим скрипт, назовем его Trigger и добавим в тело класса следующий код

Добавим скрипт к платформе. Теперь, как тольку куб пройдет сквозь платформу, вы увидете сообщение «Box went through!» в консоли.

Базовый Урок 14 — GUI текст и счетчики

В уроке рассказывается, как отобразить информацию о счетчике на экран используя компонент GUI Text

Чтобы отображать текстовую информацию на экран воспользуемся элементом GUI Text.
Добавим его на сцену — Game Object->Create Other->GUI Text.
2ec5bcf1f98a121a35fe2feaad7f9915

Так же, обратите внимание, чтоб у камеры был включен компонент GUILayer.
a6827d09ac066779efb230f7802da4d7

Текст можно редактировать напрямую через редактор (поле Text).
1425aa697e6bf7b2bc509df2bed977ca

Но мы воспользуемся скриптом для этого. Добавим скрипт (GUITextExample). Код будем писать в метод Update():

Если зайти в стравку о параметре guiText.text, то увидите следующие:
var text: String
Description
The text to display.

То есть, при передачи параметра мы должны быть уверены что передаем string.

Теперь если запустить игру, то текст поменяется.
26f913d80abec5278bb8af77a0ae225d

Попробуем отобразить счетчик. В класс добавим переменную-счетчик (Counter) и немного подправим код в методе Update().

В итоге Unity выдаст ошибку:

Нам требуется привести переменную типа int к типу string.
Это можно сделать многими способами. Вот некоторые из них:

Воспользуемся последним способом, только вместо пустой строки напишем текст:

Жмем play и наблюдаем как увеличивается значения переменной-счетчика.
d1798118d76d2139ab9e7651a516cc5a

Мы так же можем изменить шрифт текста, если у вас в проекте есть дополнительный шрифт (font).

Чтоб поменять шрифт, достаточно перетащить его в соответствующие поле компонента GUIText (Font).
2acd4587b212443a639ef3539dfb061f

Тут же можно поменять другие параметры, такие как размер (font size), выравнивание (alignment) и некоторые другие.

Базовый Урок 15 — Добавление компонентов с помощью скриптов

В уроке рассказывается, как добавить компонент к объекту используя скрипты и быть увереным, что мы их добавили только однажды.

Для того, чтобы добавить компонент в run-time воспользуемся скриптами.
В нашем примере у нас снова есть платформа («platform») и ящик(«box» с rigidbody) который на нее падает.
2391b67616881eca9592e6ef3cae0c5e

Попробуем добивать компонент к платформе, как только ящик упадёт на неё.
Добавим скрипт addComp В класс добивим следующий код:

Скрипт добавим к ящику. Жмем play и видим — как только ящик падает на платформа, она тоже начнёт падать.
2259bd8cd27137d6c4bb047c8bdd9cd4

Но в консоле вы увидите предупреждение:

Мы получили это сообщение, поскольку пытаемся добавить компонент Rigidbody каждый раз, когда ящик сталкивается с платформой, то есть — мы добавляем его более одного раза. Чтоб этого не происходило, нам нужно добавить проверку и добавлять компонент, только в случае его отсутствия. Добавим в OnCollisionEnter() еще одно условие:

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

Базовый Урок 16 — Переключение между сцен

В уроке рассказывается, как написать скрипт, для переключения между сценами в проекте Unity.

Для полноценной работы с Unity нужно уметь переключаться между различными сценами, для загрузки разных уровней, меню и другого контента. Для этого воспользуемся методом LoadLevel() класса Application.

В нашем примере есть 2е сцены. Первая («Level») — с кубом и плоскостью («floor»), на которую куб падает.Вторая («gameover») — с зеленым фотон и GUI Text’ом — «YOU WIN!»
8e1c50f4b5e2b14a493f7db34a047703
be7f7b43dd0cb7fe6519b09fe25e58dc

Добавим скрипт (LoadLevel) со следующим кодом:

Жмем play. В итоге в консоли появилась ошибка:

Дело в том, что когда мы работаем с классом Application, мы должны указывать в настройках сборки (Build Settings) все сцены, которые хотим загружать в итоговом приложении. Перейдем в настройки сборки File->Build Settings и перетащим сцены Level и gameover из Project View в верхнее поле Buil Settings
2e7686dd30f0dc041ee8b7900efc6db8

Немного подредактируем наш скрипт так, чтоб мы могли указывать имя уровня из окна редактора, таким образом мы делаем наш скрипт более «гибким».

В окне редактора, на против соответствующего поля компонента, напишем название сцены, которую хотим загрузить.
bb9e810453ac3e5b53ef0c77ae1e616d

Источник

Как создать простой инвентарь в Unity

Инвентарь — одна из важнейших деталей игр многих жанров. Однако создать его может быть не так просто, как кажется на первый взгляд.

Чтобы реализовать инвентарь, нужно уже уметь создавать простые игры и работать с интерфейсами.

Как создать окно инвентаря

Добавьте на карту элементы Canvas с именем InventoryCanvas и Panel, в котором будут находиться остальные элементы:

14152030072019 e3ea06ecc4efe66fd609360c227a5daace25eda6

kucheryaviy

Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

В компоненте Canvas Scaller укажите в UI Scale Mode вариант Scale With Screen. Так размер инвентаря будет зависеть от разрешения экрана. Внутри Panel создайте еще одну панель и назовите ее Items:

14152130072019 6a4e9b3ae3023faad72ace61e6264ce47ed78056

Поменяйте цвет и добавьте компонент Grid Layout Group — он позволит расположить компоненты по сетке. Можно указать отступы и размер клеток. Затем добавьте название окна — это еще одна панель с текстом.

14152130072019 db52642fc67f6c7c46657360f234a883af322464

Теперь пора приступить к созданию ячеек. Внутри панели Items создайте кнопку и назовите ее Slot. Внутрь кнопки добавьте Image и назовите этот элемент Icon — в нем будет отображаться спрайт предмета. Также создайте пустой скрипт Slot.cs, а потом сохраните слот как префаб.

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

14152130072019 c3d4b76cd89b05f2c8e5da53f69c6d45806e9160

Теперь нужен скрипт, который будет отвечать за открытие и закрытие инвентаря и другой функционал, — Inventory.cs. Прикрепите его к InventoryCanvas.

Вот как это выглядит:

14152130072019 f0646c625095b49e4e4c41332dd1408112ad8d69

Как создать предмет

Рассмотреть создание предметов можно на примере брони для танка. Она будет выглядеть так:

14152130072019 7b64da46b2dc4329c15be64aeef9e636261e678c

А на танке крепится так:

14152130072019 4fb6fa4fbc0158ec7cf1e48acc6733dd567fe239

Для начала перетащите спрайт на карту и добавьте ему коллайдер с триггером:

14152130072019 93b8888c66d5103a8bb4f5fd89e04622d16558ec

Триггер нужен, чтобы его объект можно было «подбирать», наезжая на него. Добавьте скрипт Item.cs:

Вот как будет выглядеть подбор предмета:

14152130072019 48e955bcaa6ce26801c4639bf77f723f030656e1

Пока скрипт Items.cs не создан, поэтому попытка его вызова может привести к ошибке — закомментируйте строку obj.GetComponent ().AddItem (index);

Как подобрать предмет

Создайте скрипт Items.cs и добавьте его персонажу:

Перед запуском игры нужно немного изменить персонажа. Создайте пустой объект и перетащите ему все компоненты персонажа. Сам же спрайт поместите внутрь этого объекта. Также нужно создать объект Armor — ему будет задаваться спрайт текущей брони:

14152130072019 8bc1aa9ad985c6b5f9a267787eba176dd734e55f

Как добавить предмет в инвентарь

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

Чтобы новый скрипт работал, нужно добавить новый функционал в Inventory.cs:

Вот как выглядит инвентарь с предметами:

14152130072019 27e9aa5bdf801f94f7728fe14d1ac08405e5a691

Как надеть предмет

За надевание предмета будет отвечать скрипт Items:

Теперь метод Equip () нужно прикрепить к слоту и указать его номер. Первая ячейка должна идти под номером 0, вторая — под 1 и так далее:

14152130072019 152245077ac6dbcf53ad14fb93a3bbc9c8bae8d3

Теперь пора проверить, как всё это работает:

14152130072019 60ddb9390c7c246f6f384c5280a3e2f296db8bec

Заключение

Инвентарь — достаточно сложный игровой компонент. В этой статье был разобран лишь минимальный функционал. Кроме него, можно реализовать еще много всего интересного: влияние предметов на характеристики персонажа, выкидывание предметов, передачу их другим игрокам, лут и многое другое.

Если вы хотите лучше изучить работу с Unity, записывайтесь на курс «Профессия разработчик игр на Unity». Вы научитесь создавать все основные компоненты для игры и сможете работать над крупными проектами.

Профессия
Разработчик игр на Unity

Годичный учебный курс с полным погружением в профессию разработчика игр. Вы изучите основы геймдизайна, научитесь разрабатывать 2D-, 3D- и мобильные игры, освоите способы их монетизации и продвижения.

Источник

Как создать инвентарь в 3D проекте UNITY?

В этой статье мы рассмотрим процесс создания простого инвентаря в 3D проекте и настройки его графического отображения. В качестве примера мы будем использовать бесплатные ассеты Unity.

Для Вашего удобства мы будем описывать последовательность шагов текстом и демонстрировать эти шаги в кратком видео. И так, приступим.

Нам понадобятся такие ассеты:

Подготовка проекта

Логика создания инвентаря

1 inventory

2 inventory

2. Создайте скрипт “Item” в папке “Scriptable objects

3. Открываем скрипт “Item”, все предметы, которые мы будем создавать будут наследоваться от этого класса. Он будет наследоваться от ScriptableObject и содержать несколько полей (вы можете добавить какие-то поля по своему желанию): 3 inventory

4. Открываем скрипт “Inventory”, он будет прикрепляться к игроку и содержать список предметов. Создаем класс InventorySlot, он будет содержать предмет и количество экземпляров этого предмета в инвентаре. Определяем функцию добавления предмета в инвентарь, она сначала будет проверять, есть ли уже предмет с таким ID в инвентаре, в случае, если есть увеличивать их количество, а если нет – добавлять новый. 4 inventory

Собирание предметов

UI инвентаря

10 inventory

6. Создадим событие, которое будет вызываться при добавлении предмета в инвентарь 11 inventory

7. На панели создадим скрипт “Inventory UI”, он будет отвечать за графическое отображение инвентаря

12 inventory

8. Этот скрипт будет содержать метод UpdateUI, который будет принимать инвентарь и устанавливать изображения предметов. Так же необходимо добавить методы получения предмета в Inventory13 inventory

14 inventory

9. Положим все Image в список

10. Теперь нам необходимо вызывать этот метод всякий раз, когда обновляется содержимое инвентаря, как раз для этого мы и создали событие OnInventoryChanged. Добавляем вызов нашего метода в это событие.

11. Делаем цвета всех Image прозрачными

12. Запускаем игру и убеждаемся, что подобранный предмет отображается в инвентаре

13. Осталось только сделать отображение количества предметов. Для этого к каждой картинке добавляем текстовое поле. Дополним скрипт UpdateUI, добавив туда отображение количества предметов, а так же делая пустые слоты прозрачными. 15 inventory

Заполняем список текстов

Создаем различные предметы (ВАЖНО: ID предметов должны быть различны) и тестируем

В данном уроке мы рассмотрели вариант создания инвентаря при помощи Scriptable Object. UI инвентаря – лишь тестовый вариант отображения, вы можете переделать его на свой вкус, так же можно сделать дополнительный класс для того, чтоб Image и Text не были отдельными списками, сделать инвентарь бесконечным, добавить возможность убирать предметы из инвентаря, сделать разные типы предметов наследуя их от Item и тд.

Источник