まず、下記の処理でcsvファイルを二次元配列として読み込み、
各要素を数値型へ変換してから変数84へ代入します。
コード: 全て選択
//test_input.csv読み込み
//CSVファイルを読み込む関数getCSV()の定義
function getCSV(){
var req = new XMLHttpRequest();
req.open("get", "csv/test_input.csv", true);
req.send(null);
req.onload = function(){
convertCSVtoArray(req.responseText); // 渡されるのは読み込んだCSVデータ
}
}
// 読み込んだCSVデータを二次元配列に変換する関数convertCSVtoArray()の定義
function convertCSVtoArray(str){ // 読み込んだCSVデータが文字列として渡される
var result = []; // 最終的な二次元配列を入れるための配列
var tmp = str.split("\n"); // 改行を区切り文字として行を要素とした配列を生成
// 各行ごとにカンマで区切った文字列を要素とした二次元配列を生成
for(var i=0;i<tmp.length;++i){
result[i] = tmp[i].split(',');
}
//項目名削除
result.splice(0,1);
//配列を数値型へ型変換
for (let i = 0; i < result.length; i++) {
for (let j = 0; j < result[0].length; j++) {
result[i][j] = Number(result[i][j]);
}
}
//最後の行がゴミになっているので除去。
result.splice(result.length -1,1);
//csvから読み込んだ配列を変数84へ代入。
$gameVariables.setValue(84,result);
}
getCSV(); //最初に実行される
コード: 全て選択
result = $gameVariables.value(84);
for (let i = 0; i < result.length; i++) {
for (let j = 0; j < result[0].length; j++) {
console.log("v84:result["+ i +"] = " +result[i]);
}
}
https://youtu.be/LwxInj_vVmM
これらを別々のイベントに分けて実行した場合、下記の動画のようになります。
https://youtu.be/QGVL5cq7bV8
別々のイベントとして実行すればそれぞれ1回ずつでも問題なく変数84への代入がうまくいっていることが確認出来るのですが、
続けて実行する場合は、2回実行しないと代入が確認出来ません。
ここから察するに、イベントが終了するときになされる何らかの処理を経なければ、代入が反映されないと思われます。
上記2つの処理を2つのコモンイベントに分けて1つのイベントで実行した場合も、1つ目の動画と同じ結果になりました。
1つ目の処理をコピペして3回連続で回してから2つ目の処理を実行しても同じでした。
この代入をすぐに反映させる方法が見つからず、困っております。
$gamePlayer.refresh()や$gameMap.requestRefresh()など更新処理っぽいものは見つけたのですが、$gameVariables.Refresh()みたいなやつは見つかりませんでした。
動画撮影に使ったプロジェクトファイルは、不要そうなファイルをなるべく削ってから下記の通り共有しております。
https://drive.google.com/file/d/1cuiOKn ... share_link
変数84への代入をすぐに反映させる方法がございましたら、ご教示のほど宜しくお願い致します。