【RGSS3】外部ファイル内の変数の値を取得したい

aiueo
記事: 50
登録日時: 2016年5月09日(月) 23:33

【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by aiueo » 2023年8月14日(月) 14:56

【RGSS3】外部ファイル内の変数の値を取得したい

■まず以下のようにやってみました

1.
スクリプトエディタの適当な場所に行を挿入
左下の名前をtest123に
右側は下記のように書く

File.open("test123.txt") { |fff|
save_data(fff.read, "test123.rvdata2")
}

2.
Game.exeと同じ場所に
メモ帳でファイルtest123.txt作成
下記のように書く

$array_test123=[1,12,123]
$array_test123b=["a","bb","ccc"]

3.
テストプレイ(F12)実行
test123.rvdata2がtest123.txtと同じ場所に出来る
test123.rvdata2をDataフォルダ内へ移動

4.
スクリプトエディタのtest123の記述を
下記の様にコメントアウト又は削除

#~ File.open("test123.txt") { |f|
#~ save_data(f.read, "test123.rvdata2")
#~ }

5.
コメントアウト又は削除した記述の代わりに

yomidasi_test123=load_data("Data/test123.rvdata2")
p yomidasi_test123

6.
テストプレイ(F12)実行
コンソールに下記のように1行で表示されます

"$array_test123=[1,12,123]\n$array_test123b=[\"a\",\"bb\",\"ccc\"]"

7.
p $array_test123と書いて実行すると
nil
p $array_test123[1]と書いて実行すると
undefined method `[]' for nil:NilClass
と出ます

■質問
スクリプトエディタで
p $array_test123[2]
p $array_test123b[1]
とか書いて123やbbを表示するなど
外部ファイル内の変数の値を取得するにはどうすればいいでしょうか

以上よろしくお願いいたします

名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: 【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by 名無し蛙 » 2023年8月14日(月) 16:59

aiueo
記事: 50
登録日時: 2016年5月09日(月) 23:33

Re: 【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by aiueo » 2023年8月14日(月) 22:48

名無し蛙 様、ありがとうございます

Data/test123.rvdata2を読み込んだ
yomidasi_test123から
evalを使って中の変数を取り出そうと色々やってみましたが出来ませんでした
例えば$array_test123[2]を取得するにはどうすればいいでしょうか
名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: 【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by 名無し蛙 » 2023年8月14日(月) 23:55

aiueo さんが書きました:5.
コメントアウト又は削除した記述の代わりに

yomidasi_test123=load_data("Data/test123.rvdata2")
p yomidasi_test123

このロード直後に使用すれば意に沿う結果になると思いますよ

コード: 全て選択

yomidasi_test123=load_data("Data/test123.rvdata2")
eval yomidasi_test123
p $array_test123[2]
aiueo
記事: 50
登録日時: 2016年5月09日(月) 23:33

Re: 【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by aiueo » 2023年8月15日(火) 11:47

■出来ました
yomidasi_test123=load_data("Data/test123.rvdata2")
eval yomidasi_test123
p $array_test123[2] #=>123
できました!ありがとうございます
二次元配列もいけました

■追加の質問
今までスクリプトエディタにmap123とか大きな二次元配列を貼り付けてたんですが
重さとかメモリとかで外部ファイルにした方がいいのかと思って試行錯誤してます

もしかしてyomidasi_test123=load_data("Data/test123.rvdata2")の時点で
メモリに全部読み込まれてるから別のrvdata2ファイルにする意味無いんでしょうか…

以上よろしくお願いいたします
名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: 【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by 名無し蛙 » 2023年8月15日(火) 14:21

aiueo さんが書きました:■追加の質問
今までスクリプトエディタにmap123とか大きな二次元配列を貼り付けてたんですが
重さとかメモリとかで外部ファイルにした方がいいのかと思って試行錯誤してます

もしかしてyomidasi_test123=load_data("Data/test123.rvdata2")の時点で
メモリに全部読み込まれてるから別のrvdata2ファイルにする意味無いんでしょうか…

以上よろしくお願いいたします

無いですね。
自分はVSCodeを利用する為にScripts.rvdata2を***.rbに分解、再結合するスクリプトを組みましたけど
あくまでも管理・編集し易さが目的で実行速度やメモリ効率に寄与するものではないです。
VXAceで作れる規模の作品なら、むしろゲーム開始時に全てのデータをロードした方が面倒が無くて良いでしょうね。
aiueo
記事: 50
登録日時: 2016年5月09日(月) 23:33

Re: 【RGSS3】外部ファイル内の変数の値を取得したい

投稿記事by aiueo » 2023年8月15日(火) 15:42

分かりました
今回すごく参考になりました
名無し蛙 様、ありがとうございました!

“VX / Ace:質問” へ戻る