Skocz do zawartości

Persistent objects - jak to w końcu działa


TO_mek

Rekomendowane odpowiedzi

Witam!

Mam 2 roomy:

1: intro/HS/menu room0

2: gra właściwa room1

 

W roomie mam obiekt start_obj tworzący obiekt persistent_obj w przypadku gdy on jeszcze nie istnieje. Obiekt persistent_obj ma zaznaczoną opcję persistent, posiada alarm[0] który ma ustawiać pewną zmienną która powoduje skip intra od razu do HS oraz do testow show_message('JESTEM W ALARMIE');, także posiada zmienną testową "jest:='tak'.

 

Odpalam grę przez debugera, podglad wartości persistent_obk.jest wyświetla 'tak', wchodzę do rooma 2 czyli do gry i w debugerze persistent_obk.jest=ERROR.

Wywołuję powrót do rooma nr 1 poprzez:

GML
persistent_obj.alarm[0]:=5;

room_goto(room1);

Nie pojawia się błąd, gra skacze do rooma z intrem (room0), w debugerze pojawia się ponownie zmienna persistent_obk.jest='tak', ale alarm nie zostaje wywołany.

 

Czy tak powinien działać obiekt typu persistent? Czy może to wszystko przez to, że na roomie gry (room1) mam wywołanie instance_deactivate i obiekt persistent_obj jest nieaktywny mimo, że teoretycznie jest persistent?

 

 

 

EDIT:

OK. W sumie pisząc tego posta wpadłem sam na swój błąd i faktycznie przecież obiekty zdeaktywowane są jakby nieistniejące. Po dodaniu do powyższego kodu na początku linijki

GML
instance_activate_object(persistent_obj);

 

wszystko działa tak jak powinno.

 

Jedynie zastanawia mnie dlaczego GML nie pokazuje błędu jak wywoływałem alarm nieistniejącego a właściwie nieaktywnego obiektu?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Jeśli dezaktywujesz obiekt, to nie ma znaczenia czy jest persistent czy nie, przy zmianie rooma wszystkie nieaktywne obiekty wyrzucane są z pamięci.

 

@MXQ: jeśli nie ma obiektu, nie ma alarmu - co w tym dziwnego?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli dezaktywujesz obiekt, to nie ma znaczenia czy jest persistent czy nie, przy zmianie rooma wszystkie nieaktywne obiekty wyrzucane są z pamięci.

 

@MXQ: jeśli nie ma obiektu, nie ma alarmu - co w tym dziwnego?

 

Dziwne jest to, że w momencie wywołania alarmu dla obiektu który jest zdezaktywowany nie jest generowany błąd. Powinien być komunikat że obiektu nie ma.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...