Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Dodawanie nowych zmiennych globalnych
Autor Wiadomość
Melvin 




Preferowany:
RPG Maker XP

Ranga RM:
1 gra

Pomógł: 35 razy
Dołączył: 23 Paź 2009
Posty: 1063
Wysłany: Nie 17 Lip, 2011 13:42
Dodawanie nowych zmiennych globalnych
Dodawanie nowych zmiennych globalnych


Co to jest? Co robi?
Zmienna globalna, to zmienna dostępna w każdej klasie.
Zmienne globalne [RMVX]

Taką zmienną, może być "$zmienna", lub zmienna przyporządkowana do klasy.
W tym wypadku Game_System.

Jak się używa?
Zmienną z np Game_System, można pokazać tak:
Kod:
print $game_system.timer

Wyświetli wartość zmiennej "timer" w okienku powiadomienia(Print i Raise).
Aby dodać zmienną do Game_System, wystarczy dopisać poniższy kod, pod "class Game_System":
Kod:
attr_accessor :NAZWA_ZMIENNEJ

Następnie w definicji initialize(def initialize) dodajemy początkową wartość naszej zmiennej:
Kod:
@NAZWA_ZMIENNEJ = 0

@ - Zmienna klasowa. (Można ustawić na globalną($), jednak nie ma sensu, bo i tak jest wywoływana przez Game_System.)
NAZWA_ZMIENNEJ - Nazwa Twojej zmiennej.
Zamiast "0", można wstawić dowolną wartoś, lub jej brak(nil). Tablicę([]) itp.

Jeśli chce się dodać zmienną do np Game_System, nie "grzebiąc" w docelowej klasie(Game_System), można zaliasować(Aliasowanie) klasę, lub przepisać ją i definicję, którą chcemy zmienić(initialize).

Przykład
Sposób z aliasowaniem klasy Game_System:
Kod:
class Game_System
  attr_accessor :NAZWA_ZMIENNEJ # Taka sama jak niżej
  alias ALIAS_NAZWA initialize
  def initialize
    ALIAS_NAZWA
    @NAZWA_ZMIENNEJ = 0 # Wartość początkowa tej zmiennej
  end
end

Można też przepisać całą definicję i dodać wartość naszej zmiennej. Sposób jest nie praktyczny, ponieważ zajmuje więcej miejsca i nie jest wcale łatwiejszy od aliasowania.

Game_System z RPG Maker'a XP: (Jednak zasada jest zawsze taka sama.)
Kod:
class Game_System
  attr_accessor :NAZWA_ZMIENNEJ
  def initialize
    @map_interpreter = Interpreter.new(0, true)
    @battle_interpreter = Interpreter.new(0, false)
    @timer = 0
    @timer_working = false
    @save_disabled = false
    @menu_disabled = false
    @encounter_disabled = false
    @message_position = 2
    @message_frame = 0
    @save_count = 0
    @magic_number = 0
    @NAZWA_ZMIENNEJ = 0
  end
end

Chyba na pierwszy rzut oka widać, która metoda jest prostsza.
________________________
MelvinClass:
Spoiler:

 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene