質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1981閲覧

Unity:Background Typeを変更したい。

MFT5

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/06/14 16:59

UnityのHDRPでプロジェクトを作成しています。
スペースキーを押すとBackground TypeをColorからSkyに変更するという動作をさせたいのですが、うまくいきません。

以前(ビルドインシェーダ?)の時は、カメラのClearFlagsというのを変更することでできたようなので見様見真似でスクリプトを書きました。特にエラーは出ないのですがカメラのBackground typeはColorのままです。

HDRPではそもそも切り替えることができないのか、方法はあるが間違っているのか教えていただきたいです。よろしくお願いいたします。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class clearflags : MonoBehaviour 6{ 7 8 public Camera cam; 9 // Start is called before the first frame update 10 void Start() 11 { 12 Debug.Log(cam.clearFlags); 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 if (Input.GetKeyDown(KeyCode.Space)) 19 { 20 cam.clearFlags = CameraClearFlags.Skybox; 21 Debug.Log(cam.clearFlags); 22 } 23 } 24} 25

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

マニュアルによると、

The High Definition Render Pipeline (HDRP) adds extra properties and methods to Unity's standard Camera to control HDRP features, such as Frame Settings. Although HDRP displays these extra properties in the Camera component Inspector, HDRP stores them in the HDAdditionalCameraData component. This means if you use a script to access properties or methods for the Camera, be aware that they may be inside the HDAdditionalCameraData component. For the full list of properties and methods HDRP stores in the HDAdditionalCameraData component, see the scripting API.

とのことです。Camera.clearFlagsの代わりにHDAdditionalCameraData.clearColorModeを切り替えてみてはいかがでしょうか。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.Rendering.HighDefinition; 5 6public class clearflags : MonoBehaviour 7{ 8 public Camera cam; 9 10 HDAdditionalCameraData additionalCameraData; 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 additionalCameraData = cam.GetComponent<HDAdditionalCameraData>(); 16 Debug.Log(additionalCameraData.clearColorMode); 17 } 18 19 // Update is called once per frame 20 void Update() 21 { 22 if (Input.GetKeyDown(KeyCode.Space)) 23 { 24 additionalCameraData.clearColorMode = HDAdditionalCameraData.ClearColorMode.Sky; 25 Debug.Log(additionalCameraData.clearColorMode); 26 } 27 } 28}

投稿2022/06/14 22:05

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bongo

2022/06/15 11:27

帰宅までUnityをいじる時間が取れず返信が遅くなってしまいすみませんでした。確かにマニュアル(https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/universal-additional-camera-data.html )によるとURPでも特殊なデータをUniversalAdditionalCameraData(https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/api/UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.html )に保存しているようでした。 ですが、十分に挙動を追跡したわけではないものの、URPではclearFlagsについては本来のCameraコンポーネントの設定を見て背景の描画を決めているように思われました。ご質問文にお示しいただいたスクリプトをそのまま使ってベースカメラ...つまりRender TypeがBaseのカメラの背景をSolid ColorからSkyboxに切り替えたところ、どうやらちゃんと背景がスカイボックスに変わったように見えたのですが、もしかしてご質問者さんの場合はうまくいかなかったでしょうか? もしそうでしたら、その状況を再現する手順...たとえば新規にシーンを作成するところから初めて、こういう手順でシーンをセットアップしていくと不具合を発生させられる...という過程をご説明いただけますでしょうか。私の環境でも背景モードの切り替えができない状況を再現できれば、そこを起点に何か手がかりを探せるかもしれません。
MFT5

2022/06/16 08:17

返信遅くなりました。自分のコードがURPでも効かないものだと決めつけておりました。 先程確認したところ、切り替えできました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問