UnityのECSで一瞬エンティティが原点に表示される場合

原因は,TransformSystemGroupの後にLocalTransformの変更をしているから.
TransformSystemGroupの前に変更すればいい.

ちなみに,これはMesh描画時の現象である.
VFXの場合は,TransformSystemGroupの前後に関わらずLocalTransformの更新がそのまま反映される.
これはおそらく,Meshの描画はLocalToWorldを参照するのに対し,
VFXはLocalTransformを参照しているためだと思われる.

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を使う場合

公式による説明

forum.unity.com

追加したいコンポーネントが表示されない時は,パッケージを再インポートする

症状

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のドキュメント見てて気づいた.

Class AssetReferenceT<TObject> | Addressables | 1.19.19

Error: .NETFramework,Version=v4.7.1の参照アセンブリが見つかりませんでした。の解決策

エラーログ

f:id:SiunCyclone:20220314122920p:plain

解決策

.NET Framework 4.7.1SDKを入れる(開発者パックのこと)
.NET Framework 4.7.1 をダウンロード | 無料の公式ダウンロード

図解

f:id:SiunCyclone:20220314122831p:plain