Unity2018でもInspectorウィンドウでSliderをいじると警告が……

Unity2018でもInspectorウィンドウでSliderをいじると警告が……

Sliderを使っているとき、InspectorからValueを変更することもあります。というかSliderを使うなら値の設定はほぼ確実にすると思うんだけど、そのとき大量に以下の警告が出ます。

————————————-

SendMessage cannot be called during Awake, CheckConsistency, or OnValidate
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

————————————-

以前UnityのIssuTrackerで確認したところ、5.5で治ったけど5.6で再発するようになった、なんて書かれていました。

このブログでもチュートリアルの中でこのメッセージに行き当たったので、実は取り上げていたんですよね。

当時のバージョンはUnity2017.4だったので、それから直ってるかなーなんて期待もしましたが、Unity2018.2でも変わらず。

ぐぬぬ……。

なお、コンソールが埋め尽くされる以外の実害はなさそうなので、無視しても良さそうです。

 

環境

macOS 10.13 High Sierra

Unity2018.2.2f1

再現方法

簡単に再現方法を。

[UI] -> [Slider]を選択し、シーンにSliderを追加します。

Sliderを追加する
Sliderを追加する

 

追加されたSliderを選択して、InspectorウィンドウでValueを変更します。適当に左右に動かせばOKです。

動かしてみよう
動かしてみよう

 

なんということでしょう。大量に警告が出力されるではないですか。

大量の警告が!!
大量の警告が!!

 

警告は全て以下のメッセージです。

————————————-

SendMessage cannot be called during Awake, CheckConsistency, or OnValidate
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

————————————-

動かすたびに表示されるので、地味に気になります。右の数値フィールドでダイレクトに値を指定すれば出てこないので、一応の回避は可能。

 

他の事例

Issue Trackerで確認した他の事例は以下の通り。

ゲームプレイ中に出力される

Unity2017.2でFixedになっているけど、この記事のメッセージと同じものがまだ出ているみたい。

このIssueに投稿されたコメントを見るに、2018.1でも起きている様子。

Sliderの向きを変えると出力される

こちらはUnity2018.1で投稿されたもの。

Directionを変える
Directionを変える

 

SliderやScrollbarのDirectionを変更するとメッセージが出力されます。

Unity2018.2で実際にやってみたけど同じようにメッセージが出て来ました。でも出力元がちょっと異なるのね。

————————————-

SendMessage cannot be called during Awake, CheckConsistency, or OnValidate
UnityEditor.PopupCallbackInfo:SetEnumValueDelegate(Object, String[], Int32)

————————————-

結局どうすべきか

実害がないので、メッセージは無視して良いと思います。UnityEngineの内部から出てるっぽいのでいじれないですし。

どうしても気になるなら以下の行動を避けると吉。

  • SliderのValueをGUIのスライダーを使って変更する
  • SliderのDirectionを変更する
  • ScrollbarのValueまたはSizeを変更する
  • ScrollbarのDirectionを変更する

この辺を避けつつ、Unityさんが直してくれるのを祈るのです。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?