Editor拡張
ウインドウ上に通知メッセージを表示する。 ↓こういうヤツ EditorWindow.ShowNotification() を呼び出して表示する。 通知自体は大体5秒位で自動的にフェードアウトする。フェードアウトする時間が指定出来ないのがちょっと残念だけど、すぐ消したい場合は、…
UnityでEditor拡張機能を作っていると、LabelFieldやTextFiledなどGUIでwidthが足りなくて見きれてたりして、何て書いてあるか分からない時がある。 windowの横幅を取得してその何%とかで指定すれば割と動的にできる。 今回はマウスでドラッグしてTextField…
ディレクティブである UNITY_3_5_1 UNITY_EDITOR とかは EditorUserBuildSettings.activeScriptCompilationDefines で取得できる。 Edit>Project Settings>PlayerのScripting Define Symbolsで設定しているのも取得できる。 各プラットフォームごとに取得…
Editor拡張でボタンなどに使用する画像のサイズを変更する方法。 EditorGUIUtility.SetIconSize を使用してサイズを変更する。引数には変更したいサイズのVector2を渡す。 こんな感じにボタンにも好きな画像サイズで載せられる。 引数にVector2.zeroを指定す…
サーバーを使ったアプリなどを作っていると、ローカル環境に立てたサーバーに対して接続する時などがある。 IPアドレスを指定して接続したい場合、人によってIPアドレスが違うのでチームで開発していると何かと面倒なのでスクリプトからIPアドレスの取得を試…
「EditorWindowのタイトルにアイコンをつける」を見て、 EditorWindowに好きなアイコンを付けれるという事なので試してみた。 こんな感じになり、かなり見やすくなる。 「Assets/Editor Default Resources/Icons/」配下にタイトル名と同じ名前のpng画像を入…
シーンをメニューから開く機能。メニューにシーンを追加するのも自動化してみた。 こんな感じにメニューに追加される。 メニューからも再作成できるけど、InitializeOnLoadで自動で更新される。
Unityが標準で持っている?アイコンを取得してみた。 EditorGUIUtility.Loadを使ってパスを指定してTextureを取得する。 Texture tex = EditorGUIUtility.Load("icons/d_BuildSettings.Android.png") as Texture2D; パスは公開されてはいないと思うのでUnity…
EditorApplication.ExecuteMenuItemを使うとEditorのメニュー項目を呼び出せる。 AssetStoreのWindow、NGUIのPanel Toolを表示するサンプル。 例 http://docs.unity3d.com/Documentation/ScriptReference/EditorApplication.ExecuteMenuItem.html
ボタンに画像を使ってみる。 GUIContentを使えば画像と文字をボタン化できる。 ラベルが必要なければ、直接Textureを渡せばOK。 こんな感じのことが出来る。
TextFieldのラベルにアイコンを使うサンプル。 前回のファイルアイコンを取得するソースを利用して作ってみた。 こんな感じになる。 GUIContentを使うだけでできる。レイアウトは自由に変えられないけど単純なものならコレで十分かな。
エディタ拡張でファイルのアイコンを使いたい場合に便利な関数が用意されている。 AssetDatabase.GetCachedIcon(path) を使うと簡単に取得できる。 リファレンスには詳細が載ってないけど、Projectビューに表示されているのと同じアイコンが取得できるみたい…
Proライセンスを持っているとPreferences>GeneralでSkinをPro専用の「Dark」を選択できる。 skinで問題になってくるのはEditor拡張で色を設定する時にSkinがDarkとLightで文字の見え方がかなり変わってくる。Editor拡張は色の指定がちょっとメンドイ気がす…
UnityEditorにはエディタ拡張で簡単にドラッグ&ドロップ使える機能が備わっている。 http://docs-jp.unity3d.com/Documentation/ScriptReference/DragAndDrop.html Unityの機能なのでAssetsフォルダ配下のものなら更に便利に使える。こちらのブログではInsp…
Unityで使っているフォルダ、UnityのAPIで取得できるパスをまとめてみた。たまにフォルダを開きたくなる時があるのでこういうEditor拡張があると便利だと思う。AssemblyPathなんて使わないと思うけど。 思いついたフォルダはリスト化してみたけど、多分こん…
Unity Editor上でプレイ中にスクリプトを修正してUnityにフォーカスしてビルドが始まっちゃう→エラーになるって事をよくやってしまう。 自分はスクリプトを編集したら、再生ボタンを押して最初からやるので、どうせエラーになるならプレイ中にスクリプトをい…
Playボタンを押すと再ビルド・コンパイルされInitializeOnLoadが実行される。スクリプト更新時にInitializeOnLoadが実行されるのは良いがPlayボタン押した後は実行させない方法を考えてみた。 EditorApplication.playmodeStateChangedでイケるかと思いきやう…
前回はUnity起動時、スクリプト更新時直後に実行する場合。 今回は、起動直後ではなく、少し遅らせてプロジェクトが読み込み終わった後に実行させたい場合の方法。 using UnityEngine; using UnityEditor; [InitializeOnLoad] public class InitOnLoad { sta…
EditorApplication.timeSinceStartupを使用して、Unity起動時のみスクリプトを実行する方法。Editor拡張機能を実装する時に役に立つ。 using UnityEngine; using UnityEditor; [InitializeOnLoad] public class InitOnLoad { static InitOnLoad() { if (Edit…
GameObjectにコメントを残すサンプル。みんな何かしらコメント残せるようにしてるとは思うけど。 ObjectComment.cs using UnityEngine; public class ObjectComment : MonoBehaviour { #if UNITY_EDITOR public string comment = ""; #else #endif } ObjectC…
Unityで日本語使って文字化けした経験がある人におすすめのアセット。 こちらの方が公開している「AssetPostprocessUTF8Encode」 http://debuglog.tumblr.com/post/26550984743/utf-8 UTF8(BOM付)かチェックして自動的に変換してくれる。 今までは動かして文…
単純なOK・キャンセルボタンが付いているダイアログを表示する。 if (GUILayout.Button("dialogを表示", GUI.skin.button)) { bool result = EditorUtility.DisplayDialog( "たいとる", "本文", "OK", "キャンセル" ); if(result) Debug.Log("OKが押されまし…
Unity GemsでMissingScriptを修正する プログラムが公開されていてその翻訳。 missing経験したことがある人にとっては夢の様なプログラム。 Missing Scriptsエラーの解消(前編) http://gamesonytablet.blogspot.jp/2013/03/missing-scripts.html Missing S…
こちらで公開されているアセット「UnityEditorEnhancements」を使って見た。 https://bitbucket.org/Tenebrous/unityeditorenhancements/src/8716cd3cdf0a コレを入れるとこうなる。 ・Projectビューに拡張子が表示される。Proスキンだと「FBX」は見えにくい…
昨日はコンポネント名の行を右クリックでのコンテキストメニュー追加してみたけど、 今度は自分で作ったEditorWindow内のコンテキストメニューを自作してみる。 こんな感じで追加される。 「GenericMenu」を使うと拡張できる。 ソースはこんな感じ。 using U…
Inspectorのコンポーネント毎のコンテキストメニューを追加する方法。 コンポーネント名の行?を右クリックした時に表示されるコンテキストメニューを拡張する。 Cameraに追加する場合はこう書くと、 [MenuItem("CONTEXT/Camera/This is Camera !!!!!!!!!!!!…
エディタ拡張でメニューに追加する時、同じ機能を別の場所に追加したい際に有効そうな技。 例えば、空のゲームオブジェクトを作る機能を追加したい時に、「Assets>Create」、「GameObject>Create Other」にメニュー追加する場合は以下の様に書ける。 //Ass…
PlayerPrefsを編集するアセット、「PlayerPrefsPlugin」 https://www.assetstore.unity3d.com/#/search/PlayerPrefsPlugin インポートするとメニューに「Window>Player Prefs Plugin」が追加される。 「New」を選択すると新規登録 タイプの項目はこんな感じ…
Unityでこんな事をやりたい。 #if MY_DEBUG_MODE //デバッグ処理 #endif 開発してる時は有効でリリースでは含めたくない処理なんかは良くあることだと思う。 1ファイル内だけなら #define MY_DEBUG_MODE とファイルの先頭で宣言すればいいけど、そのファイ…
テラシュールウェアさんでも紹介されている「CreateScriptDialog」 http://terasur.blog.fc2.com/blog-entry-156.html TemplateとFunctionが簡単に指定できるので、 スクリプトを新規作成する時は重宝しているアセット。 Function名をタイプミスしないで済む…