どうも、コニーです
この記事ではCinemachineでディゾルブを実装したときに
謎の四角が発生するエラーについて解説していきます
※下の記事の追加解説になりますので、まだ読んでいないという方は先にご覧ください
上の記事で紹介しているやり方ではRenderTexture用のカメラ(以下RC)にCinemachineをつけていませんが、
「RCをCinemachineで操作したらディゾルブ後でも好きなアングルで撮れる+追尾機能とかできるんじゃね?」
と考えていました
しかしその操作をするとまぁこんな感じに謎の四角がはっせいしちゃうんですよね(笑)
これについて調べようとしたのですが
Storyboardについてエラーが発生することがあまりなく、参考になる記事が少なくてめちゃめちゃ困りました(笑)
同じ現象で困っている方の助けになればなと思い、
この記事ではStoryboardで白い四角(RawImage)が発生する原因と対処法を紹介します
エラーの状況
まずはエラーの状況を確認します
今回の記事で解説するエラーは次のような条件のものです
前提条件
・StoryboardでRenderTextureを表示する
・RenderTextureに出力するカメラにCinemachineをつけている
エラー内容
・Sceneに白い四角(RawImage)が生成される
→しかもHierarchyには表示されない
・Game画面にRawImageが映りこむ
ちなみに今更ですが今回発生している白い四角はRawImageといって、UIの一種です
これ自体は普通に使われているUIなので問題ありません
しかしこのRawImageが勝手に生成されてしまうのが今回のエラーです
Storyboardで白い四角(RawImage)が生成される原因
それではさっそくStoryboardで白い四角(RawImage)が発生する原因について書いていきましょう
今回のエラーは次のような2段階で発生していると思われます
- StoryboardでRenderTextureに出力しながら、RCをバーチャルカメラで操作するというのが通信エラーを引き起こした
- 通信エラーを感知したStoryboardスクリプトがRawImageを生成した
まずStoryboardのスクリプトを見てみると「カメラの通信がうまくいかなかったとき、RawImageを生成する」という操作がされています
これが直接の原因で、それを引き起こしているのがRCをバーチャルカメラで操作することだったようです
あくまで私がそう思っているだけで間違っている可能性もあります。そのときはごめんなさい。
対処法
続いてこれの対処法なのですが、
残念ながらRCをCinemachineで操作しないことが確実な対処法という結論に至りました
先ほどカメラの通信エラーについて話しましたが、実際にどういうメカニズムでエラー判定されているのかがわかりませんでした
Unity自体が再生できないわけではありませんし、RawImageが生成される以外はちゃんと動きますからね…
RCのPriorityを変更してみたりいろいろやりましたが結果は変わりませんでした
なので逃げのコメントになりますが、潔く使わないのが手っ取り早いのではないかと思います
まとめ
・Storyboardはエラー時にRawImageを生成する
・RCをバーチャルカメラで操作するのは良くないっぽい
いや~詳しい原因が理解できないですね(笑)
結局逃げるという結論に至ったのが悔しいですが、ここで時間を食いすぎるのもコスパ悪いなと思ったので諦めました
RCをバーチャルカメラで操作することができれば、ディゾルブ用のトラックでガンガン制御できると思ったんですが
現実は甘くない
まぁStoryboard自体がTimelineに組み込まれる前提ではないので、仕方ないっちゃ仕方ないです
今後アップデートで変更されることを期待しましょう!
ではまた!