ページ 1 / 1
【解決】$game_actorsを全件取得したい
Posted: 2022年5月14日(土) 02:13
by much
actors = $game_actors
for actor in actors
p actor.name
end
上記のように、ループで全件取得しようとするとエラーが起きてしまいます
$game_actorsは配列ではないのでしょうか?
Re: $game_actorsを全件取得したい
Posted: 2022年5月14日(土) 11:56
by faida
こんにちは。
$game_actorsは配列ではなく、Game_Actorsというオブジェクトとなっております。
スクリプトエディタで定義されており、中身を見ると「intialize」と「[](actor_id)」だけが実装されています。
コード: 全て選択
#==============================================================================
# ■ Game_Actors
#------------------------------------------------------------------------------
# アクターの配列のラッパーです。このクラスのインスタンスは $game_actors で参
# 照されます。
#==============================================================================
class Game_Actors
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
@data = []
end
#--------------------------------------------------------------------------
# ● アクターの取得
#--------------------------------------------------------------------------
def [](actor_id)
return nil unless $data_actors[actor_id]
@data[actor_id] ||= Game_Actor.new(actor_id)
end
end
$game_actors[n]でIDがnのアクターを参照するとき、
・すでにGame_Actorとして作成していればそれを
・作成していなければ新たにGame_Actorを
参照するということですね。
やりたいことが「全アクターの名前の参照」のようなデータベース上のものであれば、
muchさんの「actors = $game_actors」を「actors = $data_actors」とすればよいと思いますが、
そうでなく、例えば「パーティから外れているアクターも含め、全アクターの今の武器を見る」といった、
ゲームの進行に応じて変わるようなものであれば、
ちょっと工夫がいるかと思います。
(例:eachメソッドを改めて定義する、
$game_variablesのどれかに今まで仲間にしたアクターのIDを保存する、等)
Re: $game_actorsを全件取得したい
Posted: 2022年5月14日(土) 18:20
by much
JavaScriptであれば、「console.log」。
PHPであれば「vardamp」と言ったように、
変数の値を参照し、ログに表示することができると思うのですが、RGSS3には、そういった機能は付いていないのでしょうか?
pだと、改行されなかったりして、非常に見づらいです。
Re: $game_actorsを全件取得したい
Posted: 2022年5月14日(土) 21:34
by faida
他言語に詳しくないので見当違いだったら申し訳ありませんが、
おそらく、Game_Actors、Game_Actor、RPG::Actorのどれかをp命令で出力しようとして、
そのインスタンス変数の羅列、あるいは配列変数の中身が改行されない
(「console.log」「vardamp」は改行される)ということなのでしょう。
結論から言うと、「該当するメソッドはない」と思われます。
p命令はinspectメソッドを用いて出力されますが、配列は改行なしで出力されるのが標準となっています。
また、改行はp命令ごとに行われるため、基本的にはp命令を複数行う形でしか、
改行を含む形で出力することはできないと思います。
Re: $game_actorsを全件取得したい
Posted: 2022年10月23日(日) 11:22
by much
そうなのですね…汗
ありがとうございます~!