SHIGORBIRDMAN: super, dobre vediet, prepisem si to.. akurat teraz riesim taky problem mozno by si vedel spravnu odpoved.
Na konci levelu, ked to user nestihne dohrat v stanovenom case sa objavi game over / time up screen, kde bude mimo ine veci informacia typu:
Found: 12/15 Items
tych 12 a 15 su premenne ktore potrebujem vytiahnut z triedy "GuessItemPanel". Ale aby to nebolo take jednoduche, :( tento panel sa Instantiatuje z inej triedy (UIManager) ktory je volany z hlavnej game class.
Ten UIManager class ale ma referenciu na ten GuessItemPanel.
V ramci OOP principu encapsulation (black box behaviour) by som potreboval aby vsetky tie classes nevedeli toho o sebe viac ako je to nevyhnutne. Takze chcel som to vyriesit tak ze
1) na mojej TimeOutPanl class bude
public Action getItemsInfo; //toto je field nie method
2) na GuessItemPanel bude metoda ktora vrati hodnoty (12,15)
napr private ? getItemsRemaining()
return {itemsRemaining:12, itemsTotal:15} //pseudocode
3) Ui manager to vsetko prepoji
cize potom ako vytvori Prefab, potom tu Action z GuessItemPanen pripise k field getItemsInfo na TimeOutPanel..
Hlavny problem je v spravnej implementacii, ako to typovo osetrit aby ta metoda getItemsRemaining vracal 2 parametre
ako zadefinovat ten Action field aby tam bol spravny type
Ako sa potom dostat k tym premennym
Podla toho co som si googlil, sa na to daju vyuzit 2 veci :
Tuple alebo out
Na obidve som ale zatial nenasiel priklady napriklad na ako to spravne zadefinovat pre Action field, alebo v pripade out ako to zadefinovat pre method return type?