【UE4】UE4.26でもやっぱりNiagaraが絶妙にバグっている件

|ω・｀)ﾉ ﾔｧ

私です
GWだ色々やるぞ　やっふーとか思ってたのに
気がついたらもう終わるっていうバグ何？・・・

おかしいなぁ～　HRだけが上がっているぞー？

本題！

##タイムライン表示バーグ

っと言うわけで
今回は（も？）みんな大好きNiagaraの小話だよ
致命的じゃないけど微妙に困るバグが毎度毎度残っているの　ちょっとどうにかしてほしいね
次のアプデでそのへん良くなってること期待　めっちゃいい機能なんだもんよ・・・

さて　こいつを見てくれ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/d5c66f1c-e176-d8cb-ed37-108283282f3b.png)
何が変かわかるかな？

はい　正解はタイムラインの緑バーです
ここのバーを使って発生タイミングだとかいじってたんだけど
いやー　困るわこれェ

一応、タイムラインの見た目だけのバグで動作には影響無いっぽいのが救い。

ただこのバグ　4.25くらいからあるんよね・・・ 
4.26で直ってるの期待してたけどダメでしたね

ちなみに青びっくりマークにマウス合わせるとエラー内容出てきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/24501785-430d-d5a6-1bf9-91fab33e64ee.png)

英語のほうがわかりやすい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/f3a1863e-8984-bb61-763d-f69dd83bc031.png)

どうやらEmitterStateの[num loops]がバインド出来なくてタイムラインの初期化が狂っているご様子
エンジンのコードの書き換えができる環境であれば
UMovieSceneNiagaraEmitterSection::TryAddTimeRangeModule
を見ると幸せになれます

が

今回はモジュールの方だけの変更で公式が対応してくれるまでの一時しのぎの方法です
完璧じゃないのであしからず。

##どうしてこうなっちゃうのか
Niagaraの各種パラメーターはモジュールやNiagaraSystem、Emitter内で宣言されていても
それが実際に使われていないとコンパイル結果(NiagaraScript)に含まれてなかったりします（たしか

アップデートによってEmitterState内の処理にStaticSwitchが追加され
モジュールの設定方法によっては本来必要だったパラメーターが取得できなくなっちまっていたりするのです。

タイムラインで参照するパラメーターは以下の4つ
[StartTime] [Length] [NumLoops] [StartTimeIncludedInFirstLoopOnly]
そしてそれらはEmitterStateの以下のパラメーターに当てはめられています

[StartTime]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/7bef3a90-eb12-2333-1125-a393af65c0b6.png)
[Length]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/6e84d872-1254-7376-3a9a-dbd5567b8a13.png)
[NumLoops]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/89401483-02fe-bc6d-2872-8410f02fb716.png)
[StartTimeIncludedInFirstLoopOnly]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/fcdfcbf5-7129-8a98-ec7e-0f14a0be2311.png)

NumLoopsなら【Loop Count】がバインドされていればいいんですが
こいつは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/91003c05-e1f1-e6e5-906f-877d7c8adb20.png)
の　Multiple　の時にしか使われてないので
エンジン既存のエミッターFountainのような無限ループエミッターではバインド出来てないんですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/dc3f9943-2734-4160-6309-57cf4bdaf901.png)
まぁ　無限ループならタイムライン表示されてなくてもいいんですけど
LoopDelayで発生タイミングをずらしている場合　タイムラインが表示されてないと微妙に不便なんですよ

さらにSimpleSpriteBurstみたいな単発のエミッター
発生タイミングをずらしてぇ　ってなった時　まぁこうするよね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/b325f49c-5979-7d94-84c4-b4e60916ff2c.png)

残念ながらこの方法だと発生タイミングは変わらないのです　前まではコレで平気だったんだけどねぇ・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/9ff9f0e2-2f99-8b1c-6383-4e6c38097816.png)

StartTimeIncludedInFirstLoopOnly【Delay First Loop Only】がこの分岐ではじかれる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/c090a24d-f689-6886-fba9-2a3b7db7f6e6.png)

っとまぁ　こんな感じで
結構いろんな組み合わせで死ぬのです

---
##対応方法は？
じゃあ　直していきましょう
といっても簡単
EmitterStateモジュールの最初の方で　バインドが必須なパラメーターを最初に使っちゃいます

つまりここで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/d7e6e15f-db82-7b40-5bbf-4145ea960b9c.png)

こうじゃ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/569a8852-d23f-841c-fa20-d038c7412f7b.png)

するとタイムラインが正常に表示されるようになるじょ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/f566bb2d-1750-639e-ae62-53a3ae9d7e7d.png)

ただしこの方法　EmitterStateの各種パラメーターに別の変数をバインドさせると結局発生する
例えば　SystemのパラメーターとしてFloatを追加　それをLoopDelayに登録すると・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/6560c7fd-a74b-989d-1295-e374b3bed556.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/a8f1686b-6493-c2d6-3859-c450c36f8325.png)
自体が
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/ca6d7f93-5191-79ff-f52c-dda1804d2792.png)
に置き換わってしまうため
モジュール内で最初に使っていてもそもそも存在しなくなっちゃうのよね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275100/095aa673-d71a-18a4-dd24-2a2fd77c53a1.png)

まぁ　この場合　タイムラインはたしかにあんまり必要ないので良いんですがね・・・

早く直らんかなぁ・・・

Niagaraの中身そんな詳しくないので所々認識が変かもしれん
ツッコミあったらください

今回はこんなもんで
ノシ