Unityのコンピュートシェーダで普通の関数を別ファイルに分ける時は,hlslファイルにする
カーネル関数を含む => 拡張子はcompute
普通の関数のみ => 拡張子はhlsl
// Hoge.hlslにする.Hoge.computeにしてはならない
#ifndef HOGEHLSL
#define HOGEHLSL
float Hoge(float r) {
return r;
}
#endif
// Main.compute #include "Hoge.hlsl" [numthreads(...)] 略
拡張子をcomputeにしたまま関数を分けると,変な挙動になる(ファイルとならないファイルが出る)
(関数の名前を変えてもエラーにならない,引数の値がおかしい等々)
UIToolkitのButtonのコールバックはPointerDownEventではなくClickEventを使う
問題
ButtonのコールバックにPointerDownEventを指定すると発火しない
解決策
ClickEventを使うか,イベント登録時にTrickleDownを指定する
理由
Buttonは特殊な実装な上に昔書かれたやつだから.
以下PointerDownEventを使う場合

公式による説明
追加したいコンポーネントが表示されない時は,パッケージを再インポートする
症状
Unity Physicsをpre.65にアップデートしたら,PhysicsShapeなどのコンポーネントが追加できなくなり,表示されなくなった
同じ症状が起きた人
Question - [pre.65] how to add PhysicsStepAuthoring Component and etc - Unity Forum
解決策
パッケージを右クリックから再インポートする

(再起動では直らないのは邪悪すぎる・・・)
アセットのテクスチャからハイトマップを作る時は,圧縮されていないか確認すること
デフォルトは圧縮されてる

非圧縮

RuntimeInitializeOnLoadはジェネリックなクラスでは呼ばれない
ドキュメントに書いてないので注意
Unity - Scripting API: RuntimeInitializeOnLoadMethodAttribute
// 通常クラス public class Hoge { [RuntimeInitializeOnLoadMethod] static void OnRuntimeInitialize() { _count = 100; } public void ShowCount() { Debug.Log(_count); // 100 } private static int _count = 0; } // ジェネリック public class Hoge<T> { [RuntimeInitializeOnLoadMethod] static void OnRuntimeInitialize() { _count = 100; // ここには一度も到達しない } public void ShowCount() { Debug.Log(_count); // 0 } private static int _count = 0; }
静的ジェネリックでも同様.とにかくジェネリックはすべて呼ばれない.
2022/4/20 追記
RuntimeInitializeOnLoadに限らず,CustomPropertyDrawersはすべてジェネリックをサポートしていない.
Addressablesのドキュメント見てて気づいた.

