Skip to content

Latest commit

 

History

History
69 lines (48 loc) · 4.18 KB

File metadata and controls

69 lines (48 loc) · 4.18 KB

Поиск по ключу сохранения

Экземпляры Money регистрируются в рантайме и могут находиться по ключу сохранения:

Money gems = Money.FindBySaveKey("Gems");
bool found = Money.TryFindBySaveKey("Gems", out Money wallet);

Это используется в ShopItemData.CurrencyOverrideSaveKey, ShopBundleData.CurrencyOverrideSaveKey и TextMoney.

Если ключ не выбран, системы возвращаются к обычному fallback: Money.I или валюта магазина по умолчанию.

Money

Назначение: Глобальный менеджер игровой валюты (Singleton). По умолчанию сохраняет и загружает баланс через SaveProvider, поддерживает реактивные свойства (ReactiveProperty) для привязки к UI. Можно отключить запись в сейв для сессионных режимов и демо (NoCode).

Подключение

  • Добавьте компонент через меню Add Component > Neoxider > Shop > Money на менеджер-объект сцены (или префаб, который не уничтожается при переходе между сценами).
  • Обычно используется один экземпляр на игру (Money.I).

Основные настройки (Inspector)

Поле Описание
_moneySave Ключ сохранения в SaveProvider для основного баланса.
_persistMoney Если включено (по умолчанию), баланс загружается при старте и пишется при изменениях. Если выключено — только в памяти сессии (без Load/SetFloat для денег).
st_levelMoney Ссылки на компоненты SetText для отображения заработка за текущий уровень.
st_money Ссылки на компоненты SetText для отображения общего баланса.
t_levelMoney Прямые ссылки на компоненты TMP_Text для баланса уровня.
t_money Прямые ссылки на TMP_Text для основного баланса.

API и Использование

Доступ к менеджеру можно получить откуда угодно через глобальный синглтон:

// Добавить 100 монет
Money.I.Add(100f);

// Попробовать списать 50 монет
bool success = Money.I.Spend(50f);
if (success) {
    // Покупка прошла успешно
}

// Установить баланс (с сохранением, если persist включён)
Money.I.SetMoney(500f);
// Алиас для UnityEvent / кнопок:
Money.I.SetCurrentMoney(500f);

// Для обычного uGUI Button.onClick используйте void-обёртку:
Money.I.SpendFromButton(50f);

// Сбросить ключи в SaveProvider и обнулить баланс в рантайме
Money.I.ClearSavedMoneyAndReset();

// Перечитать баланс из SaveProvider после внешних правок ключей
Money.I.ReloadBalanceFromSave();

Для вывода баланса в UI рекомендуется использовать готовый компонент TextMoney.

NoCode / UnityEvent: Add(float), SetCurrentMoney(float), ClearSavedMoneyAndReset() и ReloadBalanceFromSave() можно подключать к UnityEvent. Spend(float) возвращает bool, поэтому обычный Button.onClick его не показывает; для кнопок используйте SpendFromButton(float). Если нужно узнать результат списания из кода, вызывайте Spend(float).

См. также