Вы находитесь на странице: 1из 23

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования
«Гомельский государственный университет
имени Франциска Скорины»
Факультет математики и технологий программирования
Кафедра математических проблем управления и информатики

Отчет по преддипломной практике

Исполнитель студент группы ПО-31 ________________ И. А. Могданова

Научный руководитель
ассистент кафедры МПУиИ ____________________ В. А. Прохоренко

Гомель 2022
Содержание

1 ВВЕДЕНИЕ ........................................................................................................ 3
2 ОПИСАНИЕ СРЕДСТВ РАЗРАБОТКИ ПРИЛОЖЕНИЯ .............................................. 4
2.1 ЯЗЫК ПРОГРАММИРОВАНИЯ C# ..................................................................... 4
2.2 МЕЖПЛАТФОРМЕННАЯ СРЕДА РАЗРАБОТКИ КОМПЬЮТЕРНЫХ ИГР UNITY....... 5
2.3 ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ VISUALSTUDIO ................................ 8
3 ОПИСАНИЕ ПРОГРАММНОЙ РЕАЛИЗАЦИИ РАЗРАБОТАННОГО ПРИЛОЖЕНИЯ .... 10
ЗАКЛЮЧЕНИЕ ....................................................................................................... 18
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ........................................................... 19
ПРИЛОЖЕНИЕ А ................................................................................................... 20

2
1 ВВЕДЕНИЕ
Преддипломная практика проходила в Обществе с ограниченной
ответственностью «Ай Ти Умница» в период с 24.01.2022 г. по 19.02.2022 г.
KIBERone – Международная сеть КиберШкол программирования и
цифровых технологий для детей от 6 до 14 лет.
Цель проекта: содействовать ускоренному цифровому развитию детей и
подготовка высококвалифицированных It-специалистов, внедряя
эффективные модели образования, доступные для тиражирования во всех
странах. Развивающие программы для детей пишут специалисты трех стран
Россия, Америка, Швеция.
На занятиях дети учатся писать коды, создавать сайты, мобильнее
приложения, 3D-игры, этичному блоггингу, написанию чат-ботов, фото-
видеомонтажу, смм, интернет-продвижению, кибербезопасности и даже
блокчейну.
Инновационная развивающая среда KIBERone была создана в 2016 году
разработчиком из Силиконовой Долины Борисом Каленовым и Членом
Российской Гильдии Маркетологов (с высшим математическим и
it образованием) Апальковой Ольгой.
Компания является резидентом SKolkovo, партнером Microsoft и
федеральных компаний СКБ-контур, УГМК.
В KIBERone – это школа будущего, где царит особая атмосфера
уважения, творчества и создания, здесь вместо преподавателей с детьми
работают наставники (тьюторы), которые передают свой опыт резидентам
КиберШколы, дети взаимодействуют друг с другом, создавая совместные
проекты и участвуют в мозговых штурмах, здесь проводят интерактивные
переменки с полезным перекусом со шведского стола.
Цели практики: изучение новых возможностей Unity, изучение новых
возможностей Visual Studio, изучение современного стандарта языка
программирования С#.
Задачи практики: разработать Android приложение WaterRacing 2D для
резидентов Международной школы программирования KiberOne.

3
2 ОПИСАНИЕ СРЕДСТВ РАЗРАБОТКИ ПРИЛОЖЕНИЯ

2.1 ЯЗЫК ПРОГРАММИРОВАНИЯ C#

C# - объектно-ориентированный язык программирования. Разработан в


1998 – 2001 годах группой инженеров компании Microsoft под руководством
Андерса Хейлсберга и Скотта Вильтаумота как язык разработки приложений
для платформы Microsoft .NET Framework. Впоследствии был
стандартизирован как ECMA-334 и ISO/IEC 23270.
C# относится к семье языков с С-подобным синтаксисом, из них его
синтаксис наиболее близок к С++ и Java. Он имеет статическую типизацию,
поддерживает полиморфизм, перегрузку операторов (в том числе операторов
явного и неявного приведения типа), делегаты, атрибуты, события, свойства,
обобщенные типы и методы, итераторы, анонимные функции с поддержкой
замыканий, LINQ, исключения, комментарии в формате XML.
Взяв многое от своих предшественников – языков С++, Delphi, Модула,
Smalltalk и, в особенности, Java – C#, основываясь на практике их
использования, исключает некоторые модели, показавшие себя как
проблематичные при разработке программных систем, например, C# в
отличие от С++ не поддерживает множественное наследование классов(тем не
менее допускается множественное наследование интерфейсов).
С# разрабатывался как язык программирования прикладного уровня для
CLR и, зависит, прежде всего, от возможностей самого CLR. Это касается,
прежде всего, системы типов C#, которая отражает BCL. Присутствие или
отсутствие тех или иных особенностей языка диктуется тем, может ли
конкретная языковая особенность быть передана в соответствующей
конструкции CLR. Так и с развитием CLR от версии 1.1 к 2.0 значительно
обогатился и сам C#; подобного взаимодействия следует ожидать и в
дальнейшем (однако, эта закономерность была нарущена с выходом C# 3.0,
представляющего собой расширение языка, не опирающиеся на расширение
платформы .NET). CLR представляет С#, как и всем другим .NET –
ориентированным языкам, многие возможности, которых лишены
«классические» языки программирования. Например, сборка мусора не
реализована в самом C#, а производится CLR для программ, написанных на C#
точно так же, как это делается для программ на VB>NET, J# и лр.
Из-за технических ограничений на отображение (стандартные шрифты,
браузеры и т. д.) и того, что знак диеза ♯ не представлен на стандартной
клавиатуре компьютера, при записи имени языка программирования
используют знак решётки (#). Это соглашение отражено в Спецификации
языка C# ECMA-334. Тем не менее, на практике (например, при размещении
рекламы и коробочном дизайне), «Майкрософт» использует знак диеза. 5
Названия языков программирования не принято переводить, поэтому
язык называют, используя транскрипцию, — «Си шарп».

4
2.2 МЕЖПЛАТФОРМЕННАЯ СРЕДА РАЗРАБОТКИ
КОМПЬЮТЕРНЫХ ИГР UNITY

Unity — межплатформенная среда разработки компьютерных игр,


разработанная американской компанией Unity Technologies. Unity позволяет
создавать приложения, работающие на более чем 25 различных платформах,
включающих персональные компьютеры, игровые консоли, мобильные
устройства, интернет-приложения и другие. Выпуск Unity состоялся в 2005
году и с того времени идёт постоянное развитие.
Основными преимуществами Unity являются наличие визуальной среды
разработки, межплатформенной поддержки и модульной системы
компонентов. К недостаткам относят появление сложностей при работе с
многокомпонентными схемами и затруднения при подключении внешних
библиотек.

Рисунок 1 - Создание нового проекта в Unity

На Unity написаны тысячи игр, приложений, визуализации


математических моделей, которые охватывают множество платформ и
жанров. При этом Unity используется как крупными разработчиками, так
и независимыми студиями.
Редактор Unity имеет простой Drag&Drop интерфейс, который легко
настраивать, состоящий из различных окон, благодаря чему можно
производить отладку игры прямо в редакторе. Движок использует для
написания скриптов C#. Ранее поддерживались также Boo (диалект Python,
поддержку убрали в 5-й версии) и модификация JavaScript, известная как
UnityScript (поддержка прекращена в версии 2017.1). Расчёты физики
производит физический движок PhysX от NVIDIA. Графический API - DirectX
(на данный момент DX 11)

5
Рисунок 2 - Начальная сцена проекта в Unity

Проект в Unity делится на сцены (уровни) — отдельные файлы,


содержащие свои игровые миры со своим набором объектов, сценариев, и
настроек. Сцены могут содержать в себе как, собственно, объекты (модели),
так и пустые игровые объекты — объекты, которые не имеют модели
(«пустышки»). Объекты, в свою очередь содержат наборы компонентов, с
которыми и взаимодействуют скрипты. Также у объектов есть название (в
Unity допускается наличие двух и более объектов с одинаковыми названиями),
может быть тег (метка) и слой, на котором он должен отображаться. Так, у
любого объекта на сцене обязательно присутствует компонент Transform — он
хранит в себе координаты местоположения, поворота и размеров объекта по
всем трём осям. У объектов с видимой геометрией также по умолчанию
присутствует компонент Mesh Renderer, делающий модель объекта видимой.
К объектам можно применять коллизии (в Unity т. н. коллайдеры —
collider), которых существует несколько типов.
Также Unity поддерживает физику твёрдых тел и ткани, а также физику
типа Ragdoll (тряпичная кукла). В редакторе имеется система наследования
объектов; дочерние объекты будут повторять все изменения позиции,
поворота и масштаба родительского объекта. Скрипты в редакторе
прикрепляются к объектам в виде отдельных компонентов.
При импорте текстуры в Unity можно сгенерировать alpha-канал, mip-
уровни, normal-map, light-map, карту отражений, однако непосредственно на
модель текстуру прикрепить нельзя — будет создан материал, которому будет
назначен шейдер, и затем материал прикрепится к модели. Редактор Unity
поддерживает написание и редактирование шейдеров. Редактор Unity имеет
компонент для создания анимации, но также анимацию можно создать
предварительно в 3D-редакторе и импортировать вместе с моделью, а затем
разбить на файлы.

6
Unity 3D поддерживает систему Level Of Detail (сокр. LOD), суть
которой заключается в том, что на дальнем расстоянии от игрока
высокодетализированные модели заменяются на менее детализированные, и
наоборот, а также систему Occlusion culling, суть которой в том, что у
объектов, не попадающих в поле зрения камеры не визуализируется геометрия
и коллизия, что снижает нагрузку на центральный процессор и позволяет
оптимизировать проект. При компиляции проекта создается исполняемый
(.exe) файл игры (для Windows), а в отдельной папке — данные игры (включая
все игровые уровни и динамически подключаемые библиотеки).
Движок поддерживает множество популярных форматов. Модели,
звуки, текстуры, материалы, скрипты можно запаковывать в формат
.unityassets и передавать другим разработчикам, или выкладывать в свободный
доступ. Этот же формат используется во внутреннем магазине Unity Asset
Store, в котором разработчики могут бесплатно и за деньги выкладывать в
общий доступ различные элементы, нужные при создании игр. Чтобы
использовать Unity Asset Store, необходимо иметь аккаунт разработчика Unity.
Unity имеет все нужные компоненты для создания мультиплеера. Также
можно использовать подходящий пользователю способ контроля версий. К
примеру, Tortoise SVN или Source Gear.
В Unity входит Unity Asset Server — инструментарий для совместной
разработки на базе Unity, являющийся дополнением, добавляющим контроль
версий и ряд других серверных решений.
Как правило, игровой движок предоставляет множество
функциональных возможностей, позволяющих их задействовать в различных
играх, в которые входят моделирование физических сред, карты нормалей,
динамические тени и многое другое. В отличие от многих игровых движков, у
Unity имеется два основных преимущества: наличие визуальной среды
разработки и межплатформенная поддержка. Первый фактор включает не
только инструментарий визуального моделирования, но и интегрированную
среду, цепочку сборки, что направлено на повышение производительности
разработчиков, в частности, этапов создания прототипов и тестирования. Под
межплатформенной поддержкой предоставляется не только места
развертывания (установка на персональном компьютере, на мобильном
устройстве, консоли и т. д.), но и наличие инструментария разработки
(интегрированная среда может использоваться под Windows и Mac OS).
Третьим преимуществом называется модульная система компонентов
Unity, с помощью которой происходит конструирование игровых объектов,
когда последние представляют собой комбинируемые пакеты
функциональных элементов. В отличие от механизмов наследования, объекты
в Unity создаются посредством объединения функциональных блоков, а не
помещения в узлы дерева наследования. Такой подход облегчает создание
прототипов, что актуально при разработке игр.

7
В качестве недостатков приводятся ограничение визуального редактора
при работе с многокомпонентными схемами, когда в сложных сценах
визуальная работа затрудняется. Вторым недостатком называется отсутствие
поддержки Unity ссылок на внешние библиотеки, работу с которыми
программистам приходится настраивать самостоятельно, и это также
затрудняет командную работу. Ещё один недостаток связан с использованием
шаблонов экземпляров (англ. prefabs). С одной стороны, эта концепция Unity
предлагает гибкий подход визуального редактирования объектов, но с другой
стороны, редактирование таких шаблонов является сложным. Также, WebGL-
версия движка, в силу специфики своей архитектуры (трансляция кода из C#
в С++ и далее в JavaScript), имеет ряд нерешённых проблем с
производительностью, потреблением памяти и работоспособностью на
мобильных устройствах.
Ещё один недостаток — это потеря точности float в компоненте
Transform по всем трем осям. Начинается это проявляться на координатах
10000 и больше, после этой координаты начинаются артефакты.
Первая версия Unity появилась в 2005 году, когда игровой движок был
анонсирован на Worldwide Developers Conference. Изначально Unity
предназначался исключительно для компьютеров Mac, а в августе вышло
обновление, позволяющее работать под Windows. В следующих версиях
постепенно добавлялись новые платформы и развёртывания:
межплатформенный веб-плеер в 2006-м, iPhone в 2008-м, Android в 2010-м, и
далее на игровых консолях Xbox и Playstation.
Есть возможность создавать приложения для запуска в браузерах с
помощью специального подключаемого модуля Unity (Unity Web Player), а
также с помощью реализации технологии WebGL. Ранее была
экспериментальная поддержка реализации проектов в рамках модуля Adobe
Flash Player, но позже команда разработчиков Unity приняла сложное решение
по отказу от этого.
В декабре 2009 года Gamasutra назвал Unity одним из самых
значительных участников на рынке игровых компаний.

2.3 ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ VISUALSTUDIO

Microsoft Visual Studio — линейка продуктов компании Microsoft,


включающих интегрированную среду разработки программного обеспечения
и ряд других инструментальных средств. Данные продукты позволяют
разрабатывать как консольные приложения, так и приложения с графическим
интерфейсом, в том числе с поддержкой технологии Windows Forms, а также
веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом
кодах для всех платформ, поддерживаемых Windows, Windows Mobile,
Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework
и Silverlight.

8
Рисунок 3 - Microsoft Visual Studio

Visual Studio включает в себя редактор исходного кода с поддержкой


технологии IntelliSense и возможностью простейшего рефакторинга кода.
Встроенный отладчик может работать как отладчик уровня исходного кода,
так и отладчик машинного уровня. Остальные встраиваемые инструменты
включают в себя редактор форм для упрощения создания графического
интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы
базы данных. Visual Studio позволяет создавать и подключать сторонние
дополнения (плагины) для расширения функциональности практически на
каждом уровне, включая добавление поддержки систем контроля версий
исходного кода (как, например, Subversion и Visual SourceSafe), добавление
новых наборов инструментов (например, для редактирования и визуального
проектирования кода на предметно-ориентированных языках
программирования) или инструментов для прочих аспектов процесса
разработки программного обеспечения (например, клиент Team Explorer для
работы с Team Foundation Server).

Рисунок 4 - Редактор кода Visual Studio

9
3 ОПИСАНИЕ ПРОГРАММНОЙ РЕАЛИЗАЦИИ
РАЗРАБОТАННОГО ПРИЛОЖЕНИЯ

В ходе прохождения преддипломной практики было создано


многофункциональное Android приложение WaterRacing 2D на Unity.
После того, как был создан пользовательский интерфейс, необходимо
добавить приложению динамичности. Делается это при помощи скриптов, в
данном случае, этот скрипт написан на языке С#. В результате выполнения
написанного кода, созданные в платформе Unity объекты будут передвигаться
и взаимодействовать друг с другом, а также будет создана возможность
взаимодействия пользователя и приложения в виде меню.
Каждый файл с необходимым кодом должен начинаться с подключения
необходимых библиотек: Using UnityEngine; using UnityEditor;
using System.Collections; Using UnityEngine.UI;

Рисунок 1 - Класс создания и появления досок соперников

Класс Spawn обеспечивает автоматическое создание и последующее


удаление досок на четырех позициях карты. Сами доски генерируются с
помощью функции Random. Непосредственно после подключения данного
скрипта к проекту в Unity указывается кол-во элементов массива и в него
заносятся необходимые префабы.

Рисунок 2 - Класс создания и движения карты

10
Класс MoveAndSpawnRoad обеспечивает автоматическое создание и
последующее удаление карты по необходимой координате. Дорога создается
на основании общего префаба и при выходе из поля зрения основной камеры
вызывается функция Destroy.

Рисунок 3 - Класс управления доской игрока

Класс Player обеспечивает движение доски игрока. Управление может


осуществляться клавишами на ПК. Также имеется закомментированная часть
программы, которая обеспечивает управление с помощью сенсора на
смартфоне. Так же создана обработка события при столкновении игрока с
любой из досок противника, в данном случае, игра останавливается и
удаляется объект игрока.

Рисунок 4 - Класс загрузки нового уровня и выхода из приложения

11
Класс LoadScene содержит функции перехода на другую сцену и выхода
из игры, а также обнуление результатов игры.

Рисунок 5 - Класс подсчета очков игрока

Класс Score – это класс подсчета очков игрока и записи в текстовое поле.

Рисунок 6 - Класс записи и подсчета итогового результата

Класс Result обеспечивает сохранение и вывод результатов игры в


текстовое поле.

Рисунок 7 - Класс записи и подсчета итогового результата

12
Класс MoveObject позволяет генерируемым доскам встречного
движения двигаться и в необходимой точке вне игрового поля удаляться.

Рисунок 8 - Класс записи и подсчета итогового результата

Рисунок 9 - Класс записи и подсчета итогового результата

Классы SOT и SOB позволяют создать анимацию для появления текста


без использования функций встроенной анимации Unity.

13
3 Схема взаимодействия пользователя с разработанным
приложением

Разработанное приложение организовано таким образом, что


при запуске игры, пользователь попадает в главное меню
приложения, где ему на выбор предоставляются 3 выплывающие с
помощью скрипта кнопки взаимодействия с приложением. Первая –
автоматическая игра на стандартном уровне, вторая – кнопка выбора
уровня для игры, где кнопки уровней представлены в виде фоновых
изображений дальнейших сцен, а третья – кнопка выхода.
Пользователь может управлять доской. Управление осуществляется
при помощи нажатия клавиш: “А”, “D”, “W”, “S”, “влево”, “вправо”,
“вперед”, “назад”. С момента начала игры также начинает работать
счетчик в верху экрана, который показывает очки, набранные
пользователем на текущем уровне. Во время движения помимо
доски игрока на экране создаются другие объекты, которые имеют
физические характеристики, не позволяющие игроку проходить
сквозь них. Таким образом, при столкновении с другими досками
объект игрока разрушается, тем самым, пользователь попадает в
меню «Паузы», где отображается результат пройденного уровня и 2
кнопки: меню и выход. Также стоит отметить звуковое
сопровождение каждого уровня, для каждой карты есть собственная
мелодия, а также фоновая музыка сцены меню.

14
Рисунок 10 - Стартовая позиция пользователя

Рисунок 11 - Генерация досок и движение игрока при выборе кнопки «PLAY»

15
Рисунок 12 - Генерация досок и движение игрока при выборе кнопки «SELECT
LEVEL»

Рисунок 13 - Генерация досок и движение игрока при выборе первого уровня

Рисунок 14 - Генерация досок и движение игрока при выборе второго уровня

16
Рисунок 15 - Генерация досок и движение игрока при выборе третьего уровня

Рисунок 15 – Вывод пользователя в меню паузы после столкновения

17
ЗАКЛЮЧЕНИЕ

Научно-технический прогресс, набравший к концу двадцатого века


головокружительный прогресс, стал причиной появления чуда современного
мира: компьютер и компьютерные технологии. С совершенствованием
компьютеров совершенствовались и игры, привлекая все большее количество
людей. На сегодняшний день компьютерная техника достигла того уровня
развития, что позволяет программистам разрабатывать максимально
реалистичные игры с хорошим графическим и звуковым сопровождением.
Поэтому в данной работе была осуществлена разработка Android
приложение «WaterRacing 2D». В программе реализованы основные функции
и элементы пользовательского интерфейса необходимые для базового
использования данного приложения: меню взаимодействия пользователя и
приложения, движение доски игрока, движения других объектов и их
генерация, передвижение участка карты, счетчик заработанных пользователем
очков и вывод их в дополнительное меню.
В ходе разработки этого приложения были выполнены следующие
задачи:
− изучить более подробно язык программирования C#, среду
разработки Unity и Visual Studio;
− добавить главное меню, меню паузы, меню выбора уровня;
− изменить интерфейс уровней;
− разработать систему подсчета и вывода очков.

18
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Джон Скит. C# для профессионалов: тонкости программирования,


3-е издание, новый перевод = C# in Depth, 3rd ed.. — М.: «Вильямс», 2014. —
608с.
2. Кристиан Нейгел и др. C# 5.0 и платформа .NET 4.5 для
профессионалов = Professional C# 5.0 and .NET 4.5. — М.: «Диалектика», 2013.
— 1440 с.
3. Джозеф Албахари, Бен Албахари. C# 6.0. Справочник. Полное
описание языка = C# 6.0 in a Nutshell: The Definitive Reference. — М.:
«Вильямс», 2018. — 1040 с.
4. Alessandro Del Sole. Visual Studio Code Succinctly. — SyncFusion
Inc., 2016. — 128 с.
5. Ник Рендольф, Дэвид Гарднер, Майкл Минутилло, Крис
Андерсон. Visual Studio 2010 для профессионалов = Professional Visual Studio
2010. — М.: «Диалектика», 2011. — 1184 с.
6. Алекс Макки. Введение в .NET 4.0 и Visual Studio 2010 для
профессионалов = Introducing .NET 4.0: with Visual Studio 2010. — М.:
«Вильямс», 2010. — 416 с.
7. Хокинг, Джозеф. Unity — в действии. Мультиплатформенная
разработка на C# : [рус.]. — 2. — СПб : Питер, 2016. — 336 с.
8. Торн, Алан. Искусство создания сценариев в Unity : [рус.]. - СПб :
ДМК, 2016. - 362 с.
9. Форум программистов [Электронный ресурс] // URL:
http://programmersforum.ru
10. Unity для всех [Электронный ресурс] // URL: https://unity.com/ru
11. Программирование на С# в Unity для начинающих
https://unity3d.com/ru/learning-c-sharp-in-unity-for-beginners

19
ПРИЛОЖЕНИЕ А

*********************MoveObjects*****************
using UnityEngine;
public class MovaObjects : MonoBehaviour {
public float speed = 5f;
void FixedUpdate() {
transform.Translate(Vector3.forward * speed * Time.deltaTime);
if(transform.position.y < -6)
Destroy(gameObject);
}
}
***************MoveAndSpawnRoad********************
using UnityEngine;
using UnityEditor;

public class MoveAndSpawnRoad : MonoBehaviour {


public float speed = 3f;
public GameObject road;
void Update() {
transform.Translate(Vector3.down * speed * Time.deltaTime);
if(transform.position.y < -10.2f) {
Instantiate(road, new Vector3(0.008f, 10.8f, 0), Quaternion.identity);
Destroy(gameObject);
}
}
}
***********************Player************************
using UnityEngine;
using UnityEditor;
using UnityEngine.SceneManagement;

public class Player : MonoBehaviour {


public float speed = 1.5f;
public static int resultValues;
public void LoadScene(int Level)
{
SceneManager.LoadScene(Level);
}
void Update() {
Score.scoreValue +=1;
/*
Vector3 pos =
Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
transform.position = new Vector3(pos.x, pos.y, transform.position.z);*/
float hor = Input.GetAxis("Horizontal");
float ver = Input.GetAxis("Vertical");
Vector3 dir = new Vector3(hor, 0, ver);
transform.Translate(dir.normalized * Time.deltaTime * speed);
}
private void OnCollisionStay(Collision collision) {
if(collision.gameObject.CompareTag("Car")){
resultValues = Score.scoreValue;
LoadScene(5);
Destroy(gameObject);
}
}
}
***********************Spawn*********************
using UnityEngine;

20
using System.Collections;

public class Spawn : MonoBehaviour {


public GameObject[] cars;
private float[] positions = {1.07f, 0.45f, -1.07f, -0.45f };
void Start() {
StartCoroutine(spawn());
}
IEnumerator spawn() {
while(true) {
Instantiate(
cars[Random.Range(0, cars.Length)],
new Vector3(positions[Random.Range(0, 3)], 6f, 0),
Quaternion.Euler(new Vector3(90, 180, 0))
);
yield return new WaitForSeconds(0.8f);
}
}
}
*********************load_scen*****************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class load_scen : MonoBehaviour {
public void LoadScene(int Level){
SceneManager.LoadScene(Level);
}
public void ResetValues(){
Player.resultValues = 0;
}
public void Exit(){
Application.Quit();
}
}
*********************Score*****************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour


{
public static int scoreValue;
Text score;
void Start()
{
Score.scoreValue = 0;
score = GetComponent<Text>();
}
void Update()
{
score.text = "Score: " + scoreValue;
}
}
*********************Score*****************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Result : MonoBehaviour
{

21
public static int resultValues = Player.resultValues;
Text result;
void Start()
{
result = GetComponent<Text>();
}
void Update()
{
result.text = "Result: " + resultValues;
}
}
*********************Result*****************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Result : MonoBehaviour


{
public static int resultValues = Player.resultValues;
Text result;
void Start()
{
result = GetComponent<Text>();
}
void Update()
{
result.text = "Result: " + Player.resultValues;

}
}
*********************SOT*****************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SOT : MonoBehaviour


{
public float speed , checkPos = 0f;
private RectTransform rec;

void Start()
{
rec = GetComponent<RectTransform>();
}

void Update()
{
if (rec.offsetMin.y > checkPos)
{
rec.offsetMin += new Vector2(-rec.offsetMin.x, speed);
rec.offsetMax += new Vector2(-rec.offsetMax.x, speed);
}
}
}
*********************SOB*****************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class SOB : MonoBehaviour

22
{
public float speed, checkPos = 0f;
private RectTransform rec;

void Start(){
rec = GetComponent <RectTransform> ();
}

void Update(){
if (rec.offsetMin.y < checkPos)
{
rec.offsetMin += new Vector2(-rec.offsetMin.x, speed);
rec.offsetMax += new Vector2(-rec.offsetMax.x, speed);
}
}
}

23

Вам также может понравиться