ここをクリックした友人のほとんども私と同じ問題に遭遇していると思います。
アーティストは、パーティクルまたは MeshRender などの特殊効果を作成します。次に、プランナーは、この特殊効果を画像 A の上と画像 B の下に表示したいと考えています。
これはあらゆる種類のインターリーブを意味しますが、このインターリーブ レベルの問題をどのように解決するのでしょうか?
さっそく、Zhihu の偉人による解決策をご紹介します。
まずレンダリングを見てみましょう。
ここでは、RawImage を使用して特殊効果をレンダリングします。これにより、UGUI の階層関係を完全に利用して、画像 A の上と画像 B の下に表示できます。
詳しい原理は割愛しますが、主にRaw ImageとカメラのTarget Textureを使用しており、おおよその実装手順は以下の通りです。
1.カメラとレンダリングテクスチャ
新しいカメラとレンダーテクスチャを作成する
カメラの設定は以下の通りです。
フォーカスオン: 背景色は (0,0,0,0) に設定されます
次に、レンダリングする必要がある特殊効果をマップ上で遠くにドラッグし、カメラがその効果を認識できるようにカメラを調整します。
重要なポイントを描画し続けます: 特殊効果にアルファ ブレンドを使用する場合、混合後に色が必要な透明効果を達成できないため、Unity に付属のアルファ ブレンド シェーダーを変更する必要があります。Unity のデフォルトのシェーダーは、次の場所からダウンロードできます。公式ウェブサイト。
そして、修正の原則については記事の最後に記載されています。
レンダリング テクスチャの設定は次のとおりです。
効果があまり良くないと感じる場合は、サイズを調整できます。
2. 新しい RawImage を作成し、上記のレンダリング テクスチャを RawImage のテクスチャにドラッグします。
ここで重要なのは、透明な混合を実現するにはデフォルトの Shader を変更する必要があるということですが、その原理については後述します。
3. シェーダーの変更
Shader を変更する必要がある上記の 2 つの場所をここに掲載するだけです。
UIのデフォルト:
アルファブレンド:
要約:
RawImage を使用して、表示する必要がある特殊効果をレンダリングし、UGUI 独自の階層関係ロジックのセットを使用して、UI 上で必要な特殊効果を簡単に表示させることができます。
特殊効果に使用しているShaderがAlpha Blendなので、RawImage+Render Textureをそのまま使うと異常表示になるため、Unity独自のShaderを改造しました 原理や実装方法は全てネットから拾ってきたものです ソースを載せておきます
原理(これらしい):http://www.voidcn.com/article/p-tdufpuof-bsc.html
解決策: https://zhuanlan.zhihu.com/p/110517201
-------------------------------------------------- ------------------------手動分割線---------- ------ -------------------------------------------- ------ -
2021/4/25
その後、以前使用したものの忘れていた可能性があるものについて知りました。それは Baidu で見つけることができます。
UIP粒子システム
おおよその実装では、ParticleSystem を 2D 画像に描画し、それを UGUI レベルに従ってソートする必要があります。
興味があれば、自分で調べることもできます。
利点は、新しい RawImage、カメラ、またはレンダー テクスチャを作成する必要がないことです。