GodotФорумВопросы

Прошу помощь по singleton для инвентаря

#0
21:25, 20 мая 2023

Добрый день.

Столкнулся с проблемой - Не могу сделать систему инвентаря
Каждый раз при поднятии предмета на сцене test_level на сцене User_Interface должен создаваться слот (Panel) с этим предметом. Данные для отрисовки эта панель берет из библиотеки предметов: ItemLib, которая является синглтоном.

Только если предмет отсутствует должна выполнять процедура создания новой панели, однако результат не получается. Буду признателен если подскажите более простой способ обращения к дочерним узлам (их количество меняется) и получения доступа к их переменным.


Все действия происходят на сценах User_Interface, Test_level, Panel,
а также в двух синглтонах: ItemLib и Global

Версия движка:
3.5.2

Проект:
https://disk.yandex.ru/d/EWAOs-D9nUHRLg

Если ссылка не рабочая - напишите.

#1
22:54, 20 мая 2023

Кажется нашёл более элегантное решение, извините за беспокойство)

Целую неделю пытался сделать, а как здесь спросил - светлая идея самому в голову пришла)
Пришлось убрать колбэки, но оно работает:

USER_INTERFACE:

func locUI_Dict_gen(a, b):
  locItemLib = ItemLib.ItemDict
  for i in locItemLib:
    var itemLibName = i
    var itemLibCount = locItemLib
    if locUI_Dict.has(itemLibName):
      print("YES")
      Global.emit_signal("CountChange", itemLibName, itemLibCount)
    else:
      locUI_Dict[itemLibName] = itemLibCount
      print(locUI_Dict)
      panelCreator(itemLibName, itemLibCount)
  pass

PANEL:

func Change_this_count(iName, iCount):
  if iName == localItemName:
    localItemCount = iCount
    generic()
    print(localDictItem, ItemLib.ItemDict)
  pass

GodotФорумВопросы

Тема в архиве.

Тема закрыта.