強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unityのエディタ拡張についての良記事「How to Add Your Own Tools to Unity’s Editor」

How to Add Your Own Tools to Unity’s Editor | Activetuts+
http://active.tutsplus.com/tutorials/workflow/how-to-add-your-own-tools-to-unitys-editor/

Unity 3.5で動作しない部分

ここに記載されている通りに試した所、Unity 3.5だと GridUpdate(SceneView sceneview) の以下の EditorUtility を使っている部分でWarningが発生して上手く動作しませんでした。

        GameObject obj;
        Object prefab = EditorUtility.GetPrefabParent(Selection.activeObject);
 
        if (prefab)
        {
            obj = (GameObject)EditorUtility.InstantiatePrefab(prefab);
            obj.transform.position = new Vector3(0.0f, 0.0f, 0.0f);
        }

こちらは以下の様に PrefabUtility に置き換えると正しく動作しました。

	        Object prefab = PrefabUtility.GetPrefabParent(Selection.activeObject);
	        if (prefab)
	        {
	            obj = (GameObject)PrefabUtility.InstantiatePrefab(prefab);
	            obj.transform.position = new Vector3(0.0f, 0.0f, 0.0f);
	        }

マウスカーソルの座標

マウスカーソルの座標はこの様なプログラムで取得可能。Y座標は下方向がプラス。

	void GridUpdate(SceneView sceneview)
	{
		Event e = Event.current;
		Debug.Log (string.Format("{0:F}, {1:F}", e.mousePosition.x, e.mousePosition.y));
	}

関連情報

Unityのエディタ拡張について丁寧に解説されているスライド「Extending the Unity Editor」 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20120210/1328884599