Class PlayerPrefsBindingStorage
An IBindingStorage implementation that persists input binding overrides
using Unity's PlayerPrefs registry.
Implements
Inherited Members
Namespace: Scylla.Input
Assembly: ScyllaInput.dll
Syntax
public class PlayerPrefsBindingStorage : IBindingStorage
Remarks
This is the default storage backend created by InputBindingManager during Initialize(IInputActionManager, IInputContextManager) when no custom backend has been configured via SetStorage(IBindingStorage).
Key scheme: each profile's JSON payload is stored under a
PlayerPrefs key with the prefix Scylla.Input.Bindings. followed by
the profile ID (e.g., Scylla.Input.Bindings.default). A separate key,
Scylla.Input.Bindings._profiles, holds a comma-separated list of all
known profile IDs and is maintained automatically as profiles are created or
deleted.
Profile tracking: because PlayerPrefs does not support
key enumeration, the class maintains an in-memory HashSet<string>
of known profiles that is persisted separately as the profile-list key. This list
is loaded from PlayerPrefs on construction. Profile IDs are trimmed of
whitespace when parsed from the stored list.
Platform considerations: PlayerPrefs data is stored in
the platform registry or a local preferences file (location varies by platform).
Data is durable across play sessions and application reinstalls on most platforms.
The size of an individual binding JSON payload contributes to the total
PlayerPrefs storage used by the application. For games with very large
input schemas or many profiles, consider JSONFileBindingStorage
instead.
Every SaveBindings(string, string) and DeleteBindings(string) call that
modifies state ends with PlayerPrefs.Save() to flush changes to disk
immediately, guarding against data loss if the application exits unexpectedly.
Constructors
PlayerPrefsBindingStorage()
Initializes a new PlayerPrefsBindingStorage and loads the list of
previously saved profiles from PlayerPrefs.
Declaration
public PlayerPrefsBindingStorage()
Properties
StorageID
Gets a short, human-readable identifier that names this storage backend.
Declaration
public string StorageID { get; }
Property Value
| Type | Description |
|---|---|
| string | A non-null, non-empty string that uniquely identifies the backend, such as
|
Methods
DeleteBindings(string)
Permanently removes the saved binding data for the given profile.
Declaration
public bool DeleteBindings(string profileID)
Parameters
| Type | Name | Description |
|---|---|---|
| string | profileID | The non-null, non-empty string that identifies the profile to delete. |
Returns
| Type | Description |
|---|---|
| bool |
|
GetAllProfiles()
Returns the identifiers of every profile that currently has saved binding data in this storage backend.
Declaration
public IReadOnlyList<string> GetAllProfiles()
Returns
| Type | Description |
|---|---|
| IReadOnlyList<string> | A non-null, read-only list of profile ID strings. The list is empty if no profiles have been saved or if the backend cannot enumerate them. The order of entries is implementation-defined. |
HasBindings(string)
Determines whether saved binding data exists for the given profile.
Declaration
public bool HasBindings(string profileID)
Parameters
| Type | Name | Description |
|---|---|---|
| string | profileID | The profile identifier to check. Returns |
Returns
| Type | Description |
|---|---|
| bool |
|
LoadBindings(string)
Retrieves the previously saved JSON binding data for the given profile.
Declaration
public string LoadBindings(string profileID)
Parameters
| Type | Name | Description |
|---|---|---|
| string | profileID | The non-null, non-empty string that identifies the profile slot to read from. |
Returns
| Type | Description |
|---|---|
| string | The raw JSON string that was passed to SaveBindings(string, string) for this profile,
or |
SaveBindings(string, string)
Persists the supplied JSON binding data under the given profile identifier.
Declaration
public void SaveBindings(string profileID, string jsonData)
Parameters
| Type | Name | Description |
|---|---|---|
| string | profileID | The non-null, non-empty string that names the profile slot to write into (for
example |
| string | jsonData | The JSON string produced by ExportBindingsAsJSON(). Must not be null or empty; implementations should log a warning and return early if it is. |
Remarks
Implementations are expected to handle I/O failures gracefully - logging the error and returning without propagating an exception to the caller.