nilにidがある?(RGSS・RGSS2共通)

Rubyのオブジェクトは基本的に全てidメソッドを持っています。 nilもNilClassのオブジェクトなのでnil.idは値(4)を持ちます。

なぜか分からないけど4が出てくるというときにはコレを疑った方がいいかもしれません。

例)
members = [$data_actors[1], $data_actors[5], $data_actors[7]]
p members[0].id
p members[1].id
p members[2].id
p members[3].id
実行結果は
1
5
7
4

となります。存在しないはずのmember[3]のidにアクセスしてもエラーになりません。 member[3]は無効・偽等をあらわす「nil」の値が返るのですが、「nil.id」自体が値を持っているので エラーにならずにそのまま処理されてしまいます。「nil」自体はオブジェクトなので他にもいくつか パラメータを持っています。そもそもそういう場所に「nil」が来る事自体が想定外(バグ)なのですが、 実際よく起こるバグですし「.id」もよく使うパラメーターなので結構ハマります。 慎重を期すなら「object.nil?」(nilなら真)等でチェックした方がいいかもしれません。