見出し画像

【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/




この記事が気に入ったらサポートをしてみませんか?