Chrome(Win) で WebGL のりサイズをした際に UI が消える

条件がわからないですが、WebGL 書き出しで Windows の Chrome のみで WebGL 部分をリサイズさせると UI が表示されなくなることがありました。関係あるかわからないけど分かっている条件は

・Universal Render Pipeline
・UniversalRenderPipelineAsset の Anti Aliasing(MSAA) は Disabled
・Canvas は Screen Space – Camera
・指定している Camera の Anti-Aliasing が Fast Approximate Anti-alliasing 以外 で発生

追記) 2020.04.01
デプステストを常に通過させるようにすると直るようです。

Animator の Write Defaults の設定

Animator でアニメーションの状態を切り替える際に AimationClip でキーを打っていない値に対していステートの Write Defaults にチェックが入っている場合、配置してあるデフォルトの値とみなしてアニメーションのブレンディングが行われるようです。

On の場合

Off の場合

参考) テラシュールブログ |【Unity】知らないと面倒くさい事になるかもしれないAnimatorの「Write Defaults」の動作について

Timeline トラックに埋め込まれた Recorded の消し方

Timeline のトラックで直接アニメーションを録画刷る際にできる Recorded というクリップ。要らなくなったので消したいなと思い、消そうと思ったけど消えない…
しかたなく、Timeline を新たに作り、トラックをコピペすると Recorded クリップも増える。どうも使っていなくてもトラックに紐付いているようなので、そのトラックを作り直したら消えた。

uGUI で特定のオブジェクトの前後にレイヤーを移す

バリアントプレハブとか使ってるとなぜかレイヤーの順番がうまく変わらないことがあるので、無理やり変えてみた。
同じ階層限定。

public class SetLayerOrder : MonoBehaviour
{
    enum Order
    {
        Front,
        Back,
    }

    [SerializeField]
    private Order order;

    [SerializeField]
    private Transform targetObject;

    private void Start()
    {
        int myIndex = this.transform.GetSiblingIndex();
        int targetIndex = this.targetObject.GetSiblingIndex();

        if (myIndex < targetIndex && this.order == Order.Back) --targetIndex;
        else if (myIndex > targetIndex && this.order == Order.Front) ++targetIndex;

        this.transform.SetSiblingIndex(targetIndex);
    }
}

Quad や 5.1ch での3Dサウンドでのステレオ AudioClip の挙動

Quad や 5.1ch など3Dサウンドを Unity で作った際に、どうも挙動がおかしかった。
よく考えると3Dサウンド空間で AudioClip のステレオってなにって感じですね。右も左もなく、AudioSource がいるところが音の発信源なので。
ステレオのクリップっだと AudioListener から一定距離が離れると音が出なくなってしまったりした。
Inspector 上で AudioClip をモノラルに変えるチェックを入れれば解決。

Video Track でのコマ落ち

Default Playables にあるVideo Script Playable Trackで再生するときに、とあるビデオクリップだけコマ落ちした。
調べてみると音声が入っているとコマ落ちする。今回は音声は要らなかったので、ビデオから音声を取り除くか以下のように Audio Output Mode を None にしてあげることでコマ落ちしなくなった。

単純に Video Player で再生する分には問題なさそうなんだけど、なんでだろ。

Timeline 上での VideoPlayer の再生

Video をタイムラインで再生したいときには Unity が公式に配布している Default Playables にあるVideo Script Playable Trackを使えば再生できる。
シーンに配置した VideoPlayer と、タイムライン上でクリップを作成して、クリップの設定で動画をしていして終わり。
注意点としては、クリップ毎に VideoPlayer が必要
トラックは1つでもいいけど、VideoPlayer はその分必要になる。
なんででしょ…?クロスフェードの関係?

ProjectSettings > Audio > Global Volume

ProjectSettings の Audio には、オーディオのボリュームを調整できる Global Volume がある。一方ランタイムで操作できるボリュームには static 変数の、AudioListener.volume がある。
この両方はどうやら一緒っぽい。
AudioListener.volume が再生する度に Global Volume の値にリセットされているっぽい。
Unity での音が大きい場合ここを下げておくと便利なので、それを Editor 拡張からどうやればいいか調べてみました。

Continue…