Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0今回はUnityのPostProcessingStackのプロファイルとボリュームをスクリプトから操作をしてみたいと思います。PostProcessProfileはポストプロセスの設定ファイルでPostProcessVolumeはPostProcessProfileを設定するコンポーネントです。ポストプロセスに関してとそれぞれの設定の仕方についてはUnityのPostProcessing機能のV2についてUnityのPostProcessing機能のV2について見ていきます。22:42を参照してください。今回行う事は、スクリプトでPostProcessVolumeコンポーネントをゲーム中にゲームオブジェクトに取り付けエフェクトを追加する事。作成済みのPostProcessProfileの設定をゲーム中にスクリプトから変更する事。スポンサーリンク他のゲームオブジェクトを配置ポストプロセスの効果を確認する為にいくつか他のゲームオブジェクトをヒエラルキー上に配置しておきます。Object→Planeを選択し、TransformのScaleのXYZを全て10にします。スタンダードアセットのThirdPersonControllerプレハブをヒエラルキー上に配置します。これで地面とその上を動くキャラクターが配置されました。今回はポストプロセスの効果を確認するだけなので適当にゲームオブジェクトを配置してください。Targetを追加し、TargetにThirdPersonControllerをドラッグ&ドロップします。これでキャラクターの動きに合わせてカメラが移動します。Layerを取り付けます。LayerにはPostProcessレイヤーを設定します(レイヤーが存在しない時は作成してください)。LayerはPostProcessVolumeコンポーネントに設定したレイヤーと同じレイヤーを指定します。今回はPostProcessVolumeはスクリプトから作成するのでその設定するゲームオブジェクトに、あとでPostProcessレイヤーを設定します。スクリプトからPostProcessVolumeを取り付けるスクリプトからPostProcessVolumeをゲームオブジェクトに取り付けエフェクトを発生させてみます。Emptyを選択し、名前をCreatePostProcessVolumeとします。CreatePostProcessVolumeゲームオブジェクトのレイヤーをPostProcessに設定します。次に新しくCreatePostProcessVolumeスクリプトを作成し取り付けます。true);}}StartメソッドでScriptableObject.CreateInstanceを使ってBloomのインスタンスを作成します。作成したbloomインスタンスのenableのOverrideでtrueを設定しエフェクトを有効にします。bloomのintensityのOverrideで20fを設定しBloom効果の強度を設定します。Bloomの設定が終わったらPostProcessManager.instance.QuickVolumeメソッドを使ってPostProcessVolumeに設定をします。QuickVolumeの引数は第1引数がPostProcessVolumeのレイヤーで今回はgameObject.layerでCreatePostProcessVolumeゲームオブジェクトに設定されたレイヤーを指定し、第2引数ではPostProcessVolumeの優先度を指定し、第3引数は設定する効果を指定します。作成したボリュームは使わなくなったら削除する必要があるみたいなので、OnDestroyメソッドの中でRuntimeUtilities.DestroyVolumeメソッドを使って作成したボリュームの削除を行っています。DestroyVolumeの第1引数はPostProcessVolume、第2引数は指定したボリュームを削除するかどうか、第3引数はボリュームのゲームオブジェクトを削除するかどうかのようです。PostProcessVolumeが追加されたかどうか確認するスクリプトが出来たのでUnityを実行してポストプロセスの効果が出るかどうか確認してみましょう。上のようにPostProcessVolumeがスクリプトから追加され効果が出ているのを確認出来ます。CreatePostProcessVolumeゲームオブジェクトにPostProcessVolumeコンポーネントは追加されていません。ここら辺はAddComponentでPostProcessVolumeコンポーネントを追加するのではなく、QuickVolumeメソッドを使って追加したからかもしれません。スクリプトからPostProcessProfileの設定値を変更する次はあらかじめPostProcessVolumeに設定しているPostProcessProfileの設定値をゲーム中にスクリプトから変更してみます。先ほど作ったCreatePostProcessVolumeゲームオブジェクトのインスペクタでチェックを外し無効にしておきます。Volumeを選択します。これでPostProcessVolumeコンポーネントが設定されたゲームオブジェクトが作成されます。Profileを選択します。effect...ボタンを押してVignette、Bloom、Grainの効果を加えます。BloomはenableのOffボタンを押して無効にしておきます。あとでスクリプトからこれらの設定値を変更します。Profile.assetファイルをドラッグ&ドロップします。Volumeゲームオブジェクトに取り付けます。true);}}インスペクタでPostProcessVolumeコンポーネントを設定出来るようにし、同じゲームオブジェクトに取り付けたPostProcessVolumeコンポーネントを設定します。StartメソッドでpostProcessProfile.GetSetting()でPostProcessVolumeに設定したPostProcessProfileのBloomを取得しています。この時注意が必要なのがprofileとsharedProfileの違いです。profileで取得した場合はこのボリュームのみ適用されUnityの実行を停止するとプロファイルは元の設定値に戻ります。sharedProfileにすると同じプロファイルを使用している全てのボリュームにも適用され、Unityの実行を停止してもプロファイルに加えた変更値がそのままになります(AssetsフォルダのPostProcessProfileが更新される)。プロファイルの効果を取得するにはGetSettingsメソッドを使います。GetSetting<Bloom>();123GetSetting<Bloom>();プロファイルに新しいエフェクトを追加するにはAddSettingsメソッドを使います。AddSettings<MotionBlur>();123AddSettings<MotionBlur>();を使用しますがPostProcessProfileをsharedProfileで取得していると何やらエラーが出てきます。(^_^;)実行中に変更した設定値を元に戻すためにもpostProcessProfile.profileで取得でいいかも?エフェクトが存在するかどうかは、HasSettingsメソッドを使います。HasSettings<Vignette>();123HasSettings<Vignette>();を使います。エフェクトが存在した場合にそのエフェクトのインスタンスを取得するにはTryGetSettingsメソッドを使います。grain);エフェクトを削除する場合はRemoveSettingsを使います。RemoveSettings<Vignette>();123RemoveSettings<Vignette>();OnDestroyメソッドで作成したプロファイルの削除をしています。機能が出来たのでUnityを実行して確認してみます。スクリプトで変更した効果が現れました。以下がスクリプトからPostProcessProfileの設置値を変更する前の状態です。以下がスクリプトからPostProcessProfileの設定値を変更した後の状態です。Blurの効果が追加されています。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。21:43の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なTPSゲームの作成までが出来ます。Д`)シクシク...お知らせ2020/02/15個人的にUnity2019.3.1f6をインストールしました。2020/01/31個人的にUnity2020.1.0a21(アルファ版)をインストールしました。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。