うにてぃブログ

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

2021-04-01から1ヶ月間の記事一覧

【Unity】強制的にスクリプトのコンパイルを行う

static インスタンスの開放などで、スクリプトのコンパイルを行いたいときに コードを少しいじって、コンパイルを走らせていましたが、CompilationPipeline.RequestScriptCompilation を呼び出すことで非同期コンパイルを走らせることができるようでした // …

【Unity】EditorSkin を Pro やデフォルトに変更する

昔は Preference から Skin を変更できた気がするのですが、Unity2020.3 には無いようだったので 内部のメソッドを呼び出して、Skin を変更できるようにしてみました スキンの変更にはコンパイルが必要なので即時には変わりませんが、これを利用することでス…

【Unity】PrefabMode でスクリプトからオブジェクトを選択状態にする

Hierarchy にあるオブジェクトを選択状態にするには GameObject.Find でパスからオブジェクトを探して、Selection.activeGameObjectに代入するだけでできる Selection.activeGameObject = GameObject.Find(path); しかし、PrefabMode の場合 GameObject.Find…

【C#】リフレクションで IList のインスタンスを作成する

private object CreateListInstance<T>(T[] values) { var elementType = typeof(T); var listType = typeof(List<>).MakeGenericType(elementType); var list = (IList) Activator.CreateInstance(listType); for (var i = 0; i < values.Length; i++) list.Ad</t>…

【C#】リフレクションで Array のインスタンスを作成する

private object CreateArrayInstance<T>(T[] values) { var elementType = typeof(T); var array = (Array) Activator.CreateInstance(elementType, values.Length); for (var i = 0; i < values.Length; i++) array.SetValue(values[i], i); return array; }</t>

【Unity】OnGUI の描画処理を終了させる

Listの要素を増減させる Editor 拡張を作成した際に 下記のようにスクリプトを書くと、消したタイミングでエラーが発生する public class EditorSampleWindow : EditorWindow { private List<int> _intList = new List<int>() { 1, 2, 3, 4, 5 }; private void OnGUI()</int></int>…

【Unity】同じフレームで RectTransform を再構築する処理

ContentSizeFitter 等を利用した RectTransform では サイズを確定させるためには 1フレーム待つ必要があります もし、待ちを無くす場合は以下のどちらかのメソッドを呼び出すことで 1フレームの待ちをせずサイズを確定させることができます Canvas.ForceUpd…

【Unity】シリアライズされていないオブジェクトを Inspector や EditorWindow で表示する

シリアライズされていないオブジェクトの中身は Debug モードの Inspector でも表示できないため 表示させるためにはそれ専用のなにかが必要になる しかしながら、必要なオブジェクトごとにそれを作るのが面倒になるので、リフレクションを用いて オブジェク…

【Unity】Image を曲げる

Image を BaseMeshEffect を利用して曲げてみたかったので作成してみました ※Sliced や Filled には未対応、水平のみ メッシュの分割数や、外周の長さなどパラメータの調整をすることで 曲げ具合を変更することができます Shader を使えば Sliced などのとき…

【C#】バージョンを比較する

バージョンの比較には System.Version.CompareTo を利用する このメソッドの戻り値は以下のようになっている 戻り値 説明 -1 前のバージョン 0 同じバージョン 1 後のバージョン ラップクラス 上記戻り値の判定を利用した、便利クラス public static class V…

【C#】継承した Generic クラスを確認する

GenericInt が Generic<T> を継承しているか確認するために、BaseType を見てみたところ Generic1[System.Int32]` と表示され意図したクラスが取得できなかった public abstract class Generic<T>{} public class GenericInt : Generic<int>{} private void Main() { va</int></t></t>…

【Unity】Animation の再生時間を取得する

Animation の再生時間を知るためには GetCurrentAnimatorStateInfo で AnimatorStateInfo を取得し、length の値を見ることで確認できる しかし、 animator.Play のあと直ぐに GetCurrentAnimatorStateInfo を呼び出しても 正しい値を取得できない var anima…