VitaMin00 писал(а):Вечер добрый. Не могу понять. Запихнул в Awake.
KeySave = ObscuredPrefs.GetBool("KeySave", false);
if (!KeySave)
{
Debug.Log("!");
ObscuredInt r = UnityEngine.Random.Range(int.MinValue, int.MaxValue);
ObscuredPrefs.CryptoKey = (r.ToString());
ObscuredPrefs.SetBool("KeySave", true);
KeySave = true;
}
Хочу новый ключ, при новой игре, пусть то установка или переустановка. Так у меня при каждом запуске он новый. Можно правильный вариант?)))
Привет!
Проблема в том что вы пишете переменную KeySave уже используя новый ключ (CryptoKey меняете до SetBool("KeySave")).
А потом читаете его при запуске игры, но ключ у вас дефолтный, потому GetBool возвращает дефолтный false.
ObscuredPrefs.CryptoKey не хранится между сессиями, потому его нужно выставлять на кастомный при каждом запуске.
Правильный варинт был бы примерно таким:
key = ObscuredPrefs.GetString("NewKey");
if (string.IsNullOrEmpty(key))
{
Debug.Log("!");
ObscuredInt r = UnityEngine.Random.Range(int.MinValue, int.MaxValue);
string newKey = r.ToString();
ObscuredPrefs.SetString("NewKey", newKey);
ObscuredPrefs.CryptoKey = newKey;
}
else
{
ObscuredPrefs.CryptoKey = key;
}
В этом случае клю хранился бы прямо в префсах, но пошифрованный дефолтным ключём.
Если ключ хотите хранитьв не префсов - то можно и так, как вам удобнее. Главное его где-то хранить после генерации и потом подгружать и присваивать свойству ObscuredPrefs.CryptoKey.