Posted at

Mac版Unityでエディタ上のドラッグの挙動が2017.4.28から変わっていた

少々古い話になるが、まぁLTSとか現場によっていろいろなバージョン使っていると思うので参考になればと。

要旨:MacのUnity2017.4.28以前でドラッグのパフォーマンスが気になる場合はアップデートすると良いかも


環境


  • OS: macOS Mojave 10.14.5

  • Unity: 2017.4.8f1, 2017.4.28f1 (64bit)


検証用コード

using UnityEngine;

using UnityEditor;

public class TestWindow : EditorWindow
{
[MenuItem("Window/TestWindow")]
public static void Open()
{
var window = GetWindow<TestWindow>("Test Window");
window.Show();
}

private void OnGUI()
{
switch (Event.current.type)
{
case EventType.DragUpdated:
case EventType.DragPerform:
case EventType.DragExited:
Debug.Log(Event.current.type.ToString());
break;
case EventType.MouseDrag:
Debug.Log(Event.current.type.ToString());
DragAndDrop.PrepareStartDrag();
DragAndDrop.paths = new[] { "/" };
DragAndDrop.StartDrag("test drag");
Event.current.Use();
break;
}
}
}


変更前の挙動

例えばUnity2017.4.8f1で検証コードのウィンドウの中でドラッグを行うと、以下の2パターンが発生する。


パターン1



  • MouseDragイベントがドラッグ中も継続的に発生する

  • エディタ拡張が非常に軽いコードでも動作がカクつく

rec1.gif


パターン2

カーソルを動かしながらドラッグを始めるとこちらのパターンが発生する様だ。



  • MouseDragイベントはドラッグ開始時だけ

  • スムーズにドラッグできる

  • ドラッグが終了してからログが出る

rec2.gif


変更後の挙動

Unity2017.4.28のリリースノートに


Editor: Fixed Drag and dropping doesn't always work. (1136897)

Editor: Fixed Mouse move events affect Editor UI performance. (973842)


という項目がある。このどちらかによってドラッグの処理が改善されたらしく、一貫して下のような挙動になっている。



  • MouseDragがドラッグ中に発生しない

  • ドラッグはほぼスムーズ

  • ログはドラッグ中に出続ける

rec3.gif