Master.typeX 2022/03/31 18:40

GMS2:技術的備忘録・バッファセーブその後

どうも、Master.typeXです。
バッファセーブのその後に教わった情報をば
忘れないうちにメモしておこうと思います。

一応前回からの続きなので
軽く目を通して頂けるとわかり・・・
いや、わからん部分が多すぎるがな。

一応前回はこちら

さて、今回はbuffer_seekについてです。

//バッファの読み込み開始
buffer_seek(buff,buffer_seek_start, 0);

これの3つ目の部分をある方から教えてもらったのですが
ここはバッファの読み込み開始位置
らしいでございます。

しかしここからが重要ポイント。
最初てっきりfor文みたいに0から始まる
いわゆるインデックス・・・通し番号と
思っていたのですが全く違いますた。

ここは開始バイト数が入ります。
なんのこっちゃかと最初思いましたが
例えば前回にも書いたこの文。

//バッファ書き込み
buffer_write(buff,buffer_s16,data);

これだと2バイトとして扱われます。
いや、余計なんのこっちゃ
安心しろ、俺も最初わからなかった。

真ん中のバッファの型「buffer_s16」が
16ビット整数という扱いのため
バイトに変換すると2バイトになるということです。
わかんない時はそこはグーグル先生に
「16ビット バイト 変換」と入れると
すぐ答えが帰ってきます。
というかバイト変換まで出来るとかグーグル先生すげぇ。

このバッファの型には色々と種類がありますが
そこはGMS2のマニュアルのバッファの部分を参照のこと。

で、この開始バイト数を入れると
そのバイト数データをずらした状態で
読み込みを開始するようになります。

例えば下記のように保存して

//player id
buffer_write(buff,buffer_s16,global.Ply_ID);

//lastplaystage
global.Ply_Lastplay = _Stage;
buffer_write(buff,buffer_s16,global.Ply_Lastplay);

//Scene
buffer_write(buff,buffer_s16,global.Ply_Scene);

Sceneの部分だけ取り出すには
4バイト分ずらせばいいので

buffer_seek(buff,buffer_seek_start, 4);
global.Ply_Scene = buffer_reed(buff,buffer_s16);

という記述になります。

・・・自分で書いていて
非常に分かりづらいなこれ・・・

ともあれ、こうすればずらせるので
なんとかバッファセーブの実装に
こぎつけそうになりましたと、そういうことで!
(無理矢理)

とりあえず今回はこのへんで!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索