docs.unity3d.com
    目次を表示する/隠す

    beginCameraRendering イベントの使用

    このページの例には、beginCameraRendering イベントを使用してカスタムメソッドを実行する方法が示されています。

    beginCameraRendering イベントの概要

    Unity では、各フレームで各アクティブカメラがレンダリングされる前に beginCameraRendering イベントが発生します。カメラがアクティブでない場合 (例えば、カメラゲームオブジェクトで Camera コンポーネントのチェックボックスがオフになっている場合)、このカメラの beginCameraRendering イベントは発生しません。

    このイベントにメソッドをサブスクライブすると、Unity でカメラのレンダリングが行われる前にカスタムロジックを実行できます。カスタムロジックの例としては、レンダーテクスチャに追加のカメラをレンダリングし、そのテクスチャを平面反射や監視カメラビューのような効果に使用する方法があります。

    RenderPipelineManager クラスの他のイベントを使用すれば、さまざまな方法で URP をカスタマイズできます。それらのイベントにも、この記事に記載されている原則を適用できます。

    beginCameraRendering イベントの例

    この例は、beginCameraRendering イベントにメソッドをサブスクライブする方法を示しています。 この例の各ステップを実行するには、ユニバーサルプロジェクトテンプレート を使用して新しい Unity プロジェクト を作成します。

    1. シーン内でキューブを作成します。Example Cube という名前を付けます。
    2. プロジェクトで C# スクリプトを作成します。URPCallbackExample という名前にします。
    3. 以下のコードをコピーしてスクリプト内に貼り付けます。

      using UnityEngine;
      using UnityEngine.Rendering;
      
      public class URPCallbackExample : MonoBehaviour
      {
          // Unity でこのコンポーネントが有効になると、このメソッドが自動的に呼び出されます
          private void OnEnable()
          {
              // RenderPipelineManager.beginCameraRendering イベントのデリゲートとして WriteLogMessage を追加します
              RenderPipelineManager.beginCameraRendering += WriteLogMessage;
          }
      
          // Unity でこのコンポーネントが無効になると、このメソッドが自動的に呼び出されます
          private void OnDisable()
          {
              // RenderPipelineManager.beginCameraRendering イベントのデリゲートとして WriteLogMessage を削除します
              RenderPipelineManager.beginCameraRendering -= WriteLogMessage;
          }
      
          // このメソッドが RenderPipeline.beginCameraRendering イベントのデリゲートである場合、Unity では beginCameraRendering イベントが発生するたびにこのメソッドが呼び出されます
          void WriteLogMessage(ScriptableRenderContext context, Camera camera)
          {
              // テキストをコンソールに書き出します
              Debug.Log($"Beginning rendering the camera: {camera.name}");
          }
      }
      

      ノート: イベントにサブスクライブするときは、イベントデリゲートに定義されているパラメーターをハンドラーメソッド (この例では WriteLogMessage) で受け取る必要があります。この例では、イベントデリゲートは RenderPipeline.BeginCameraRendering であり、<ScriptableRenderContext, Camera> パラメーターを受け取ります。

    4. URPCallbackExample スクリプトを Example Cube にアタッチします。

    5. Play を選択します。Unity で beginCameraRendering イベントが発生するたびにスクリプトのメッセージが Console ウィンドウに出力されます。

      Unity の Console にログメッセージが出力される。

    6. OnDisable() メソッドを呼び出すには、再生モードで Example Cube を選択し、スクリプトコンポーネントのタイトルの横にあるチェックボックスをオフにします。RenderPipelineManager.beginCameraRendering イベントから WriteLogMessage のサブスクライブが解除され、Console ウィンドウへのメッセージの出力が停止されます。

      スクリプトコンポーネントを非アクティブにする。スクリプトコンポーネントのタイトルの横にあるチェックボックスをオフにする。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)