うにてぃブログ

主にUnityとC#に関する記事を書いていきます

2020-03-01から1ヶ月間の記事一覧

【Unity】UnityEditor での再生時 Scene を固定する

Unity 2017.1 から追加された EditorSceneManager.playModeStartScene を利用することで UnityEditor で Play を押した際に別シーンだったとしても、指定したシーンから再生することが可能になる Unity - Scripting API: SceneManagement.EditorSceneManager…

【Unity】uGUI の Image を反転させる

uGUI の画像を反転させる方法として、Rotation を180にする。もしくは Scale を -1 にするという二択があります が演出などで Rotation や Scale を使うことを考えると値をいじりたくありません また、Rotation.y を180にした場合、タップ等のイベントを取得…

【Unity】ハードウェア上の Camera を使う

※ MacのUnity上で利用することのみの想定なので、AndroidやiOSなどでは権限を追加しないと動作しません Unity で カメラを使うには WebCamTexture クラスを利用すればできるようです UnityEngine.WebCamTexture - Unity スクリプトリファレンス テスト WebCa…

【Unity】Sprite の Filter Mode

このような色の区別がはっきりしている画像を Unity に持っていって表示させた場合 このように色の境界部分がなめらかに表示されてしまいます この問題は Filter Mode を変更すれば解決できます Filter Mode 公式の説明を見ると テクスチャのフィルタリング…

【Unity】uGUI を利用してタップした位置のオブジェクトを取得する

画面をタップした位置にある3Dオブジェクトを取得したい場合 画面のタップを検知して、タップしたスクリーン座標を取得する必要がある Input と PointerEventData を利用した方法があり、両方の処理を乗せる Input を利用した処理 public class TapHandler :…

【Unity】自動で GetCompoent をする Attribute【PropertyAttribute】

コンポーネントが必要な場合 RequireComponent か Reset() で コンポーネントの取得処理を書く必要がありますが、毎度書くのが面倒だというときがあり、 PropertyAttribute で解決できるのではと思い作成してみました using UnityEngine; [RequireComponent(…

【Unity】ポストエフェクトを利用する

ポストエフェクトとは 主にシェーダーを用いて、カメラの写している画像を加工し画面に表示させることです 海外の記事では「Image Effect」と記述されることが多いため、海外の記事を探す場合は 「Post Effect」ではなく「Image Effect」で探したほうが記事…

【Unity】Rigidbody の重心を変更する

I am fish の PV を見ていて Rigidbody の重心を変更するにはどうやるのか気になったので記事にしてみました Rigidbody.centerOfMass 調べてみたところ、重心を変えるのは簡単そうで Rigidbody.centerOfMass に値を入れてやるだけでいけそうです Rigidbody-c…

【Unity】円周の位置を取得する

using UnityEngine; public static class CircleUtil { /// <summary> /// 円周の位置を取得する /// </summary> public static Vector2 GetCirclePosition(float angle, float radius) { return GetCirclePosition(angle, radius, radius); } /// <summary> /// 円周の位置を取得する x</summary>…

【C#】配列をシャッフルしたり、ランダムに取得する

コード using System.Collections.Generic; public static class IListExtension { /// <summary> /// ランダムに1つ取得 /// </summary> public static T GetRandom<T>(this IList<T> self) { if (self.Count <= 0) return default; return self[Random.Range(0, self.Count)]; } /// <summary></summary></t></t>…

【Unity】Easing 関数ライブラリ

演出等で利用する Easing 関数をまとめたものを公開しました github.com シーン上にGizmoを使って書いたサンプル Easing 関数の動き Easing 関数の動きを見たい方は下記のサイトを見てもらえれば どの Type でどんな動きをするかわかると思います Easing Fun…

【Unity】RectTransform の Pivot 変更

RectTransform を Scale した場合 Pivot の位置から Scaleされるので Pivot (0.5, 0.5) 以外の場合変な Scale 処理になってしまう なので Scale処理の間は Pivot を (0.5, 0.5) にして終わったら Pivot を戻すことでいい感じに Scaleさせることができる 単純…

【C#】現在の git ブランチ名を取得する

git のブランチ名を取得する方法でパッと思いつくのは、 C# からターミナルを利用してコマンドを叩きブランチ名を取得する方法だと思います この方法ではOSごとに違う処理を書く必要があり結構面倒です しかし、現在のブランチ名は .git ディレクトリ内部に…

【Unity】UnityEditor でドラッグアンドドロップ処理

using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; public static class DragAndDropUtility { /// <summary> /// D&Dを開始する /// </summary> public static void Begin(Object[] objs, object data) { DragAndDrop.PrepareStartDrag(); DragAndDro…

【Unity】EditorWindow で GUIStyle を使う際の注意

EditorWindow で GUIStyle を利用する際に、フィールドの初期値を入れた状態にすると Unable to use a named GUIStyle without a current skin. Most likely you need to move your GUIStyle initialization code to OnGUI とエラーが表示されます これは名…

【Unity】EditorGUI のフォーカスを外す

リストからクラスを選択して、値を変更するような Editor 拡張を作成したとき 戻って他の値を変更しようと他を開いた際に、実際には前の値が入っていないのに見た目上は値が入ってるように見えることがある これは EditorGUI のフォーカスが外れてないため発…

【Unity】UnityEditor の再生、停止、一時停止をハンドルする

Unity 2017.3以降 EditorApplication.playModeStateChanged と EditorApplication.pauseStateChanged を利用することで各種タイミングに合わせて処理をすることができます using UnityEditor; using UnityEngine; public static class SamplePlayModeStateCh…

Unity Hub に特定 Version の Unity を追加する方法

※Unity Hub 2.3.0 Unity Hub で Unity をインストールする際は 基本的に最新のVersion が表示され 指定した Version の Unity をインストールできない なので、今までは Unity のアーカイブページから必要な Version をインストールし Unity Hub に追加して…

【Unity】NestedPrefab を 2018.3 未満で使う方法

一度 NestedPrefab 化 してしまった Prefab を 2018.3 未満に持っていくと 破損したPrefab 扱いになってしまい利用することができません 2018.3 未満に移行 2018.3 未満に移行する場合は Prefab化を解除し、Sceneごと移動させてやればいいのです 2018.3 未満…

【Unity】Missing Script がある Prefab を探し出して、削除をしてくれるツール公開

「Search Missing Script」を押すと全 Prefab から Missing Script になっている コンポーネントを探し一覧で表示してくれる Prefab の数が多いと時間はかかってしまうが、プログレスバーを表示させているので凡その時間はわかるようにしました 検索後見つか…

【Unity】【CustomPropertyDrawer】Inspector の Color フィールドを拡張する

using UnityEditor; using UnityEngine; [CustomPropertyDrawer(typeof(Color))] public class ColorPropertyDrawer : PropertyDrawer { private const int ColorMax = 4; private SerializedProperty[] _rgba; private Color _color = new Color(); private…

【Unity】【CustomPropertyDrawer】Inspector に Preview を表示する

PropertyAttribute を作成して Inspector で アセットの Preview を表示できるように拡張する Editor.DrawPreview を呼び出せば Preview が表示できるようになります しかしながら、高さに関しては適当にしてるので利用する際は適切に処理を変えてください u…

【Unity】UnityEditor で List を横並びに表示させる

クラスの IList を UnityEditor 上に表示させるときに 縦並びよりは横並びの方が見やすいのではないかと思ったので作成してみた 表示の調整のために Rect をいじっているため結構読みにくいです using UnityEditor; using UnityEngine; public static class …

【Unity】SerializedProperty の Type や FieldInfo を取得する

SerializedProperty.propertyPath から . 区切りで手繰っていけば FieldInfo が取得できるので Type が取得できる using System; using System.Reflection; using UnityEditor; using UnityEngine; public static class SerializedPropertyUtility { /// <summary> //</summary>…

【Unity】EditorWindow の MenuItem を追加する

IHasCustomMenu を interface に追加してやることで Menu に要素を追加できます using UnityEditor; public class SampleEditorWindow : EditorWindow, IHasCustomMenu { private bool _isOn; void IHasCustomMenu.AddItemsToMenu(GenericMenu menu) { menu.…

【C#】System.IO 操作系処理 (Path, Directory, StreamReader) + AssetDatabase

System.IO.Path var basePath = "/Users/hatch/git/Unity/Blog/Assets/Script/SampleMonoBehaviour.cs"; // 環境毎のファイルパスの区切りに変換 var path = basePath.Replace('/', System.IO.Path.DirectorySeparatorChar); // ファイル名 System.IO.Path.G…

【Unity】二次元ベクトルから角度を求めたり、角度から二次元ベクトルを求める処理

/// <summary> /// 角度から単位ベクトルを取得 /// </summary> public static Vector2 AngleToVector2(float angle) { var radian = angle * (Mathf.PI / 180); return new Vector2(Mathf.Cos(radian), Mathf.Sin(radian)).normalized; } /// <summary> /// ベクトルから角度を取得 /// </summary>…

【Bash】ls 時に見つけた -rwxr-xr-x@ という謎の @

ls で 実行ファイルの権限を確認したところ 権限の最後に @ がついているものがあった bash@ ~/bin $ ls -la -rwxr-xr-x@ 1 root wheel 3156008 2 1 00:00 gmm もともと入っている実行ファイルを確認したところ @ は確認できなかった bash@ /bin $ ls -la -r…

【Unity】ScriptableSingleton を利用した Selection や Console のログ管理クラス

hacchi-man.hatenablog.com 以前の記事でざっくりとしか ScriptableSingleton の使用例を書いてなかったので 使えるように整形したので紹介します ※ ScriptableSingleton は UnityEditor でしか利用できません Selection ログ Hierarchy の選択ログと Projec…

【Unity】UnityEditor で Image の color を変えても変わらない問題

CustomEditor や EditorWindow で Image の color を変更しても反映されません RectTransform の値をいじった際には即座に反映されます using UnityEditor; using UnityEngine; using UnityEngine.UI; public class SampleMonoBehaviour : MonoBehaviour { p…