2020-01-01から1ヶ月間の記事一覧
あらまし Unity で Collider を設定している際に選択しているオブジェクトの Collider しか表示されない 今回はすべて Mesh が見えているが Mesh が無くても Collider をセットすることもあり 個人的には下図のように見えてほしい そのため、選択していない…
あらまし 電光掲示板を見ていて uGUI の Text も文字スクロールができるのではと思い立って作成してみる テキストを左に動かしてみる 今回 Text の頂点を動かすことで、文字スクロールを実装するため IMeshModifier を継承したクラスを利用する IMeshModifie…
あらまし Unity 5.6 以降動画再生用のライブラリとして VideoPlayer が導入された ローカルファイルから動画再生ができることは知っていたが、 ストリーミング再生ができるか公式に記述が無かったため調査してみた ※ 英語なので見逃している可能性がある Vid…
あらまし Unity で Asset (例えば画像ファイル) を入れ替える際に Finder や Explorer から ドラッグアンドドロップ を行いファイルを入れ替えることがあると思う その際にファイル名が **** 1 になってしまい、前のファイルを消して 再度ファイル名を変更し…
ライブラリ github.com デバッグツール Easing関数 Missing Script 検索ツール モデル撮影ツール Module化ライブラリ Unity上で使える Git Tool 単純なメッシュを作成するツール カメラ一覧を表示 アセットのディレクトリを移動する テクスチャ生成ツール 対…
Hierarchy Window を拡張するには EditorApplication.hierarchyWindowItemOnGUI を利用する 拡張処理を記述しないで、最低限の処理のみだと以下のコードになる using UnityEditor; using UnityEngine; public class HierarchyExtension { [InitializeOnLoadM…
Editor拡張作成時に利用できる Field のまとめ 説明が必要そうなものには説明を追記します EditorGUILayout > EditorGUI > GUILayout で無いもの順に記述しています GUILayout GUILayout.FlexibleSpace GUILayout.Space GUILayout.SelectionGrid GUILayout.B…
UnityEngine.UI.Text は英語をいい感じで表示するためなのか、 Rect の領域からはみ出る場合 スペースがあるとその位置で改行されてしまう 日本語では基本的にスペースを利用することが少ないが、 「鹿目 まどか」や「暁美ほむら」など人物名を表示する場合…
Shader でグリッドを表示させる方法について考える 画像を n分割する グリッドを作成する前に 画像を n分割する方法を考える 画像を分割するためには frac 関数を利用する frac 関数は「小数値の小数部分を返す」関数なので uv に 5を掛けた場合、下図のよう…
JsonUtility Unity には Json データを操作するクラスとして JsonUtility がある JsonUtility は Primitive 型、Array、シリアライズ可能なクラス・構造体を Json 形式に変換できる using System; using UnityEditor; using UnityEngine; [Serializable] pub…
例えば Unity の Console には下図のようにヘッダー領域があり、そこにボタンやトグルなどを表示している 今回はその表示方法について記述する ※内部的にはツールバー (toolbar) と呼ばれている Header ヘッダーを描画するのは至極簡単で EditorGUILayout.Ho…
EditorUtility.OpenFolderPanel EditorUtility.OpenFilePanel EditorUtility.OpenFilePanelWithFilters EditorUtility.SaveFolderPanel EditorUtility.SaveFilePanel EditorUtility.SaveFilePanelInProject 参考リンク folder には フルパスでもいいし、Asse…
静止画ですがゲージの部分が波のように揺れている表現を作ってみます 波 波のような結果を出すものとして sin波とcos波 があるのでこちらを利用する Shader で利用する場合はこれに _Time を食わせることで -1 ~ 1 の間を行き来させることができる 左右に動…
Directional Light を複数置いて Culling Mask で制御するのが面倒な時などに Unlit Shader でも 光の向きを指定したい場合があります。 法線との内積の処理で指定したXYZを利用しているだけで特に特殊な処理はしていません Shader Shader "Custom/Unlit/Dir…
【Unity】Unity デフォルト型の Inspector 拡張 - うにてぃブログ 上記記事で CanEditMultipleObjects を設定時に複数の要素の更新ができない問題があったため、いっそ TransformInspector の実装部分をまるっと実装してしまうことにする 実装 Position と S…
Unity でプログレスバーを操作するものは以下のものがある EditorUtility.DisplayProgressBar EditorUtility.DisplayCancelableProgressBar EditorUtility.ClearProgressBar 表示に使うのは DisplayProgressBar と DisplayCancelableProgressBar EditorUtili…
Unity の Console Window では 一覧と詳細の間にあるバーを操作することでサイズを変更できるが、 機能を利用することができない コード 1から作るのは面倒だったため、Unity 内部のコードを参考に作成 VerticalSplitter クラスは載せて無いが、HorizontalSp…
UI を作成している際に親の RectTransform の Rect を見つつ作業したいが 基本的には選択しているものしか範囲がわからないので UI を作りづらい これの解決方法として、編集する RectTransform 選択時親の Rect を描画することにする RectTransform の Rect…
GUI や Editor の表示時に使うクラスとしてGUI, GUILayout, EditorGUI, EditorGUILayoutがあるが 名前と機能が似ててよくわからなくなるのでまとめてみる(まとめるとは言ってない) 公式リファレンスの説明 まず公式リファレンスの説明から見てみる GUI GUI…
Unity 2019.3 2019.3より Unity のUIが一新されました これにともない using (new GUILayout.VerticalScope(GUI.skin.box)) { using (new GUILayout.VerticalScope(GUI.skin.box)) { using (new GUILayout.VerticalScope(GUI.skin.box)) { GUILayout.Label("…
UnityVersion 2018.4.14f1 DefaultAsset の Inspector 作成 [CustomEditor(typeof(DefaultAsset))] を定義することで DefaultAsset のInspector拡張を行える Unity2017くらいだと Scene ファイルも DefaultAsset 扱いだった記憶があるが、現在では SceneAsse…
だいぶ複雑になるが EditorGUILayout.PropertyField の includeChildren: true を利用せずに すべての SerializedProperty を取得し描画していくこともできる。 NextVisible を利用するのは変わらないが、SerializedPropertyType.Generic の場合は中身を更に…
SerializedProperty の表示 通常 SerializedProperty を利用して Editor の表示を行う場合以下ように記述する。 using UnityEditor; public class SampleEditor : Editor { private SerializedProperty _sampleProp; private void OnEnable() { _sampleProp …
CustomPropertyDrawer を利用しているクラスは描画方法を変えたかったことがあったが 自分で取得する必要があったので、そのとき利用した方法を記述する。 CustomPropertyDrawer github.com CustomPropertyDrawer のクラスは上記のようになっており、"m_Type…
Array と List の判定 SerializedProperty のみでは Array か List どちらか知ることができますが、System.Typeを利用しないとどちらかを判定できません string も内部的には char の Array なので string のチェックをする必要があります public static boo…
Terminal で Unity のログを見るときのログファイルのディレクトリを忘れることがあるのでメモ tail -F ~/Library/Logs/Unity/Editor.log .bashrc の alias に登録しておくと便利 alias unity_log='tail -F ~/Library/Logs/Unity/Editor.log' Windows の場合…
Array や List の場合は要素のTypeを取得する必要があるためチェック処理を入れている また、System系の構造体やクラスだと無限ループすることがあったので Array や List 以外の System系は無視している ※Array や List の Path には非対応 private static …
EditorWindow の拡張を行っている際に ScriptableObject の Editor を取得し、 OnInspectorGUIを呼び出した際に CustomPropertyDrawerと Foldout を利用した際にUIがおかしくなりました 本来であればこう表示されます 原因調査 公式の Editor.cs を読んでい…
ProjectWindowにアイコンなどを表示する場合は以下のデリゲートを用いる EditorApplication-projectWindowItemOnGUI - Unity スクリプトリファレンス EditorWindowを継承したくないので、InitializeOnLoadMethodを利用する スクリプト サンプルとしてguidを…
シェーダーを用いて色の加算・乗算は容易にできるがHSV変換をする場合変換用のメソッドを容易してやる必要があるため こちらにシェーダをメモ HSVのカラーシフトの式はこちらを参考にしました HSV Shader with Alpha - Unity Answers シェーダー Shader "Cus…