【GameMaker】構造体のコピー【Struct】
データをまとめるために、構造体を使うことがある。
構造体について - GameMakerマニュアル
構造体のインスタンス(A)から、同じ構造体の別のインスタンス(B)を作りたいとき、下記のように渡すと、参照渡しになる。
参照渡しなので、Bの値を書き換えると、元のAの値も書き変わってしまう。
// 構造体 Enemyがあるとして
var _fairyA = new Enemy();
// _fairyAをもとに、_fairyBを作る
var _fairyB = _fairyA;
// _fairyBのisSleepingも、trueに書き変わってしまう
_fairyA.isSleeping = true;
対応
構造体にcopy関数を作り、呼び出す。
function Enemy() constructor {
isSleeping = false;
static copy = function() {
var _newInstance = new Enemy();
_newInstance.isSleeping = isSleeping;
return _newInstance;
}
}
var _fairyA = new Enemy();
// 呼び出す
var _fairyB = _fairyA.copy();
参考資料
Copying a struct
https://www.reddit.com/r/gamemaker/comments/104zors/copying_a_struct/
この記事が気に入ったらサポートをしてみませんか?