Сохранение прогресса в Android
Thedrhax14 Дата: Сб, 24 Окт 2015, 19:43 | Сообщение # 1
Сообщений: 54
Награды:
0
Репутация:
1
Статус: Offline
Здраствуйте game creating community! Не давно я изучил сохранения прогресса игры с помощью PlayerPrefs, ArrayPrefs и Serialization и все было понятно и работало на ПК. Но когда дело дошло android что то пошло не так, а именно android не создавал PlayerPrefs а когда пытался то он вызывал жуткие глюки и лаги не телефоне. К сожелению на телефоне я не смог получить никакие debug и какие процессы проходили и собственно не смог получить источник ошибки. По идеи я пытался сохранить две вещи (с помощью UnitySerializer V0.965) это две переменные типа List и Unity UI. Как не странно на PC все работает, на андройде как я сказал все очень плохо. И собственно вопрос: что вы можете посоветовать, чтобы реализовать сохранение и загрузку прогресса? Вот часть скрипта (переменные и классы, которые я использовал):Код
#pragma strict import System.Collections.Generic; import System; import Soomla; import Soomla.Store; var _Books: List.<Book> = new List.<Book>(); var _Achievments: List.<Achievement> = new List.<Achievement>(); var Game:boolean; var Time_Next_saving:float; class Book extends System.Object { var Name:String; var Price:float; var Cover:Texture; var BOUGHT:Texture; var Locked:Texture; var ID:int; var Item_id:String; var Availabe:boolean; } class Achievement extends System.Object { var Name:String; var GreenTick:GameObject; var GotIt:boolean; } function Update() { if(!Game) { if(Time_Next_saving>=0) { Time_Next_saving-=Time.deltaTime; } else { Time_Next_saving = 9; //LevelSerilizer.CheckPoint(); Debug.Log("Game is saved"); } } }
Виду блог про разроботку игр и про свои проекты https://thedrhax14.wordpress.com/
Сообщение отредактировал Thedrhax14 - Сб, 24 Окт 2015, 23:21
Сообщение Здраствуйте game creating community! Не давно я изучил сохранения прогресса игры с помощью PlayerPrefs, ArrayPrefs и Serialization и все было понятно и работало на ПК. Но когда дело дошло android что то пошло не так, а именно android не создавал PlayerPrefs а когда пытался то он вызывал жуткие глюки и лаги не телефоне. К сожелению на телефоне я не смог получить никакие debug и какие процессы проходили и собственно не смог получить источник ошибки. По идеи я пытался сохранить две вещи (с помощью UnitySerializer V0.965) это две переменные типа List и Unity UI. Как не странно на PC все работает, на андройде как я сказал все очень плохо. И собственно вопрос: что вы можете посоветовать, чтобы реализовать сохранение и загрузку прогресса? Вот часть скрипта (переменные и классы, которые я использовал):Код
#pragma strict import System.Collections.Generic; import System; import Soomla; import Soomla.Store; var _Books: List.<Book> = new List.<Book>(); var _Achievments: List.<Achievement> = new List.<Achievement>(); var Game:boolean; var Time_Next_saving:float; class Book extends System.Object { var Name:String; var Price:float; var Cover:Texture; var BOUGHT:Texture; var Locked:Texture; var ID:int; var Item_id:String; var Availabe:boolean; } class Achievement extends System.Object { var Name:String; var GreenTick:GameObject; var GotIt:boolean; } function Update() { if(!Game) { if(Time_Next_saving>=0) { Time_Next_saving-=Time.deltaTime; } else { Time_Next_saving = 9; //LevelSerilizer.CheckPoint(); Debug.Log("Game is saved"); } } }
Автор - Thedrhax14 Дата добавления - 24 Окт 2015 в 19:43
Левша Дата: Вс, 25 Окт 2015, 00:53 | Сообщение # 2
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
PlayerPrefs умеет сохранять только 3 типа данных - int , float и string . Делайте выводы.
X.cor.R (Prologue)
Сообщение PlayerPrefs умеет сохранять только 3 типа данных - int , float и string . Делайте выводы.Автор - Левша Дата добавления - 25 Окт 2015 в 00:53
Thedrhax14 Дата: Вс, 25 Окт 2015, 06:57 | Сообщение # 3
Сообщений: 54
Награды:
0
Репутация:
1
Статус: Offline
Левша Я знаю об этом, но как то UnitySerializer умудрился сохранить на ПК Ладно, тогда что можете посоветовать?
Виду блог про разроботку игр и про свои проекты https://thedrhax14.wordpress.com/
Сообщение Левша Я знаю об этом, но как то UnitySerializer умудрился сохранить на ПК Ладно, тогда что можете посоветовать?Автор - Thedrhax14 Дата добавления - 25 Окт 2015 в 06:57
Левша Дата: Вс, 25 Окт 2015, 14:47 | Сообщение # 4
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Переводить свои данные в приемлемый формат для PlayerPrefs и сохранять. Затем - загружать и применять.
X.cor.R (Prologue)
Сообщение Переводить свои данные в приемлемый формат для PlayerPrefs и сохранять. Затем - загружать и применять. Автор - Левша Дата добавления - 25 Окт 2015 в 14:47
Thedrhax14 Дата: Вс, 25 Окт 2015, 22:14 | Сообщение # 5
Сообщений: 54
Награды:
0
Репутация:
1
Статус: Offline
Левша Получается только через PlayerPrefs можно сохранять прогресс в android?Левша Я нашел решение (слега пришлось усложнить логику скрипта и дополнить некоторыми переменнами) Ваш совет насчет перевода данных для формата PlayerPrefs подтолкнул меня на это) Спасибо и +rep
Виду блог про разроботку игр и про свои проекты https://thedrhax14.wordpress.com/
Сообщение отредактировал Thedrhax14 - Вс, 25 Окт 2015, 22:16
Сообщение Левша Получается только через PlayerPrefs можно сохранять прогресс в android?Левша Я нашел решение (слега пришлось усложнить логику скрипта и дополнить некоторыми переменнами) Ваш совет насчет перевода данных для формата PlayerPrefs подтолкнул меня на это) Спасибо и +repАвтор - Thedrhax14 Дата добавления - 25 Окт 2015 в 22:14
Левша Дата: Пн, 26 Окт 2015, 13:55 | Сообщение # 6
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Цитата Thedrhax14 (
)
Получается только через PlayerPrefs можно сохранять прогресс в android?
Нет конечно, не только, но это самый простой и надежный путь.
X.cor.R (Prologue)
Сообщение Цитата Thedrhax14 (
)
Получается только через PlayerPrefs можно сохранять прогресс в android?
Нет конечно, не только, но это самый простой и надежный путь.Автор - Левша Дата добавления - 26 Окт 2015 в 13:55
Leks Дата: Вт, 29 Дек 2015, 19:37 | Сообщение # 7
Сообщений: 6
Награды:
0
Репутация:
1
Статус: Offline
Подскажите, почему может не работать сохранение в хml документ? На компьютере все работает, на устройстве- никакой реакции Может нужно что-то в настройках при билде прописать? При установке, нормальное приложение обычно запрашивает разрешение на изменение данных устройства, а тут нет
Сообщение Подскажите, почему может не работать сохранение в хml документ? На компьютере все работает, на устройстве- никакой реакции Может нужно что-то в настройках при билде прописать? При установке, нормальное приложение обычно запрашивает разрешение на изменение данных устройства, а тут нет Автор - Leks Дата добавления - 29 Дек 2015 в 19:37
Aswo Дата: Вт, 29 Дек 2015, 22:06 | Сообщение # 8
КЗОИ
Сообщений: 1031
Награды:
18
Репутация:
430
Статус: Offline
Leks , да, в AndroidManifest.xml добавь Код
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
end.
Сообщение Leks , да, в AndroidManifest.xml добавь Код
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Автор - Aswo Дата добавления - 29 Дек 2015 в 22:06
Leks Дата: Вт, 29 Дек 2015, 23:12 | Сообщение # 9
Сообщений: 6
Награды:
0
Репутация:
1
Статус: Offline
Извиняюсь за наверняка глупый вопрос. А это где? Точнее, куда надо вставлять эту строчку и где найти этот файл. Заранее благодаренДобавлено (29 Дек 2015, 23:12) --------------------------------------------- Файл я нашел, а куда нужно строчку вставить? Я её второй по счету сделал, ничего не изменилось
Сообщение отредактировал Leks - Вт, 29 Дек 2015, 23:10
Сообщение Извиняюсь за наверняка глупый вопрос. А это где? Точнее, куда надо вставлять эту строчку и где найти этот файл. Заранее благодаренДобавлено (29 Дек 2015, 23:12) --------------------------------------------- Файл я нашел, а куда нужно строчку вставить? Я её второй по счету сделал, ничего не изменилось
Автор - Leks Дата добавления - 29 Дек 2015 в 23:12
Aswo Дата: Ср, 30 Дек 2015, 00:29 | Сообщение # 10
КЗОИ
Сообщений: 1031
Награды:
18
Репутация:
430
Статус: Offline
Как-то вот так должно бытьКод
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.noname.projectname" android:versionCode="1" android:versionName="1.0"> //... <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:label="@string/app_name" android:icon="@drawable/app_icon"> //... </application> </manifest>
end.
Сообщение Как-то вот так должно бытьКод
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.noname.projectname" android:versionCode="1" android:versionName="1.0"> //... <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:label="@string/app_name" android:icon="@drawable/app_icon"> //... </application> </manifest>
Автор - Aswo Дата добавления - 30 Дек 2015 в 00:29
Leks Дата: Чт, 31 Дек 2015, 01:12 | Сообщение # 11
Сообщений: 6
Награды:
0
Репутация:
1
Статус: Offline
вот текст в моем документе, в котором я добавил две строчки отмеченные минусами (в реальном документе их нет) :Код
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.KsaKsaStudio.MicroinVitro" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal"> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> <application android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner"> <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:screenOrientation="sensorLandscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity> </application> <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" /> <uses-feature android:glEsVersion="0x00020000" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>---------------------- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />----------------------- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" /> </manifest>
но ничего не не работает. Разрешение не спрашивает и не сохраняет. Может я все же не туда вставил? Да, и ещё: после проведения билдинга эти строчки пропадают.Добавлено (31 Дек 2015, 01:12) --------------------------------------------- Да, я вот заметил что после компиляции игры, все изменения внесенные мною в этот документ пропадают. Что может мешать мне править этот документ?
Сообщение отредактировал Leks - Ср, 30 Дек 2015, 21:29
Сообщение вот текст в моем документе, в котором я добавил две строчки отмеченные минусами (в реальном документе их нет) :Код
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.KsaKsaStudio.MicroinVitro" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal"> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> <application android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner"> <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:screenOrientation="sensorLandscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity> </application> <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" /> <uses-feature android:glEsVersion="0x00020000" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>---------------------- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />----------------------- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" /> </manifest>
но ничего не не работает. Разрешение не спрашивает и не сохраняет. Может я все же не туда вставил? Да, и ещё: после проведения билдинга эти строчки пропадают.Добавлено (31 Дек 2015, 01:12) --------------------------------------------- Да, я вот заметил что после компиляции игры, все изменения внесенные мною в этот документ пропадают. Что может мешать мне править этот документ?
Автор - Leks Дата добавления - 31 Дек 2015 в 01:12
Aswo Дата: Чт, 31 Дек 2015, 13:51 | Сообщение # 12
КЗОИ
Сообщений: 1031
Награды:
18
Репутация:
430
Статус: Offline
Leks , в руководстве написано положить его в Assets->Plugins->Android . Он должен заменить дефолтный.
end.
Сообщение Leks , в руководстве написано положить его в Assets->Plugins->Android . Он должен заменить дефолтный.Автор - Aswo Дата добавления - 31 Дек 2015 в 13:51
Leks Дата: Пт, 01 Янв 2016, 17:41 | Сообщение # 13
Сообщений: 6
Награды:
0
Репутация:
1
Статус: Offline
КЗОИ, а в каком руководстве? Можешь дать ссылку, сам постараюсь разобраться, а то у меня такого пути в проекте нет. Я наверное своими постоянными проблемами уже тебе надоел .
Сообщение КЗОИ, а в каком руководстве? Можешь дать ссылку, сам постараюсь разобраться, а то у меня такого пути в проекте нет. Я наверное своими постоянными проблемами уже тебе надоел . Автор - Leks Дата добавления - 01 Янв 2016 в 17:41
Aswo Дата: Пт, 01 Янв 2016, 20:15 | Сообщение # 14
КЗОИ
Сообщений: 1031
Награды:
18
Репутация:
430
Статус: Offline
Leks , PluginsForAndroid
end.
Leks Дата: Сб, 02 Янв 2016, 00:04 | Сообщение # 15
Сообщений: 6
Награды:
0
Репутация:
1
Статус: Offline
КЗОИ, спасибо большое, буду разбиратьсяДобавлено (02 Янв 2016, 00:04) --------------------------------------------- Вот же... Теперь он спрашивает разрешение на изменение данных, а толку все равно никакого. А можно ли сделать, чтобы на андроиде выводились ошибки как в юнити при тестовом запуске проекта? А то не поймешь в чем проблема, может ему, например, место где я сохраняю не нравится или ещё что.
Сообщение КЗОИ, спасибо большое, буду разбиратьсяДобавлено (02 Янв 2016, 00:04) --------------------------------------------- Вот же... Теперь он спрашивает разрешение на изменение данных, а толку все равно никакого. А можно ли сделать, чтобы на андроиде выводились ошибки как в юнити при тестовом запуске проекта? А то не поймешь в чем проблема, может ему, например, место где я сохраняю не нравится или ещё что.
Автор - Leks Дата добавления - 02 Янв 2016 в 00:04
Aswo Дата: Сб, 02 Янв 2016, 12:51 | Сообщение # 16
КЗОИ
Сообщений: 1031
Награды:
18
Репутация:
430
Статус: Offline
Leks , как вариант, можете поставить Android Studio , там есть Android Device Monitor , который выводит все логи. Возможно, этот инструмент есть и отдельно, я не знаю точно.
end.
Сообщение Leks , как вариант, можете поставить Android Studio , там есть Android Device Monitor , который выводит все логи. Возможно, этот инструмент есть и отдельно, я не знаю точно.Автор - Aswo Дата добавления - 02 Янв 2016 в 12:51
Leks Дата: Сб, 02 Янв 2016, 19:36 | Сообщение # 17
Сообщений: 6
Награды:
0
Репутация:
1
Статус: Offline
Спасибо за помощь, мне наконец-то удалось реализовать сохранение в хмl файл. Для этого пришлось создать тот путь что выше описан и положить в него изменённый AndroidManifest.xml, плюс при создании нового файла прописать в имени полный его путь ( например: "/storage/sdcard0/com.Ksa-Ksa_Studio/SaveRecord.xml").
Сообщение Спасибо за помощь, мне наконец-то удалось реализовать сохранение в хмl файл. Для этого пришлось создать тот путь что выше описан и положить в него изменённый AndroidManifest.xml, плюс при создании нового файла прописать в имени полный его путь ( например: "/storage/sdcard0/com.Ksa-Ksa_Studio/SaveRecord.xml"). Автор - Leks Дата добавления - 02 Янв 2016 в 19:36