Skocz do zawartości

Wartosci lokalne...


fino25

Rekomendowane odpowiedzi

Witam!

 

Pewnie myslicie sobie: "Co on ciągle z tymi wartościami...".

 

Lecz muszę napisać ten temat, ponieważ umiem to zrobić (wiem jak), ale nurtuje mnie pewna rzecz (właśnie dlatego piszę).

 

Chciałbym się nauczyć GM'a i żeby wszystko było dla mnie zrozumiałe, mam pytanie:

 

Jeśli mam np.

 

Object Create:

 "global.amunicja = 60;"

Alarm0: [KLOCEK "IF VAR..."] "Variable: global.amunicja, Value: 60, Operation: Equal to"//No i tutaj kolejne akcje//

 

Wszystko działa... Jednak jeśli mam wartość lokalną:

 

Object Create: [code] "local.amunicja = 60;"

Alarm0: [KLOCEK "IF VAR..."] "Variable: local.amunicja, Value: 60, Operation: Equal to"//No i tutaj kolejne akcje//

 

Jeśli tak zrobię i uruchomię grę, pisze mi coś w tym stylu: Unknown Variable "local.amunicja".

 

Ale jeśli wartość amunicja zadeklaruję poprostu:

 

Object Create: [code] "amunicja = 60;"

Alarm0 [KLOCEK "IF VAR..."] "Variable: amunicja, Value: 60, Operation: Equal to"//No i tutaj kolejne akcje//

 

To wtedy wszystko działa! Więc moje pytanie brzmi...

 

PO CO ISTNIEJE TAKIE COŚ JAK "local.", jeśli bez tego "local." wszystko działa, a jak już przed wartością wpiszę "local." to nie działa i wyskakuje błąd, że program nie może wyszukać wartości... Może "local." działa tylko w samym kodzie, a nie w klockach? Jeśli tak, to jak napisać kodem (zamiast klocka "IF VAR..."):

 

"Jeśli wartość lokalna "amunicja" = 60 to ustaw np. szybkość obiektu (np. obj_bohater) na 100..."

 

Bardzo byłbym wdzięczny za odpowiedź, sorki, za zaśmiecanie forum, ale naprawdę taka mala rzecz, a mnie nurtuje od kilku dni...

Odnośnik do komentarza
Udostępnij na innych stronach

No to tak. Wartości lokalne są definiowane dla obiektu w ktorym dana wartość jest tworzona. Wyjątkiem tu jest wpisanie prefixu global , other lub prefixu nazwy obiektu. Chodzi tutaj o to że gdy wpisywałeś przed nazwą zmiennej local. Game Maker "zrozumiał", że ma zmienić, lub stworzyć wartość zmienną o nazwie amunicja w obiekcie local. Mam nadzieje, że to pomogło Ci w zrozumieniu ;) Jak coś to daj znać na numer 3535931 to postaram Ci pomóc.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Dziwne, poniewaz nie jest to udokumentowane w helpie, ale dziala. Znaczy sie nie w takim przypadku jak fino napisal, ale zadeklarowanie poprzez przedrostek local, a potem odwolanie sie do niej z tego samego skryptu nie powoduje bledu nieznanej zmiennej. To tak jakby local.zmienna dzialala tak samo jak var. Moze fino nie wie o co chodzi z tym var, wiec juz tlumacze:

 

global.zmienna = 0; //zasieg globalny

zmienna = 0; //zasieg lokalny

 

var zmienna; //zasieg lokalny dla danego okna skryptu.

zmienna = 0;

 

Ostatni sposob deklaracji poprzez slowo var powoduje, ze zmienna bedzie widziana tylko dla tego skryptu a nie calego obiektu, przydaje sie np. przy tworzeniu zmiennych uzywanych w pętlach np. i j k ... a nie chcemy by obiekt przechowywal te zmienne caly czas. Beda one usuwane po zakonczeniu uzycia skryptu. Ale najczesciej sie je uzywa w skryptach uzywanych jako funkcje, wtedy tym sposobem nie dopuszczamy nowo zadeklarowych zmiennych w funkcj do wycieku do obiektu, ktory odwolal sie do tego skryptu - funkcji.

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ę...