Экземпляры Money регистрируются в рантайме и могут находиться по ключу сохранения:
Money gems = Money.FindBySaveKey("Gems");
bool found = Money.TryFindBySaveKey("Gems", out Money wallet);Это используется в ShopItemData.CurrencyOverrideSaveKey, ShopBundleData.CurrencyOverrideSaveKey и TextMoney.
Если ключ не выбран, системы возвращаются к обычному fallback: Money.I или валюта магазина по умолчанию.
Назначение: Глобальный менеджер игровой валюты (Singleton). По умолчанию сохраняет и загружает баланс через SaveProvider, поддерживает реактивные свойства (ReactiveProperty) для привязки к UI. Можно отключить запись в сейв для сессионных режимов и демо (NoCode).
- Добавьте компонент через меню
Add Component > Neoxider > Shop > Moneyна менеджер-объект сцены (или префаб, который не уничтожается при переходе между сценами). - Обычно используется один экземпляр на игру (
Money.I).
| Поле | Описание |
|---|---|
_moneySave |
Ключ сохранения в SaveProvider для основного баланса. |
_persistMoney |
Если включено (по умолчанию), баланс загружается при старте и пишется при изменениях. Если выключено — только в памяти сессии (без Load/SetFloat для денег). |
st_levelMoney |
Ссылки на компоненты SetText для отображения заработка за текущий уровень. |
st_money |
Ссылки на компоненты SetText для отображения общего баланса. |
t_levelMoney |
Прямые ссылки на компоненты TMP_Text для баланса уровня. |
t_money |
Прямые ссылки на TMP_Text для основного баланса. |
Доступ к менеджеру можно получить откуда угодно через глобальный синглтон:
// Добавить 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).
- TextMoney - UI компонент для вывода текста.
- Корень модуля