a-mavrin.ru

Установка SQLite в Unity3D. Решение проблем в редакторе Подготовка к работе

Unity - это инструмент для разработки двух и трёхмерных приложений и игр, работающий под операционными системами Windows, OS X, Linux. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Windows Phone, Android, Apple iOS, Linux, а также на игровых приставках Wii, Play

Что такое Unity 3D редактор и для чего он используется?

Как ранее 24 июля 2015, разработчики Unity уже афишировали, что в скором времени выйдет версия Unity 3D редактора под Linux, прошло не так уж много времени и 26 августа того же 2015 года, вышла официальная версия редактора под дистрибутив Ubuntu.

Unity - это инструмент для разработки двух и трёхмерных приложений и игр, работающий под операционными системами Windows, OS X, Linux. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Windows Phone, Android, Apple iOS, Linux, а также на игровых приставках Wii, Play …

Что такое Unity 3D редактор и для чего он используется?

Установочный пакет приложения занимает 951 метр, почти 1Гб.

Я хочу разработать несколько игр на движке Unity 3D. Мне не удалось найти ссылку для загрузки приложения. Может ли кто-нибудь опубликовать ссылку для загрузки игрового движка Unity 3D для Ubuntu и / или объяснить, как ее установить?

Следующая ссылка, используемая в команде wget, может быть восстановлена ​​здесь и может меняться со временем. На момент написания это была фактическая ссылка, и процедура протестирована в Ubuntu 17.10 и 16.04, но должна также работать в более низких версиях Ubuntu. Если вы не захотите рассмотреть возможность обновления.

Также вы хотите, чтобы на вашем жестком диске / SSD было не менее 15-20 ГБ свободного пространства. Теперь, когда все это в порядке, сделайте следующее в терминале:

Sudo apt install gdebi wget http://beta.unity3d.com/download/ee86734cf592/unity-editor_amd64-2017.2.0f3.deb sudo gdebi unity-editor_amd64-2017.2.0f3.deb

Sudo apt install gdebi wget http://beta.unity3d.com/download/ee86734cf592/unity-editor_amd64-2017.2.0f3.deb sudo gdebi unity-editor_amd64-2017.2.0f3.deb

Также вы хотите, чтобы на вашем жестком диске / SSD было не менее 15-20 ГБ свободного места для этой операции. Теперь, когда все это в порядке, сделайте следующее в терминале:

Sudo apt install gdebi wget http://beta.unity3d.com/download/ee86734cf592/unity-editor_amd64-2017.2.0f3.deb sudo gdebi unity-editor_amd64-2017.2.0f3.deb

Ниже ссылка, используемая в команде wget , может быть восстановлена ​​ и со временем может быть изменена. На момент написания это была фактическая ссылка, и процедура протестирована в Ubuntu 17.10 и 16.04, но должна также работать в более низких версиях Ubuntu. Если нет, вы можете рассмотреть возможность обновления.

Также вы хотите, чтобы на вашем жестком диске / SSD было не менее 15-20 ГБ свободного места для этой операции. Теперь, когда все это в порядке, сделайте следующее в терминале:

Sudo apt install gdebi wget http://beta.unity3d.com/download/ee86734cf592/unity-editor_amd64-2017.2.0f3.deb sudo gdebi unity-editor_amd64-2017.2.0f3.deb

Ниже ссылка, используемая в команде wget , может быть найдена здесь и может меняться со временем. На момент написания это была фактическая ссылка, и процедура протестирована в Ubuntu 17.10 и 16.04, но должна также работать в более низких версиях Ubuntu. Если нет, вы можете рассмотреть возможность обновления.

Также вы хотите, чтобы на вашем жестком диске / SSD было не менее 15-20 ГБ свободного места для этой операции. Теперь, когда все это в порядке, сделайте следующее в терминале:

Sudo apt install gdebi wget http://beta.unity3d.com/download/ee86734cf592/unity-editor_amd64-2017.2.0f3.deb sudo gdebi unity-editor_amd64-2017.2.0f3.deb

Ниже ссылка, используемая в команде wget , может быть найдена здесь и может меняться со временем. На момент написания это была фактическая ссылка, и процедура протестирована в Ubuntu 17.10 и 16.04, но должна также работать в более низких версиях Ubuntu. Если нет, вы можете рассмотреть возможность обновления.

Также вы хотите, чтобы на вашем жестком диске / SSD было не менее 15-20 ГБ свободного места для этой операции. Теперь, когда все это в порядке, сделайте следующее в терминале.

Данная статья послужит небольшой инструкцией, как интегрировать SQLite в Unity3D . Здесь вы найдете все нужные ссылки на программы и файлы, которые потребуются нам в процессе. Для начала познакомимся с этой библиотекой и разберемся зачем это нужно. Если вам и так все понятно, то смело можете переходить к процессу установки.

Что это такое?

SQLite - компактная встраиваемая реляционная база данных с открытым исходным кодом. Слово "встраиваемый" означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite . Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа.

А зачем нам это нужно?

Очевидно, что для систематизации и хранения данных. Как альтернатива можно хранить данные и в XML , но при разрастании этого файла скорость поиска нужной информации существенно снижается, ну и как самый крайний вариант - в коде (но это уже совсем крайность). Ладно рассмотрим конкретный пример. Допустим в БД мы будем хранить информацию о всевозможном оружии в игре с такими вот параметрами

  • Id - просто уникальный индекс
  • Name - имя
  • Cost - стоимость
  • Damage - урон
  • Type - тип оружия

Ну в принципе ничего сложного. А вот теперь представьте, что вы захотели, чтобы ваше оружие генерировалось случайным образом. Или вы захотели добавить различные бонусы. Или повысить урон у одноручного оружия со стоимостью ниже средней стоимости всего оружия? Представляете как вы это все будете проделывать используя XML файл для хранения данных? Если да, то молодцы! А теперь взгляните ка на эти решения:

Генерация INSERT INTO weapons (Name, Cost, Damage, Type) VALUES ("Rnd_" || Random(), Random(10, 100), "OneHand"); -- Повышение урона SELECT Avg(Cost) INTO avg_cost FROM weapons WHERE Type="OneHand" GROUP BY Type; UPDATE weapons SET Damage = Damage * 1.10 WHERE Cost < avg_cost;

Как видите ничего сложного, все делает очень легко и просто.
Так же хочу отметить, что хранение бинарных файлов (Картинка, Звуки, Музыка и т.д.) в БД является грубым тоном и нежелательно. Лучше хранить эти файлы в папке, а в базе прописывать лишь пути к этим файлам.
Надеюсь я вас убедил, что SQLite - это хорошее решение для хранения данных игры.
А теперь пожалуй перейдем непосредственно к установке SQLite в Unity3D

Установка SQLite

Для начала надо скачать себе программу для работы с SQLite базой. Там вы будете создавать свою базу данных, заполнять первоначальными данными, а так же можно побаловаться с написанием SQL запросов.
Вот несколько вариантов:

  • SQLIte Manager - плагин для FireFox , в целом выглядит забавно, в некоторых местах не всегда удобно, но работать можно.
  • dotConnect for SQLite - плагин для Visual Studio . В целом вещь занятная, но не особо удобная в плане создания таблиц, либо я что то делаю не так.
  • SqliteDog - платная, но есть и бесплатная версия. Не пробовал

Создайте себе тестовую базу данных и сохраните её в папку с проектом. У меня получился такой путь для базы данных "Unity_Project/Assets/db/example.sqlite" и такая вот миленькая табличка
http://screenshot.su/show.php?img=7ae8f10854fbc9ec1843e0aa912...
Теперь надо установить необходимые библиотеки для работы с SQLite . самое интересное, это то что в Unity уже есть поддержка данного функционала, но по каким то причинам использовать их просто так нельзя. Для этого надо надо создать папку "Assets/Plugins" внутри вашего проекта. Затем отправиться по этому пути "Путь до Unity/Editor/Data/Mono/lib/mono/2.0" и скопировать следующие файлы

  • System.Data.dll
  • Mono.Data.SQlite.dll
  • System.Security.dll
  • System.Configuration.dll
  • System.EnterpriseServices.dll

А так же, файл sqlite3.dll из папки "Путь до Unity/Editor" . После всех этих манипуляций надо запустить проект, и если у вас обычная версия юнити, то он будет ругаться на библиотеку Mono.Data.Sqlite . Решается это просто, создаем еще одну папку рядом с папкой "Plugins" с названием "Managed" , и перемещаем все эти файлы в новую папку. В итоге у вас должно получиться примерно так:
http://screenshot.su/show.php?img=97ff94aa22b5e9d634740c0bdbe...

Теперь можно приступать к работе с SQLite базой из кода. Создадим новый скрипт и повесим его на камеру.

Test.cs

Using UnityEngine; using System.Collections; // Подключаем необходимые пространства имен using System.Data; using Mono.Data.Sqlite; public class Test: MonoBehaviour { void Start () { // Подключаемся к нашей базе данных string connectionString = "URI=file:" + Application.dataPath + "/db/example.sqlite"; using (IDbConnection dbcon = (IDbConnection)new SqliteConnection(connectionString)) { dbcon.Open(); // Выбираем нужные нам данные var sql = "SELECT Name, Cost, Damage, Type FROM weapons"; using (IDbCommand dbcmd = dbcon.CreateCommand()) { dbcmd.CommandText = sql; // Выполняем запрос using (IDataReader reader = dbcmd.ExecuteReader()) { // Читаем и выводим результат while (reader.Read()) { const string frmt = "Name: {0}; Cost: {1}; Damage: {2}; Type: {3};"; Debug.Log(string.Format(frmt, reader.GetString(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetString(3))); } } } // Закрываем соединение dbcon.Close(); } } }

Теперь можно запускать проект и смотреть консоль отладки. А видим мы именно то, что мы и хотели увидеть
http://screenshot.su/show.php?img=71572800258807c3b0ce84dfb72...
В общем то на этом можно и заканчивать, но работать таким способом c базой не очень удобно. Поэтому я предлагаю использовать такое вот решение (Спасибо SuperBilge за рабочую версию ) . Это набор классов, которые очень сильно облегчают работу с вашей базой данных. Устанавливается она легко, просто скопируйте файлы из папки "/src" к себе в проект. Я скопировал только SQLite.cs , ибо остальные мне не потребовались. Теперь наш скрипт имеет немного другое содержание

Test.cs

Using UnityEngine; using System.Collections; using System.Collections.Generic; using SQLite; // Определяем структуру для таблицы Weapons public class Weapon { public int Id { get; set; } public string Name { get; set; } public int Cost { get; set; } public int Damage { get; set; } public string Type { get; set; } } public class Test: MonoBehaviour { void Start () { // Создаем новое подключение к базе данных using (var db = new SQLiteConnection(Application.dataPath + "/db/example.sqlite")) { // Делаем запрос на выборку данных IEnumerable list = db.Query("SELECT * FROM weapons"); // Читаем и выводим результат foreach (Weapon weapon in list) { const string frmt = "Name: {0}; Cost: {1}; Damage: {2}; Type: {3};"; Debug.Log(string.Format(frmt, weapon.Name, weapon.Cost, weapon.Damage, weapon.Type)); } // И не забываем закрыть соединение db.Close(); } } }

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

Небольшое добавление

Есть весьма забавная особенность этой библиотеки. Почему то после запуска выдается ошибка, что нельзя использовать плагины в не PRO версии. Но при этом все равно работать отлично. Но при переносе их в папку Managed все работает отлично и ошибку не выдает. Хотя такой проблемы нет для других библиотек, которые я использовал.

Заключение

Как видите ничего сложного в использовании SQLite в Unity3D нету. Как его использовать решать уже вам.

Загрузка...