GameMaker 日本語掲示板

【解決】outputに「Attempting to add instance 103526 multiple times to a layer」という表示がでる

2 コメント
views
17 フォロー

【バージョン】
IDE v2024.0.137
Runtime v 2024.4.0.168

【問題】
実行するたびにoutputに次のような表示がでてきます

Attempting to add instance 103526 multiple times to a layer

同じレイヤーに同じインスタンスID(103526)のオブジェクトが複数存在しているとのことです。
同じインスタンスIDが複数あるとわかりにくいバグがでてくるのでこれの解決策を共有しておきます

【原因】
どうやらRoomEditorにはRoom内のオブジェクトをコピー&ペーストをするとたまに全く同じインスタンスIDのオブジェクトがコピーされてしまうバグがあるようです。
厳密に確認はしていませんが、複数のオブジェクトをコピーした時にでやすいなと感じます。

【解決】
テスト用のオブジェクトのCreateEventで以下のコードを呼び出して該当のインスタンスIDをもつオブジェクトの座標を表示し、一個一個新しいオブジェクトに交換しました。
幸いそこまで大量の重複がなかったのでこれでなんとかなりました。

//全オブジェクトのチェック
with(all)
{
    if(id == 103526 || id == 103527 || id == 103528)
    {
        show_debug_message($"id : {id}, x : {x}, y : {y}");
    }
}
生高橋
作成: 2024/05/20 (月) 09:38:00
通報 ...
1

以前にもあった致命的なバグですがまた再発したんでしょうか

動作確認すらしてないものですが、こういうのでチェックできますかね

// 重複するinstance idを見つける
function dev_check_duplicate_instance_id()
{
	var duplicate_str = "";
	var id_ary = [];
	
	with (all)
	{
		if (array_get_index(id_ary, id) != -1) duplicate_str += $"{id}, ";
		array_push(id_ary, id);
	}
	
	if (duplicate_str == "")
	{
		show_message("重複idはありません");
	}
	else
	{
		show_message($"重複id: {duplicate_str}");
	}
}
2
生高橋 2024/05/21 (火) 01:36:54

いけると思います!