Timeline トラックに埋め込まれた Recorded の消し方
Timeline のトラックで直接アニメーションを録画刷る際にできる Recorded というクリップ。要らなくなったので消したいなと思い、消そうと思ったけど消えない…
しかたなく、Timeline を新たに作り、トラックをコピペすると Recorded クリップも増える。どうも使っていなくてもトラックに紐付いているようなので、そのトラックを作り直したら消えた。
Timeline のトラックで直接アニメーションを録画刷る際にできる Recorded というクリップ。要らなくなったので消したいなと思い、消そうと思ったけど消えない…
しかたなく、Timeline を新たに作り、トラックをコピペすると Recorded クリップも増える。どうも使っていなくてもトラックに紐付いているようなので、そのトラックを作り直したら消えた。
バリアントプレハブとか使ってるとなぜかレイヤーの順番がうまく変わらないことがあるので、無理やり変えてみた。
同じ階層限定。
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); } }
SimpleAnimation でアニメが動かないときになぜか Culling Mode が Cull Update Transforms になっていることがある。
Always Animateにすると動くけど、なぜか Cull Update Transforms だと動かない…
Quad や 5.1ch など3Dサウンドを Unity で作った際に、どうも挙動がおかしかった。
よく考えると3Dサウンド空間で AudioClip のステレオってなにって感じですね。右も左もなく、AudioSource がいるところが音の発信源なので。
ステレオのクリップっだと AudioListener から一定距離が離れると音が出なくなってしまったりした。
Inspector 上で AudioClip をモノラルに変えるチェックを入れれば解決。
Default Playables にあるVideo Script Playable Trackで再生するときに、とあるビデオクリップだけコマ落ちした。
調べてみると音声が入っているとコマ落ちする。今回は音声は要らなかったので、ビデオから音声を取り除くか以下のように Audio Output Mode を None にしてあげることでコマ落ちしなくなった。
単純に Video Player で再生する分には問題なさそうなんだけど、なんでだろ。
Video をタイムラインで再生したいときには Unity が公式に配布している Default Playables にあるVideo Script Playable Trackを使えば再生できる。
シーンに配置した VideoPlayer と、タイムライン上でクリップを作成して、クリップの設定で動画をしていして終わり。
注意点としては、クリップ毎に VideoPlayer が必要。
トラックは1つでもいいけど、VideoPlayer はその分必要になる。
なんででしょ…?クロスフェードの関係?
ProjectSettings の Audio には、オーディオのボリュームを調整できる Global Volume がある。一方ランタイムで操作できるボリュームには static 変数の、AudioListener.volume がある。
この両方はどうやら一緒っぽい。
AudioListener.volume が再生する度に Global Volume の値にリセットされているっぽい。
Unity での音が大きい場合ここを下げておくと便利なので、それを Editor 拡張からどうやればいいか調べてみました。
WebGL 書き出しだと音の再生が Web Audio API で使えるものに限定されるので、AudioSource の一部の機能のみ使える。
AudioMixer の Volume は制御できたけどエフェクトなんかは使えない。
エディタ拡張を作ってボタン一つで、シーンにあるコンポーネントのパラメータを変更できるようにしてみた。でもやってみると変更はされるものの再生すると前の値に戻ってしまう…
調べたところEditorUtility.SetDirty()として、そのオブジェクトに変更があったという印をつけてあげる必要があった。
よく、Vector2 や Vector3 にまだ値が入れていない時に、negativeInfinity を入れていた。しかし比較してみると
Vector2.negativeInfinity == Vector2.negativeInfinity // false float.NegativeInfinity == float.NegativeInfinity // true
こんな感じになった。float なら true だけど、Vector2/3 だと false になる。調べてみると比較する段階で計算が発生し、NaN < 9.999999E-11 // false という計算になるよう。