Skocz do zawartości

Wpływ ułożenia elementów w menu na gre


Rekomendowane odpowiedzi

GM:S

Trafił mi się bardzo nietypowy problem którego nie potrafię zrozumieć.Zrobiłem bardzo prosty silnik RTS- wszystko działa powiedzmy tak jak powinno- w tym element kluczowy w moim pytaniu- tworzenie nowych jednostek.Klikamy LPM na bazę, pojawiają się 2 ikony jednostek (worker,fighter) i jeżeli mamy wystarczającą ilość $ to dana jednostka się tworzy.Problem pojawił się gdy skopiowałem projekt żeby pójść w innym kierunku,eksperymentować ale nie stracic bazy.Zmieniłem w zasadzie tylko sprite i jakies drobiazgi i wydarzyła się bardzo dziwna rzecz.Po kliknieciu na ikonę jednostki- zawsze tworzy się taka sama, niezależnie na to co kliknę (załóżmy że klikam na fightera a i tak tworzy się worker).Kombinowałem długo, kod nie zmienił się w stosunku do oryginału (zresztą tego elementu nie ruszałem w ogóle) i odkryłem coś dziwacznego- to która jednostka będzie się tworzyła niezależnie od wybranej zależy od ...pozycji w menu roboczym GM(nie wiem jak to nazwać;p)

 

Mam 3 istotne w tej sprawie obiekty ułożone w menu w takiej kolejności

 

obj_fighter_button

obj_worker_button

obj_ship_creation_button_parent

 

Niezależnie od tego czy zmienie cokolwiek w GML zawsze po naciśnięciu każdego "buttona" będzie utworzony tylko worker

 

 

obj_worker_button

obj_fighter_button

obj_ship_creation_button_parent

 

Jeżeli zmienię kolejność na taką zawsze będzie się tworzył tylko fighter (bez żadnych innych zmian, tylko przesuwam obj w menu-nic nie ruszam w kodzie)

 

Miał ktoś kiedyś coś podobnego?Bo jak dla mnie magia.Nie słyszałem nigdy o tym żeby ułożenie w menu miało jakikolwiek wpływ na grę...

Odnośnik do komentarza
Udostępnij na innych stronach

W GM:S ułożenie w menu odpowiada za id zasobu. W poprzednich GM id było wg kolejności w jakiej zasoby były dodawane. To niesamowicie ułatwia sporo spraw.

Jeżeli nie wiesz o co chodzi to tłumaczę:

Zmienna object_index zawiera id zasobu dla obiektów. Każdy obiekt będzie mieć różny. Natomiast id zawiera id dla konkretnych instance.

Nazwa twoich obiektów działa tak samo. To 'zmienna' która przechowuje id zasobu. Znając to id (a znamy jego pozycję w drzewku) możemy go używać. Bardzo dobrym przykładem będzie to:

GML
audio_play_sound(choose(so_shot_1,so_shot_2,so_shot_3,so_shot_4,so_shot_5,so_shot_6), 1, 0)
Można zastąpić tym:
GML
audio_play_sound(so_shot_1+irandom(5), 1, 0)
Bo o ile te zasoby są po kolei to GM sprawdzi sobie id pierwszego a potem wylosuje któryś z kolejnych.
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ę...