Почему 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. получение данных указано.
Запись в браузере до недавнего времени была вообще невозможна. Сейчас вроде в стандарте есть, но как пишут - пока браузеры это не поддерживают.
А сохранение данных в базу подразумевает именно сохранение на диск.
|
|
| |