GameMaker 日本語掲示板

【Feather】なぜこの警告が出るんでしょうか?

8 コメント
views
16 フォロー

下記のプロジェクトでFeatherがこの警告を出します。

W GM2016 Instance variable 'myname' declared outside of Create event, declare with 'var' or move to Create event. obj_test : Global Left Pressed 1:1

mynameがCreateイベントで定義されてないという警告です。
ためしにobj_testのCreateイベントで定義してみると警告は消えます。
しかし、mynameはStruct MyDataの変数でありobj_testの変数ではありません。
なんでこの警告が出るんでしょうか?
私がStructのことをちゃんと理解してないのかもしれないですが、Structで使う変数ってそれを持つオブジェクトで定義するべきなんでしょうか?

object obj_test

Createイベント

mydata = undefined;

test = function()
{
	var _data = {
		name1 : "taro",
	}
	
	mydata = new MyData(_data);
}

GlobalLeft Releasedイベント

test(); // ← ★ここに警告が出ます

script MyData

/// @param {struct} data
function MyData(_data) constructor
{
	myname = _data.name1;
}
asa
作成: 2023/06/04 (日) 15:10:04
最終更新: 2023/06/04 (日) 15:16:58
通報 ...
1
生高橋 2023/06/05 (月) 12:59:41

じぶんのところで再現してみましたが、警告はでませんでしたね。

バージョンは次の通りです。
IDE v2023.4.084
Runtime v2023.4.0113

2
asa 2023/06/05 (月) 15:58:04 修正

検証ありがとうございます!

私のバージョンも同じで
IDE v2023.4.084
Runtime v2023.4.0113
です。

PCの環境が関係してるんでしょうかね?

?[画像1](//pic.zawazawa.jp/files/gamemaker_jp/643d33f6ad979.png)

3
生高橋 2023/06/05 (月) 18:38:09

再度同じ条件で試してみましたが、たしかにその警告でました!
ただ、これに関しては確かに謎ですね...
単純なバグっぽいきがしますけれど

4

出ましたか!
再現性があることが分かっただけでもちょっともやもやが晴れました
ありがとうございます!

5

構造体の引数にある_dataを別の名前にして、test()を消してから、またtest()を入れるとどうなるでしょうか?
こちらだと、上記の方法で警告は消えました。

Featherの警告の認識が微妙という気がします。

6

検証ありがとうございます!

構造体MyDataの_dataを別の名前にしましたが私の環境では消えませんでした。
画像1

一回警告が消えた後でo_testのCreateイベントを適当にいじって更新させるとどうなるでしょうか。また警告出ませんか?
Featherのスキャンのタイミングの関係で消えたり出たりするようなので。

7

Createイベントを編集してみたら、見事に警告が復活しました。

なんとも謎と思える動きですね。

8

謎ですね。
たぶんこれと同じ原因のFeatherの問題をバグ報告しましたので、今後の修正を待ちたいと思います。