NukeBoards

Pomoc - [Fusion] Array - problem z FastLoopem

Pl00 - 25-02-2021, 01:23
: Temat postu: [Fusion] Array - problem z FastLoopem
Hej, od niedawna bawię się znowu w tworzenie czegoś w CF2.5. Napotkałem jednak niestety problem ze stworzeniem zapisu.
Cały czas gdy opierałem się na Arrayu, to zawsze było to po prostu czyste wczytywanie z niego wartości. W tym momencie potrzebuję, by wartości z Arraya były wczytywane tyle razy, ile jest obiektów na planszy.
Użyłem więc Spread Value, żeby każdemu obiektowi przypisać ID. Po tej czynności, stworzyłem też kolejną zmienną dla obiektów, która zmienia wartość po zniszczeniu obiektów. Chciałbym, żeby podczas początku poziomu każdy z obiektów mógł wczytać tę wartość (czy zniszczono).
Niestety, gdy próbuję w pętli użyć "scopingu" obiektów (On loop "loopname" && Id of Object = LoopIndex("loopname")), to pętla wykonuje się tylko raz i żaden z obiektów nie dostaje wartości z Arraya. Czy wie ktoś czym może to być spowodowane?

Screen ze zdarzeń

Z góry dziękuję za pomoc :D
msg - 25-02-2021, 19:45
:
W Zdarzeniu czwartym, nie ma powiązania między warunkiem "On loop" a indeksem obiektu, który wybierze każdy kolejny obiekt w drugim warunku zdarzenia 4. Dlatego też przez całą pętlę akcja wykonuje się dla ostatniej instancji tego obiektu. Zamień wbudowanego fast loopa na For Each, będzie działać: https://imgur.com/a/oGPcUsX
Pl00 - 26-02-2021, 17:16
:
Po zmianie loopa i zdarzeń na te, które podałeś nadal niestety nie działa :/ Masz może jakiś pomysł co z tym zrobić? Jeśli tak to super, jakbyś był w stanie mi pomóc, bo naprawdę chciałbym zrozumieć dlaczego tym razem nie działa :'D

Screen z nowymi zdarzeniami: https://imgur.com/a/qAenZpM
Plik .mfa: https://www.mediafire.com...6/loop.mfa/file
msg - 26-02-2021, 21:45
:
Może coś źle przepisałeś? U mnie działa :madugly: https://www.dropbox.com/s...spread.mfa?dl=1
Pl00 - 27-02-2021, 18:44
:
Z tym przykładem co podesłałeś nadal jest problem niestety :( Array potrafi mieć wartość 1, a B po załadowaniu poziomu nadal pozostaje 0 i nie usuwa obiektu. Przy usuwaniu np. jednego obiektu działa, ale gdy np. już próbuję sprawić, by nie było żadnych obiektów, to jest to niemożliwe

Screen
msg - 27-02-2021, 21:32
:
Aktualizacja przykładu. Tym razem 10 obiektów.
Pl00 napisał/a:
Array potrafi mieć wartość 1, a B po załadowaniu poziomu nadal pozostaje 0 i nie usuwa obiektu.

To nie tak. Array MA wartość 0 w przypadku tych konkretnych obiektów, informacja usun=1 nie zapisała się w niektórych polach array, a dzieje się to dlatego, że masz Spread Value w warunku Always. Oznacza to, że po dynamicznym usunięciu obiektów Spread numeruje je od nowa, a więc nie bierze pod uwagę wszystkich pól Arraya, tylko mniej, a przez to ty możesz usunąć kilka obiektów z planszy a informacja o tym, będzie przechowywana w jednym i tym samym polu arraya. Najmniej korzystną sytuacją jest, gdy za każdym razem "przypadkowo" trafisz na pierwszy z obiektów, wtedy każda informacja o usuwaniu zapisze się do pola o id 0 i po wyczyszczeniu planszy z obiektów i restarcie zostanie ci 9 z 10 obiektów.
Dodałem listę debugową, która pokazuje co się wczytało z arraya a potem co się usuwa po kliknięciu. Przenieś sobie akcję Spread z prawidłowego start of frame do Always z powrotem, zobaczysz jakie głupoty się pokazują w "logu":
https://www.dropbox.com/s...spread.mfa?dl=1
Spread w always może zadziałać pod warunkiem, że obiekty oznaczone do usunięcia po restarcie ramki nie zostaną usunięte od razu po kliknięciu w nie, bo w takiej sytuacji Always >> Spread zawsze przynosi taki sam wynik: numeruje wszystkie 10 obietków.
Pl00 - 28-02-2021, 12:59
:
Okej, teraz po przeanalizowaniu wszystkiego rozumiem w czym był problem. Dzięki wielkie za pomoc! :D
Cootje - 06-08-2021, 17:32
:
"W tym momencie potrzebuję, by wartości z Arraya były wczytywane tyle razy, ile jest obiektów na planszy." Oj nie byczku, oj nie tu w tym zdaniu masz błąd i to poważny :)

Proponuję wczytać raz Array i potem wczytać z niego dane do obiektów według odpowiedniego algorytmu najlepiej stwórz sobie odpowiednią strukturę za pomocą, której będziesz tworzyć zapisane obiekty i wczytywać do nich dane ;)