ページ 1 / 1
【解決済み】mapIDを指定してマップのデータを参照する方法
Posted: 2017年4月15日(土) 01:51
by えむぶ
お世話になります
mapIDを指定してプレイヤーがいないマップのデータを参照できますか?(例 width,height)
$dataMapと$gameMapはプレイヤーがいるマップしか参照できない風に見えます
mapIDを指定する方法があればお教えください
Re: mapIDを指定してマップのデータを参照する方法
Posted: 2017年4月15日(土) 10:52
by フトコロ
こんにちは。
$dataMap は、プレイヤーが居るマップのデータを格納するので
任意のマップデータを参照したい場合は、新たにマップデータを読み込む必要があります。
//Map002.json ファイルの内容を、$dataMap2 に読み込むスクリプト
DataManager.loadDataFile('$dataMap2', 'Map002.json')
⇒$dataMap2は、好きなの名前を付けてください。ただ、既存の$data***と被らないようにしてください。
⇒Map002.jsonの 002 がマップの番号です。
このコードを使って、マップID 2 のマップデータを$dataMap2 に読み込むスクリプトはこうなります。
コード: 全て選択
var mapId = 2
var filename = 'Map%1.json'.format(mapId.padZero(3))
DataManager.loadDataFile('$dataMap2', filename)
なお、使い終わったら読み込んだデータは空にするか削除しておいたほうが良いと思います。
//$dataMap2を空にする
$dataMap2 = {}
//$dataMap2を削除する
delete window.$dataMap2
Re: mapIDを指定してマップのデータを参照する方法
Posted: 2017年4月15日(土) 13:35
by えむぶ
フトコロ様
分かりやすくコードを書いていただきありがとうございます
コードを実行して$dataMap2をコンソールに直に打ち込むとmapId2のデータを表示できました
データの読み込みは碓かに成功しています
しかしスクリプトの中で$dataMap2を参照すると値がnullで参照できません
$dataMapとは違う特殊な参照方法が必要ですか?
分かる方よろしくお願いします
Re: mapIDを指定してマップのデータを参照する方法
Posted: 2017年4月15日(土) 14:19
by フトコロ
えむぶ さんが書きました:しかしスクリプトの中で$dataMap2を参照すると値がnullで参照できません
$dataMapとは違う特殊な参照方法が必要ですか?
データロードは若干時間が掛かりますので、ロードが終わる前に読み込みをしているのだと思います。
下のように、ロードと値参照の間に、ウェイト 1 などをはさむようにすると大丈夫だと思います。
◆スクリプト:var mapId = 2
: :filename = 'MAP' + ('000' + mapId).slice(-3) + '.json'
: :DataManager.loadDataFile('$dataMap2', filename)
◆ウェイト:1フレーム
◆スクリプト:console.log($dataMap2)
Re: mapIDを指定してマップのデータを参照する方法
Posted: 2017年4月15日(土) 14:31
by えむぶ
フトコロ様
お教えいただいた通りにウェイトを挟むと参照できました
参照後の削除方法も大変参考になりました
解決までお付き合いいただき誠にありがとうございました