もうそろそろVX Aceなるものが発売されるというのに……未だVXに奮闘中です。
Aceもおもしろそうだけど、まあしばらくはVXで遊ぶことにします。
して本題。
RGSSをいじっていると題名のように同じ変数なのに命令形式が違う場合があるのです。
最初の頃はこれにかなり悩まされました。「何で違うんだろう」って。
で、適当に使っていたのですが、いかんせんうまく動かない。
それにはこんな理由があったんですね。
↓↓↓↓↓↓
簡単にまとめよう
@index =
はローカル変数 @indexを変更しているだけ
index = , self.index =
は同じクラス内にメソッドが設けてあり、そのメソッドを実行している。
もしくはスーパークラスのメソッドを呼び出している。
def index=(v)
xxxxxx
xxxxxxx
@index = v
end
みたいな感じになっていると考えられる。この場合は@indexの変更だけではなく、それ以外の処理も行う事ができる。使い方はメソッドの中身次第ってところかと。なので、たとえば
@percentというローカル変数があり、これは 0~100 までの整数にしたい、という場合はメソッドで
def percent=(v)
@percent = v
@percent = 100 if @percent > 100
@percent = 0 if @percent < 0
end
と設定して数値を設定するときに percent += 1 とか、そんな感じにすればいい。
これを知ったのは最近だったりもする……。
恐らくwindowクラスのopennessあたりはこのメソッドを使っているかと考えられます。
ちなみにRGSS2内では max , min メソッドがよく使われています。上の文をmax,minを利用して書く事もできますね。
def percent=(v)
@percent = [ [ v , 100].min , 0].max
end
違ってたらスミマセン
追記:self.index = とindex = は微妙に違うらしい。
index=ってやるとエラーになりました orz。
PR
COMMENT