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:
@ - 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.