【解決】スクリプトでインスタンス変数

返信する
アバター
冷やっこ
記事: 132
登録日時: 2020年3月04日(水) 22:47

【解決】スクリプトでインスタンス変数

投稿記事 by 冷やっこ »

おはようございます。
何時もお世話になっております、またどうぞ宜しくお願い致します。

インスタンス変数の事でお聞きしたいのですが、VXAceを使用していた頃はイベントコマンドのスクリプトで
インスタンス変数を使用したい時は @ を使用していました。
MVでもイベントコマンドのスクリプトでインスタンス変数を使用したかったので検索をして this. を
使用すればよいのかなとなんとなく解ったので色々試していました。
おおよそやりたい事はできたのですがイベントコマンドのループの中にインスタンス変数を使用すると
予想していなかった数値が表示されてしまいました。

コード: 全て選択

◆スクリプト:this.cnt = 0
◆ループ
  ◆ウェイト:1フレーム
  ◆スクリプト:$gameMessage.add(this.cnt + " です。")
  :     :
  :     :this.cnt ++
  ◆
:以上繰り返し
例えば上記で私としては「0、1、2…」とメッセージに表示されるのかなと思っていたのですが実際には
「0、54、126…」などよく解らない数値が表示されてしまいます。
これを「0、1、2…」と表示させるにはどのように記述したらよいのでしょうか?
どなたかお知恵をお貸し頂けたらありがたいです。
それではどうぞ宜しくお願い致します。
最後に編集したユーザー 冷やっこ [ 2020年4月18日(土) 11:36 ], 累計 2 回
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: スクリプトでインスタンス変数

投稿記事 by 奏ねこま »

「文章の表示」イベントコマンドではなく$gameMessage.addでメッセージを表示させた場合、
メッセージ表示中もイベントは動き続けているので裏でカウントが進んでしまいます。
1ずつ増えるのをメッセージで確認したいなら、以下のどちらかの対応が必要だと思います。

■変数に入れて「文章の表示」イベントコマンドで確認する

コード: 全て選択

◆スクリプト:this.cnt = 0
◆ループ
  ◆ウェイト:1フレーム
  ◆変数の操作:#0001 = this.cnt
  ◆文章:なし, ウィンドウ, 下
  :  :\v[1]
  ◆スクリプト:this.cnt ++
  ◆
:以上繰り返し
■setWaitMode('message')でメッセージ表示中はイベントが進まないようにする

コード: 全て選択

◆スクリプト:this.cnt = 0
◆ループ
  ◆ウェイト:1フレーム
  ◆スクリプト:$gameMessage.add(this.cnt + "です。");
  :     :this.setWaitMode('message');
  :     :this.cnt ++
  ◆
:以上繰り返し
アバター
冷やっこ
記事: 132
登録日時: 2020年3月04日(水) 22:47

Re: スクリプトでインスタンス変数

投稿記事 by 冷やっこ »

奏ねこま様、返信ありがとうございます!
「文章の表示」イベントコマンドではなく$gameMessage.addでメッセージを表示させた場合、
メッセージ表示中もイベントは動き続けているので裏でカウントが進んでしまいます。
なるほど、そういうツクールの仕様だったのですね!
試しにconsole.log()で確認しましたところ「0、1、2…」とカウントされていました!
$gameMessage.addでの表示はconsole.log()の代わりに確認用で使用していたのですがまさか裏で動き続けているとは
思いもしなかったので大変お騒がせ致しました…。
ですが教えて頂いたツクールの仕様の事が解ったのでスッキリ致しました!

対応方法もありがとうございます!
■setWaitMode('message')でメッセージ表示中はイベントが進まないようにする
特にこちらですとイベントコマンド変数も使用せずにメッセージで確認できるので良いですね!
今度からはこちらで確認したいと思います。

奏ねこま様、このたびはお世話になり本当にありがとうございました!
返信する

“MV:質問”に戻る