Пятница, 19 Апреля 2024, 17:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Почему Json работает, а SQLite нет в WebGL
Почему Json работает, а SQLite нет в WebGL
MegaMan11Дата: Суббота, 23 Мая 2020, 17:18 | Сообщение # 1
частый гость
Сейчас нет на сайте
Всем Привет! У меня игра с разными типами сохранения SQLite и JSON. Когда на компьютер компилируемый игру то все работает. Но когда для Web компилирую тогда Json работает, а SQLite не работает. Для этой игры я использую стандартный бесплатный хостинг beget.com. Я вот думаю может не работает потому, что для SQLite нужен VPS (VDS) сервер. Или в другом причина?
using SQLite; https://github.com/praeclarum/sqlite-net - использована разрешения
Сайт с этой Ошибкой http://l91069r2.beget.tech/
Этот тестовый проект на GitHube https://github.com/Orcan37/TestDataBaseSQLite
Код
using UnityEngine;
using System;
using System.IO;
using System.Collections.Generic;
using SQLite; // from https://github.com/praeclarum/sqlite-net
using UnityEngine.AI;

public partial class Database : MonoBehaviour
{
    public string databaseFile = "Database.sqlite";

    // connection
    SQLiteConnection connection;
public void Connect()
    {
#if UNITY_EDITOR
        string path = Path.Combine(Directory.GetParent(Application.dataPath).FullName, databaseFile);
#elif UNITY_ANDROID
        string path = Path.Combine(Application.persistentDataPath, databaseFile);
#elif UNITY_IOS
        string path = Path.Combine(Application.persistentDataPath, databaseFile);
#else
        string path = Path.Combine(Application.dataPath, databaseFile);
#endif

        // open connection
        // note: automatically creates database file if not created yet
        connection = new SQLiteConnection(path);

        //    Utils.InvokeMany(typeof(Database), this, "Initialize_"); // TODO remove later. let's keep the old hook for a while to not break every single addon!
        //    Utils.InvokeMany(typeof(Database), this, "Connect_"); // the new hook!

    }

    public void CreatTable()
    {
        connection.CreateTable<testTable>();
    }

    class testTable    /// orcan
    {
        [PrimaryKey] // // важно для производительности: O (log n) вместо O (n)
        [Collation("NOCASE")] //// [COLLATE NOCASE для сравнения без учета регистра. таким образом, мы не можем одновременно создавать "Арчер" и "Арчер" как символы]
        public string name { get; set; }  // имя в названия в Ячейки тлько 1 может быть
        public string test1 { get; set; }
        public string test2 { get; set; }
    }
     

    public void PushTest(string valueName, GameObject itemManagerGO)
    {
        SQLbutn itemManager = itemManagerGO.GetComponent<SQLbutn>();
        // Debug.Log("????Data PushValuesItem????" + valueName + "    " + itemManagerGO.name);
        connection.Execute("DELETE FROM testTable WHERE name=?", valueName);
        connection.InsertOrReplace(new testTable
        {
            //  ID = itemManager.ID,
            name =      valueName,
            test1 =     itemManager.test1 ,
            test2 =     itemManager.test2

    });

    }
    public void PullTest(string valueName, GameObject itemManagerGO)
    {

        SQLbutn itemManager = itemManagerGO.GetComponent<SQLbutn>();

        foreach (testTable row in connection.Query<testTable>("SELECT * FROM testTable  WHERE name=?", valueName))
        {

            //   itemManager.ID = row.ID;
            itemManager.test1 = row.test1;
            itemManager.test2 = row.test2;

        }

    } }


Сообщение отредактировал MegaMan11 - Четверг, 18 Июня 2020, 22:07
manonedgeДата: Суббота, 30 Мая 2020, 20:22 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Начать лучше с просмотра логов в окне разработчика браузера. Есть ли там ошибки или что-то еще странное.
Потом логировать непосредственно места, где что-то не работает. Можно еще dev сборку собрать попробовать.
JackNazaryanДата: Воскресенье, 31 Мая 2020, 19:27 | Сообщение # 3
старожил
Сейчас нет на сайте
В JS нет SQLite, как и прокладки для него. Из современных браузерных СУБД выжил только IndexedDB. Не уверен насчёт того, как оно работает именно в Unity, но нужно найти какие-нибудь настройки для этой базы, или же использовать только JSON.
MegaMan11Дата: Четверг, 18 Июня 2020, 22:07 | Сообщение # 4
частый гость
Сейчас нет на сайте
Ребят так и не получилось поправить ошибку Добавил код DateBase , сайт с ошибкой и гит хаб с проектом Хз Че делать.
drcrackДата: Пятница, 19 Июня 2020, 10:42 | Сообщение # 5
старожил
Сейчас нет на сайте
https://assetstore.unity.com/package....e-66906
MegaMan11Дата: Пятница, 19 Июня 2020, 13:25 | Сообщение # 6
частый гость
Сейчас нет на сайте
drcrack с ним работал? или прийдется все на JSON переписывать и в string PlayerPref пихать так оно должно работать. А если делать Виртуальную таблицу в оперативке SQLite без запроса о создании на жестком и переписывать при нажатии сохранении юзером в строку всю в PlayerPref (запихать) ? А потом при захождении в игру все обратно из string PlayerPref конвертировать в виртуальную таблицу Отправить? Хочется чтоб проект работал на Компе и на маке и на иос и на андроид и в вебгл и вебплеере и возможно на калькуляторе=))
seamanДата: Суббота, 20 Июня 2020, 13:45 | Сообщение # 7
старожил
Сейчас нет на сайте
Цитата drcrack ()
https://assetstore.unity.com/package....e-66906

В описании не написано - можно ли сохранять в базу данные. Или только читает?
Цитата
• Non-blocking retrieval of database from StreamingAssets on Android & WEBGL.

получение данных указано.

Запись в браузере до недавнего времени была вообще невозможна. Сейчас вроде в стандарте есть, но как пишут - пока браузеры это не поддерживают.

А сохранение данных в базу подразумевает именно сохранение на диск.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Почему Json работает, а SQLite нет в WebGL
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг