前提・実現したいこと
3D上で、アニメーションのついた複数のカメラが順次切り替わるようなシーンを作成しています。
その際、カメラの動きや切り替えに関係なく、常に画面に半透明スプライトを重ねたいと思い、以下のコードのようにしました。
・質問1
editor上では機能するのですが、ビルドすると挙動が変わり、camera.mainが現在のカメラではなく、おそらく別のカメラ(シーン作成時のデフォルトのカメラ)を取得してしまいます。
これはスクリプト上の問題なのでしょうか?それともビルドの設定などの問題なのでしょうか?
初心者ですので、何か単純なことを見落としているのかもしれません。
・質問2
実現したいことは、”常に半透明スプライトを画面に適用したい” という単純なことなので、何か別のやり方はあるでしょうか?
(CanvasをオーバーレイにしてImageを配置するような感じで、スプライトを配置したい)
Update内で以下の処理をするのはパフォーマンス的にどうなのかという気もするので・・・
該当のソースコード
// private GameObject CurrentPanelParent; private GameObject CurrentCamera; public GameObject cameraPanel; //このオブジェクトの子としてスプライトがある Transform camerapanelTransform; void Start() { CurrentPanelParent = null; camerapanelTransform = cameraPanel.transform; } void Update() { CurrentCamera = Camera.main; if (CurrentPanelParent != CurrentCamera) { camerapanelTransform.parent = Camera.main.transform; camerapanelTransform.localPosition = new Vector3(0f, 0f, 0f); camerapanelTransform.localRotation = Quaternion.Euler(0f, 0f, 0f); CurrentPanelParent = CurrentCamera; } }
補足情報(FW/ツールのバージョンなど)
Unityバージョン 2020.3.17f1
HDRPでの作成です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/08 12:52