2013年11月30日土曜日

Unity Editor : カスタムウィンドウをマウス位置に表示(PRO)

UnityEditor上で、
マウスの位置にパレットを表示したい

Unity PROなら以下の作業で可能でした


手順

1.C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0
のなかにある"System.Windows.Forms.dll"ファイルを
Assets/Pluginsの中に放り込む

2.以下のコードでマウスの位置を取得する

int x = System.Windows.Forms.Cursor.Position.X;
int y = System.Windows.Forms.Cursor.Position.Y;


おそらく、WindowsAPIを利用してますので、
Windows限定でないかと思います。
Macの方はわかりません

これと、ショートカットを組み合わせると、
マウスの位置にwindowを出現する事が可能になります。

PRO限定ですが orz


サンプル


using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.Collections;


public class ttCustomTools : EditorWindow
{

 [MenuItem("TERA Tools/ ttCustomTools %t")]
    public static void Open()
    {
        ttCustomTools window = EditorWindow.GetWindow();
  
  //Windows System
  int x = System.Windows.Forms.Cursor.Position.X;
  int y = System.Windows.Forms.Cursor.Position.Y;
  window.position = new Rect( x - 100, y - 20, 250, 50);
   
        window.Show();
    }
 

 
    void OnGUI()
    {
   
  //ボタンと他のスクリプトの起動
  if( GUILayout.Button ("Create SimplePlane") )
  {
   Debug.Log("CreateSimplePlane");
   CreateSimplePlane sp = new CreateSimplePlane();
   sp.Create();
   Debug.Log("CreateSimplePlane  Finish");
  }
  
  if( GUILayout.Button("Create Particle") ){
   Debug.Log ("Create Particle system");
   CreateShurikenParticle sp = new CreateShurikenParticle();
   sp.Create();
  }
    }


参考

how to enable System.Windows.Forms for drag and drop functionality with outside applications


■余談
開発の話か、開発ツールの開発の話かわかりにくいw

開発しにくいですw

0 件のコメント:

コメントを投稿