Unity

【Unity】Storyboardで白い四角(RawImage)が生成されてしまう原因と対処法は何?

どうも、コニーです

 

この記事ではCinemachineでディゾルブを実装したときに

謎の四角が発生するエラーについて解説していきます

 

※下の記事の追加解説になりますので、まだ読んでいないという方は先にご覧ください

【Unity】Cinemachineでディゾルブ(dissolve)を実装する方法!!Timelineで簡単制御UnityのCinemachineでディゾルブ(Dissolve)を実装する方法を紹介します。Timelineで簡単に制御でき、コード編集も一切しません!!画像付きで丁寧に解説します。...

 

上の記事で紹介しているやり方ではRenderTexture用のカメラ(以下RC)にCinemachineをつけていませんが、

「RCをCinemachineで操作したらディゾルブ後でも好きなアングルで撮れる+追尾機能とかできるんじゃね?」

と考えていました

 

しかしその操作をするとまぁこんな感じに謎の四角がはっせいしちゃうんですよね(笑)

Storyboard rawimage左下に謎の四角が発生

 

これについて調べようとしたのですが

Storyboardについてエラーが発生することがあまりなく、参考になる記事が少なくてめちゃめちゃ困りました(笑)

 

同じ現象で困っている方の助けになればなと思い、

この記事ではStoryboardで白い四角(RawImage)が発生する原因と対処法を紹介します

エラーの状況

まずはエラーの状況を確認します

今回の記事で解説するエラーは次のような条件のものです

前提条件

・StoryboardでRenderTextureを表示する

・RenderTextureに出力するカメラにCinemachineをつけている

RCを操作するTimeline

 

エラー内容

・Sceneに白い四角(RawImage)が生成される
→しかもHierarchyには表示されない

・Game画面にRawImageが映りこむ

Sceneに白い四角(RawImage)が出現

 

 

ちなみに今更ですが今回発生している白い四角はRawImageといって、UIの一種です

これ自体は普通に使われているUIなので問題ありません

 

しかしこのRawImageが勝手に生成されてしまうのが今回のエラーです

Storyboardで白い四角(RawImage)が生成される原因

それではさっそくStoryboardで白い四角(RawImage)が発生する原因について書いていきましょう

 

今回のエラーは次のような2段階で発生していると思われます

 

  1. StoryboardでRenderTextureに出力しながら、RCをバーチャルカメラで操作するというのが通信エラーを引き起こした
  2. 通信エラーを感知したStoryboardスクリプトがRawImageを生成した

 

まずStoryboardのスクリプトを見てみると「カメラの通信がうまくいかなかったとき、RawImageを生成する」という操作がされています

これが直接の原因で、それを引き起こしているのがRCをバーチャルカメラで操作することだったようです

あくまで私がそう思っているだけで間違っている可能性もあります。そのときはごめんなさい。

対処法

続いてこれの対処法なのですが、

残念ながらRCをCinemachineで操作しないことが確実な対処法という結論に至りました

 

先ほどカメラの通信エラーについて話しましたが、実際にどういうメカニズムでエラー判定されているのかがわかりませんでした

Unity自体が再生できないわけではありませんし、RawImageが生成される以外はちゃんと動きますからね…

 

RCのPriorityを変更してみたりいろいろやりましたが結果は変わりませんでした

 

なので逃げのコメントになりますが、潔く使わないのが手っ取り早いのではないかと思います

まとめ

今回のまとめ

・Storyboardはエラー時にRawImageを生成する

・RCをバーチャルカメラで操作するのは良くないっぽい

 

いや~詳しい原因が理解できないですね(笑)

結局逃げるという結論に至ったのが悔しいですが、ここで時間を食いすぎるのもコスパ悪いなと思ったので諦めました

 

RCをバーチャルカメラで操作することができれば、ディゾルブ用のトラックでガンガン制御できると思ったんですが

 

現実は甘くない

 

 

まぁStoryboard自体がTimelineに組み込まれる前提ではないので、仕方ないっちゃ仕方ないです

今後アップデートで変更されることを期待しましょう!

 

ではまた!