Unity playerprefs что это

PlayerPrefs

class in UnityEngine

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Submission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Description

`PlayerPrefs` is a class that stores Player preferences between game sessions. It can store string, float and integer values into the user’s platform registry.

Unity stores `PlayerPrefs` data differently based on which operating system the application runs on. In the file paths given on this page, the company name and product name are the names you set in Unity’s Player Settings.

Standalone Player storage location

On macOS, PlayerPrefs are stored in

On Windows, PlayerPrefs are stored in HKCU\Software\ExampleCompanyName\ExampleProductName key.

On Linux, PlayerPrefs are stored in

On Windows Phone 8, Unity stores PlayerPrefs data in the application’s local folder. See Directory.localFolder for more information.

On WebGL, Unity stores PlayerPrefs data using the browser’s IndexedDB API. For more information, see IndexedDB.

In-Editor Play mode storage location

On Windows, PlayerPrefs are stored in HKCU\Software\Unity\UnityEditor\ExampleCompanyName\ExampleProductName key. Windows 10 uses the application’s PlayerPrefs names. For example, Unity adds a DeckBase string and converts it into DeckBase_h3232628825. The application ignores the extension.

Unity stores PlayerPrefs in a local registry, without encryption. Do not use PlayerPrefs data to store sensitive data.

Static Methods

DeleteAllRemoves all keys and values from the preferences. Use with caution.
DeleteKeyRemoves the given key from the PlayerPrefs. If the key does not exist, DeleteKey has no impact.
GetFloatReturns the value corresponding to key in the preference file if it exists.
GetIntReturns the value corresponding to key in the preference file if it exists.
GetStringReturns the value corresponding to key in the preference file if it exists.
HasKeyReturns true if the given key exists in PlayerPrefs, otherwise returns false.
SaveWrites all modified preferences to disk.
SetFloatSets the float value of the preference identified by the given key. You can use PlayerPrefs.GetFloat to retrieve this value.
SetIntSets a single integer value for the preference identified by the given key. You can use PlayerPrefs.GetInt to retrieve this value.
SetStringSets a single string value for the preference identified by the given key. You can use PlayerPrefs.GetString to retrieve this value.

Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.

Copyright ©2021 Unity Technologies. Publication Date: 2021-12-03.

Источник

PlayerPrefs

class in UnityEngine

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста попробуйте снова через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Описание

Stores and accesses player preferences between game sessions.

Editor/Standalone

В Mac OS X параметры игрока (player prefs) хранятся в папке

В Mac OS X параметры игрока (player prefs) хранятся в папке

On Linux, PlayerPrefs can be found in

/.config/unity3d/[CompanyName]/[ProductName] again using the company and product names specified in the Project Settings.

On Windows Store Apps, Player Prefs can be found in %userprofile%\AppData\Local\Packages\[ProductPackageId]>\LocalState\playerprefs.dat

On Windows Phone 8, Player Prefs can be found in application’s local folder, See Also: Windows.Directory.localFolder

On Android data is stored (persisted) on the device. The data is saved in SharerPreferences. C#/JavaScript, Android Java and Native code can all access the PlayerPrefs data. The PlayerPrefs data is physically stored in /data/data/pkg-name/shared_prefs/pkg-name.xml.

WebPlayer

On Web players, PlayerPrefs are stored in binary files in the following locations:

Mac OS X:

Windows: %APPDATA%\Unity\WebPlayerPrefs

В Mac OS X параметры игрока (player prefs) хранятся в папке

There is one preference file per Web player URL and the file size is limited to 1 megabyte. If this limit is exceeded, SetInt, SetFloat and SetString will not store the value and throw a PlayerPrefsException.

Источник

Русские Блоги

Unity PlayerPrefs Хранилище данных Чтение PlayerPrefs

Хранение данных Playerprefs и чтение Unity Playerprefs. Unity3d предоставляет класс для локального постоянного сохранения и чтения PlayerPrefs. Принцип работы очень прост, сохраняйте данные в файле в виде пар ключ-значение, а затем программа может получить последнее сохраненное значение на основе этого имени. В этом разделе описывается, как использовать PlayerPrefs для хранения и чтения данных следующим образом.

1. Основные концепции

PlayerPrefs:

Stores and accesses player preferences between game sessions.

Сохраните и прочтите тип:

Класс PlayerPrefs поддерживает сохранение и чтение трех типов данных: с плавающей запятой, целых чисел и строк. Соответствующие функции:

1) SetInt (); сохранять целочисленные данные;

2) GetInt (); прочитать данные шейпинга;

3) SetFloat (); сохранить данные с плавающей запятой;

4) GetFlost (); чтение данных с плавающей запятой;

5) SetString (); сохранить строковые данные;

6) GetString (); чтение строковых данных;

Использование этих функций в основном одинаковое: используйте Set для сохранения и Get для чтения.

2. Считывание данных из хранилища данных PlayerPrefs из PlayerPrefs

Откройте Unity, создайте новый пустой проект, а затем интерфейс Unity, как показано ниже.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Создайте новый сценарий в проекте, сценарий может называться «PlayerprefsTest», как показано ниже.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Выберите сценарий «PlayerprefsTest», дважды щелкните сценарий или щелкните правой кнопкой мыши «Открыть проект C #», как показано ниже.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Отредактируйте код в открытом скрипте DictionaryTest. Сначала установите переменные хранения и чтения, затем введите и сохраните данные через OnGUI и, наконец, прочтите сохраненные данные. Конкретный код и описание кода следующие

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Конкретный код скрипта выглядит следующим образом:

public class PlayerprefsTest : MonoBehaviour <

private string set_NAME = string.Empty;

private string get_NAME = string.Empty;

set_NAME = GUILayout.TextArea(set_NAME, 200, GUILayout.Width(50));

Если (GUILayout.Button («Данные хранилища»))

// Сохраняем введенное имя локально и назовем его _NAME;

Если (GUILayout.Button («Прочитать данные»))

// Считываем данные с именем _NAME в локальных данных;

GUILayout.Label («Имя, которое вы ввели:» + get_NAME);

После правильной компиляции сценария вернитесь в интерфейс Unity, создайте новый «GameObject» в сцене, а затем назначьте сценарий «PlayerprefsTest» для «GameObject», как показано на рисунке ниже.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Запустите сцену, вы увидите, что результат печати на консоли соответствует ожиданиям, как показано на рисунке ниже.

Источник

Как сохранять и загружать игры в Unity

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

В этом уроке вы узнаете, как сохранять и загружать игру в Unity, используя PlayerPrefs, Serialization и JSON.

Игры становятся все длиннее и интереснее, а некоторые из них занимают более 100 часов игрового времени. Практически невозможно представить, что игроки могут выполнить все то, что может предложить им игра, всего за один подход. Вот почему возможность для игрока сохранять свою игру — это одна из самых важных функций, которые должна иметь каждая большая игра, даже если это простой платформер.

Но как создать файл сохранения и что в нем должно быть? Нужно ли при этом использовать файл сохранения, чтобы отслеживать настройки плеера? Или может лучше использовать облачное хранилище для сохранений, чтобы в случае необходимости их можно было позже загрузить на другое устройство?

В этом уроке вы узнаете:

Предполагается, что у вас есть некоторые базовые практические знания о том, как работает Unity. Однако, если у вас возникнут какие-либо вопросы в ходе прохождения этого урока, то вы всегда можете освежить память воспользовавшись данным разделом. Кроме того, даже если вы новичок в C#, у вас не должно возникнуть никаких проблем, за исключением нескольких концепций, которые могут потребовать более детального изучения.

Примечание: Если вы новичок в Unity или хотите приобрести больше навыков, то вам следует ознакомиться с другими учебниками по Unity, где вы можете узнать много интересной и полезной информации.

Введение

Загрузите стартовый проект здесь. Вы будете использовать специальный код для сохранения и загрузки игры, а также изучите логику сохранения настроек игроков.

Важные концепции сохранения

Существует четыре ключевых понятия которыми можно охарактеризовать процесс сохранения в Unity:

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

Сериализация: это своего рода магия, которая заставляет Unity корректно работать. Сериализация — это преобразование объекта в поток байтов. Чтобы лучше понимать, о чем идет речь посмотрите на этот рисунок:

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Что такое «объект»? В этом случае «объект» — это любой скрипт или файл в Unity. Фактически, всякий раз, когда вы создаете сценарий MonoBehaviour, Unity использует сериализацию и десериализацию для преобразования этого файла в код C++, а затем обратно в код C#, который вы видите в окне inspector.

Примечание: Если вы являетесь Java-разработчиком или веб-разработчиком, возможно, вы знакомы с концепцией, известной как маршалинг. Сериализация и маршалинг являются синонимами, но в случае, однако между этими двумя понятиями существует большая разница. Сериализация подразумевает преобразование объекта из одной формы в другую (например, объект в байты), тогда как маршалинг — это получение параметров из одного места в другое.

Десериализация: Это процесс, противоположный сериализации, а именно преобразование потока байтов в объект.

JSON: Эта аббревиатура расшифровывается как JavaScript Object Notation, который является удобным форматом для отправки и получения данных, вне зависимости от языка. Например, у вас может быть веб-сервер, работающий на Java или PHP. Вы не можете просто отправить объект C#, но вы можете отправить JSON-версию этого объекта и позволить серверу воссоздать его локализованную версию. Вы узнаете больше об этом формате в последнем разделе, но сейчас важно просто понять, что это способ форматирования данных, чтобы сделать их мультиплатформенными для чтения (например, XML). При преобразовании в/и из JSON используются термины JSON-сериализация и JSON-десериализация соответственно.

Player Prefs

Проект, который вы скачали изначально настроен таким образом, что все, на чем вам нужно сосредоточится, — это логика сохранения и загрузки игр. Однако, если вам интересно, как все работает, то вы можете открыть все сценарии для более подробного изучения.

Откройте проект, который вы скачали, запустите сцену с именем Game и затем нажмите play.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Чтобы начать игру, нажмите кнопку «New Game». В этой игре вам необходимо использовать мышку для перемещения. Нажмите левую кнопку мыши, чтобы выстрелить и поразить цели (которые перемещаются вверх и вниз через различные промежутки времени), получать очки за каждое удачное попадание. Попробуйте и посмотрите, сколько очков вы сможете получить за 30 секунд. Чтобы вызвать меню в любое время, нажмите клавишу escape.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Эта игра довольна забавная и даже увлекательная, но без музыкального сопровождения немного скучновата. Возможно, вы заметили, что есть музыкальный переключатель, но он был выключен. Нажмите «Play», чтобы начать новую игру, но на этот раз нажмите «Music» и установите значение «On», чтобы вы могли услышать музыку, когда начнете игру. Убедитесь, что ваши колонки или наушники подключены!

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Изменить настройки музыки было несложно, но если вы нажмете кнопку воспроизведения еще раз, то заметите проблему: музыка больше не воспроизводится. Чтобы исправить эту ошибку вам потребуется инструмент PlayerSettings.

Для начала создайте новый скрипт с именем PlayerSettings в папке Scripts. Поскольку вы будете использовать некоторые элементы пользовательского интерфейса, добавьте следующую строку вверху:

Именно они будут отслеживать объекты Toggle и AudioSource.

Далее добавьте следующую функцию:

Эти настройки означают:

Теперь сохраните изменения в вашем скрипте и вернитесь в Unity.

Добавьте скрипт PlayerSettings в GameObject и разверните пользовательский интерфейс GameObject. Далее вам нужно открыть меню GameObject, чтобы увидеть его дочерние элементы. Перетащите объект Music GameObject в поле Toggle сценария PlayerSettings, выберите GameObject Game и перетащите AudioSource в поле MyAudio.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Музыка настроена на работу во время игры (так как в функции «Awake» есть код), но вам все равно нужно добавить еще один код, если игрок меняет настройки во время игры. Для этого снова откройте скрипт PlayerSettings и добавьте следующую функцию:

Эти настройки означают почти то же самое, что и код, который вы написали ранее, за исключением того, что в этом случае есть одно важное отличие. Этот код сначала проверяет состояние переключателя музыки, а затем соответствующим образом обновляет сохраненную настройку. Для того, чтобы этот метод был вызван и, следовательно, чтобы он мог выполнять свою функцию, вам нужно установить метод обратного вызова в Toggle GameObject. Выберите MusicObject Music и перетащите GameObject Game поверх поля объекта в разделе OnValueChanged:

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Теперь к раскрывающемуся списку, в котором в данный момент написано «No Function», и выберите PlayerSettingsToggleMusic (). Таким образом, когда во время игры пользователь активирует кнопку переключения в меню, появится функция ToggleMusic.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Теперь у вас есть все необходимые настройки, которые нужны чтобы отслеживать опции звуков. Нажмите «Play» и попробуйте изменить настройки музыки, включив или выключив соответствующий переключатель в меню.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Сохранение игры

Согласитесь, возможности и настройка PlayerPrefs не вызывает больших затруднений в использовании. С его помощью вы сможете легко сохранять другие данные, такие как графические настройки проигрывателя или информацию для входа в систему (например, токены Facebook или Twitter), и любые другие параметры конфигурации, которые нужно отслеживать для проигрывателя. Однако PlayerPrefs не предназначен для отслеживания сохранений в игре. Для этого нужно использовать сериализацию.

Первым шагом к созданию файла сохранения игры является создание класса файла сохранения. Создайте новый скрипт с именем Save и удалите пункты MonoBehaviour, Start () и Update ().

Теперь вам необходимо добавить следующие переменные:

Чтобы сохранить игру, вам нужно отслеживать, где находятся существующие роботы и какого они типа. За это должны отвечать два списка с целыми данными о количестве попаданий и числе выстрелов.

Есть еще один очень важный фрагмент кода, который вам также нужно добавить:

Этот код дает команду Unity, что данный класс можно сериализовать, а это означает, что вы можете превратить его в поток байтов и сохранить как файл на диске.

Примечание: все эти атрибуты имеют широкий спектр применения и позволяют привязывать данные к классу, методу или определенной переменной. Вы даже можете определить свои собственные атрибуты для использования в вашем коде. Сериализация использует атрибуты [SerializeField] и [System.Serializable], которые определяют, что происходит при сериализации объекта.

Ваш скрипт Save должен выглядеть следующим образом:

Теперь откройте скрипт Game и добавьте еще один метод:

Этот код создаст новый экземпляр класса Save, который вы делали ранее, а затем установит значения исходя из количества существующих роботов. Кроме того, произойдет сохранение количества выстрелов игрока и попаданий.

Кнопка «Save» была подключена к методу SaveGame в скрипте Game, но в SaveGame все еще нет кода. Замените функцию SaveGame следующим кодом:

Рассмотрим все по пунктам:

Чтобы выполнить сохранение процесса, нажмите Escape в любой момент во время игры и используйте кнопку «Save». Обратите внимание, что при этом появляется сообщение о том, что игра была сохранена.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

LoadGame в скрипте Game подключен к кнопке Load. Откройте скрипт Game, найдите функцию LoadGame и замените ее следующим значением:

Рассмотрим процесс более подробно:

Нажмите Play, немного поиграйте в игру и попробуйте сохранится. Нажмите кнопку «Load», и вы увидите, что она загружает врагов таким же образом, какими они были до того, как вы сохранили игру. Кроме того, должны отобразиться счет и количество выстрелов, которые вы сделали.

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Сохранение данных с помощью JSON

Есть еще одна хитрость, которую вы можете использовать, когда хотите сохранить данные – это возможности JSON. Вы можете создать локальное JSON-представление сохранения вашей игры, отправить его на сервер, а затем переправить JSON в виде строки на другое устройство и преобразовать его из строки обратно в JSON.

Формат JSON может немного отличаться от того, который вы могли бы использовать с кодом C#, но он довольно прост. Вот один из примеров JSON:

Внешние скобки представляют собой родительскую сущность, которой является JSON. Если вы знакомы со структурой данных Dictionary, то JSON чем-то похож на это. Файл JSON представляет собой сопоставление пар ключ-значение. Обратите внимание — приведенный выше пример имеет 3 пары ключ-значение. В JSON ключи всегда являются строками, но значения могут быть объектами (то есть дочерними объектами JSON), массивами, числами или строками. Значение, установленное для ключа «message», равно «hi», значение ключа «age» — это число 22, а значение ключа «items» — это некий массив с двумя строками.

Сам объект JSON представлен типом String. Передав эти данные в виде строки, любой язык может легко воссоздать объект JSON из строки в качестве аргумента конструктора. Это действительно очень удобно и очень просто. У каждого языка есть свой способ создания объекта из этого формата. Начиная с Unity 5.3, существует собственный метод для создания объекта JSON из строки JSON.

В скрипте Game есть метод SaveAsJSON, который подключен к кнопке Save As JSON. Вам нужно заменить следующим кодом:

Это создает экземпляр Save и строку JSON с использованием метода ToJSON в классе JsonUtility.

Запустите игру и попробуйте уничтожить несколько целей, чтобы набрать очки. Теперь нажмите Escape, чтобы вызвать меню и используйте кнопку Save As JSON, чтобы увидеть созданную вами строку JSON:

Unity playerprefs что это. Смотреть фото Unity playerprefs что это. Смотреть картинку Unity playerprefs что это. Картинка про Unity playerprefs что это. Фото Unity playerprefs что это

Если вы захотите преобразовать этот JSON в экземпляр Save, то вам нужно будет использовать строку:

Таким образом вы сможете загрузить файл сохранения из Интернета, а затем добавить его в свою игру.

Что делать дальше?

Вы можете скачать законченный проект тут.

Вы узнали, как использовать довольно мощный инструмент для создания качественных игр, позволяя игрокам сохранять и загружать свои игры с помощью возможностей сериализации. Вы также узнали, что такое JSON и как его использовать для реализации облачного сохранения.

Если вы хотите узнать больше о возможностях Unity, то вам следует обратиться к другим урокам, посвященным этому движку. Если вы уверенно владеете Unity и хотите стать настоящим разработчиком, то советуем вам прочитать книгу Unity Games by Tutorials, с помощью которой вы сможете сделать 4 полноценных игры с нуля.

Источник

PlayerPrefs

class in UnityEngine

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Submission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Description

Stores and accesses player preferences between game sessions.

Editor/Standalone

On macOS PlayerPrefs are stored in

On Windows, PlayerPrefs are stored in the registry under HKCU\Software\[company name]\[product name] key, where company and product names are the names set up in Project Settings.

On Linux, PlayerPrefs can be found in

/.config/unity3d/[CompanyName]/[ProductName] again using the company and product names specified in the Project Settings.

On Windows Store Apps, Player Prefs can be found in %userprofile%\AppData\Local\Packages\[ProductPackageId]>\LocalState\playerprefs.dat

On Windows Phone 8, Player Prefs can be found in application’s local folder, See Also: Directory.localFolder

On Android data is stored (persisted) on the device. The data is saved in SharedPreferences. C#/JavaScript, Android Java and Native code can all access the PlayerPrefs data. The PlayerPrefs data is physically stored in /data/data/pkg-name/shared_prefs/pkg-name.xml.

On WebGL, PlayerPrefs are stored using the browser’s IndexedDB API.

On iOS, PlayerPrefs are stored in /Library/Preferences/[bundle identifier].plist.

Static Methods

DeleteAllRemoves all keys and values from the preferences. Use with caution.
DeleteKeyRemoves key and its corresponding value from the preferences.
GetFloatReturns the value corresponding to key in the preference file if it exists.
GetIntReturns the value corresponding to key in the preference file if it exists.
GetStringReturns the value corresponding to key in the preference file if it exists.
HasKeyReturns true if key exists in the preferences.
SaveWrites all modified preferences to disk.
SetFloatSets the value of the preference identified by key.
SetIntSets the value of the preference identified by key.
SetStringSets the value of the preference identified by key.

Did you find this page useful? Please give it a rating:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *