はじめに:水表現、奥が深すぎ問題
Unityでゲーム開発している皆さん、こんにちは!
突然ですが、ゲームの「水」って難しくないですか?リアルな波、キラキラした水面、水中の神秘的な雰囲気。理想の水表現を追求したいけど、「どのアセット選べばいいの?」「URPで動くのかな?」って悩んでいませんか?
という訳で今回は、あなたのゲームにピッタリの水の表現について紹介します。
この記事で分かること
- Unity URP環境に最適な水シェーダーアセットの選び方
- 実際の導入手順とパラメータ調整のコツ
- よくあるトラブルと「あるある」な解決策
結論:押さえるべき3つのポイント
先に結論から言っちゃいます。UnityURPで水シェーダーを使うなら、この3つを覚えておけばOK!
- アセット選びは「見た目」と「動作速度」のバランスが命
- 必ず「URP対応」と書いてあるか確認!
- 導入は公式ドキュメントが最強の味方
- URP特有の設定(Render Pipeline Assetなど)を丁寧にやりましょう
- トラブル対応の知識は先に仕入れておく
- 問題が起きてから慌てるより、先に知っておくと安心です
Unity環境、チェックしてますか?
「とりあえず買って試そう!」って思ってません?ちょっと待った!
アセットを買う前に、自分のプロジェクトの環境を確認しておかないと、「動かない!!」ってなっちゃいますよ。
Unityバージョンの確認
この記事ではUnity2020.3LTS以降を想定しています。Unityのバージョンによって、URPの機能やシェーダーの書き方が変わるので要注意。
使っているRender Pipelineを確認しよう
確認方法:
- Edit → Project Settings… を開く
- 左メニューからGraphicsを選択

ここに何が設定されているかで、あなたの環境が分かります。
- UniversalRenderPipelineAsset → URP環境
- HDRPアセット → HDRP環境
- 何も設定されてない → Built-in Render Pipeline環境
この記事はURP専用です。HDRPやBuilt-inの方は設定方法が違うのでご注意を。
1. アセットの選び方:あなたにピッタリの水を見つけよう
① URP対応の明記
アセットストアで 「URP対応」「Universal Render Pipeline」 って書いてあるか必ずチェック。これがないと泣きを見ます。マジで。
② どんな水が作りたい?
水にも色々あるんですよ。
- リアルな海や川:波がザッパーン!って動く感じ
- 幻想的な水中:光が差し込んで、ふわふわ浮遊感のある世界
- シンプルな水面:パフォーマンス重視でサクサク動かしたい
③ パフォーマンス(特にモバイルは要注意)
「超リアルな水!」って飛びついたら、スマホでカクカク・・・なんてことも。
レビューで「軽量」「最適化済み」ってワードがあるかチェックしましょう。
④ カスタマイズできる?
水の色、波の高さ、透明度、泡・・・細かく調整できると便利です。
Shader Graphで作られているアセットは、カスタマイズしやすい傾向があります。
⑤ 機能チェックリスト
欲しい機能、ちゃんと入ってます?
- 波
- 反射
- 屈折(水面下が歪んで見えるやつ)
- 泡
- 水中エフェクト
- 岸辺の表現
⑥ レビューは神様
他のユーザーのレビュー、これ超大事です。特にURP環境での使用感やパフォーマンスの話は要チェック!
⑦ ドキュメントとサポート
「買ったはいいけど使い方分からん」を防ぐために、ちゃんとしたマニュアルがあるか確認しましょう。
おすすめのアセットタイプ
Shader Graphベースのアセット
- URPとの相性バツグン
- ノードベースで直感的に編集できる
- カスタマイズの幅が広い
高機能な水システムアセット
- 波、反射、屈折、泡等全部入り
- 導入に手間はかかるけど、リッチな表現が効率的にできる
軽量・最適化された水シェーダー
- パフォーマンス最優先
- モバイルゲームにピッタリ
※特定のアセット名や価格、対応バージョンなどは、必ずアセットストアの公式情報で確認してください。
2. 導入・使い方の例
導入手順
ステップ1:アセットを買ってインポート
Unity Asset Storeで購入して、Package Managerからインポート。ここは簡単ですね。
ステップ2:URPアセットの確認
- Edit → Project Settings… → Graphics
- Default Render Pipelineに、URPアセットが設定されているか確認
まだ設定してない?じゃあまずURPパッケージをインポートして、URPアセットを作成しましょう。
ステップ3:アセット固有のセットアップ
インポートしたアセットのREADMEファイルやPDFマニュアルを必ず読んでください。
よくある作業:
- 特定のフォルダーをプロジェクトにコピー
- Shader Graph Shaderを有効化
- Render Featureを追加(例:Water Surface Renderer)
ステップ4:水マテリアルを作る
- Projectウィンドウで右クリック → Create → Material
- 作ったマテリアルを選択
- Inspectorで、シェーダーのドロップダウンから水シェーダーを選択
ステップ5:水オブジェクトに適用
- シーンにPlane(平面)を配置
- 作った水マテリアルをドラッグ&ドロップ
ステップ6:パラメータを調整
ここが楽しい部分!色々いじって好みの水を作りましょう。
ステップ7:追加エフェクト(任意)
泡、波しぶき、水中fogなどを追加したい場合はここで設定。
基本的な調整項目
アセットによって名前は違いますが、だいたいこんな感じ。
- Base Color / Water Color:水の基本色
- Depth Color:深いところの色
- Wave Strength:波の高さ
- Wave Speed:波の速さ
- Normal Map:水面の凹凸感
- Smoothness:光沢感
- Alpha / Transparency:透明度
- Refraction Strength:歪み具合
- Foam Settings:泡の設定
- Reflection Settings:反射の設定
※必ずアセットのマニュアルを見てください。
3. サンプルアセットをインポートして実際に使ってみる
ここからは、「Simple Water Shader URP」を使って水シェーダーを体験します。
アセットストアからプロジェクトにインポートします。
すると、プロジェクトウィンドウに「Simple Water Shader」というフォルダが作成されると思います。
デモシーンを開く
まずは、デモシーンを開くと良いでしょう。というか、基本的にアセットをインポートしたらデモシーンを開く癖を付けておくと良いです。
どういったアセットなのか、READMEが分からなくてもインスペクタの情報から視覚的にどういった使い方が出来るのか分かるものも多いです。

デモシーンを見ると、こんな感じで3つのタイプの水シェーダーを確認出来ます。画像だと分かりませんが、ゆらゆらと揺れています。
使ってみる
「Simple」と含まれているだけあって使い方も簡単です。
適当なシーンを用意して、Planeオブジェクト等を作ります。後はそこへResourcesにあるマテリアルをPlaneに対してドラッグ&ドロップするだけです。

Planeのpositionを原点においていればカメラからの見た目でこんな感じに映るかと思います。

Planeを選択してMaterialのパラメータを見るとこのようになっているかと思います。
パラメータの意味は以下の通りです。
-
Deep Color / Shallow Color:深い所と浅い所の水色
-
Depth:浅瀬→深場の切り替わり距離(シーンスケールに超依存)
-
今-2.5なので、このシェーダーは負の値で深度ブレンドするタイプ?
-
-
Strength:Deep/Shallow の色ブレンド(または水色の濃さ)の強さ
-
Smoothness:ツヤ・ハイライトの鋭さ(高いほど鏡面寄り)
-
Displacement:水面のうねり。強くすると波が立つ
-
Main Normal / Second Normal:波の凹凸2枚
-
Normal Strength / Normal Tiling:凹凸の強さ&スケール
-
Use Reflection / Reflection Texture / Reflection Power:反射
-
Distortion Power:反射のゆがみ(波で反射が歪む量)
お好みで色々いじってみると良いかと思います。
4. トラブル解決:「動かない!」ときの対処法
よくある問題と解決策
問題1:水面が真っ黒、または真っ白!
原因:
- シェーダーが正しくコンパイルされてない
- URPアセットの設定ミス
- Render Queueが変
- ライティングの問題
対処法:
- ドキュメントを再確認(基本中の基本)
- URPアセットの設定を確認
- マテリアルのRendering ModeやQueueをチェック
- ライトの設定を見直す
問題2:反射が効かない!
原因:
- Screen Space Reflectionが無効
- Reflection Probeがない
- カメラの設定ミス
対処法:
- Project Settings → QualityでSSRを有効化
- Reflection Probeを配置
- アセットの推奨設定を確認
- カメラの設定をチェック
問題3:屈折しない!水面下のオブジェクトが歪まない
原因:
- Screen Space Refractionが無効
- Render Queueの設定が不適切
- カメラの設定ミス
対処法:
- Project Settings → QualityでRefractionを有効化
- 水面下のオブジェクトのマテリアル設定を確認
- ドキュメントで推奨設定をチェック
問題4:アセットをインポートしたら他のものが壊れた・・・
原因:
- 既存のシェーダーやライブラリと競合
- バージョンの互換性問題
対処法:
- 作業前に必ずバックアップ!(これ超重要)
- UnityとURPのバージョンを確認
- エラーがないかチェック
- ダメなら一度削除して再インポート
- それでもダメならサポートに連絡
問題5:めっちゃ重い・・・フレームレート落ちまくり
原因:
- 高機能すぎるシェーダー
- ポリゴン数が多い
- ポストプロセスが重い
対処法:
- パフォーマンス設定を確認
- テクスチャ解像度を下げる
- ポリゴン数を減らす(LODを使おう)
- Reflection Probeの設定を軽くする
- Unity Profilerでボトルネックを特定
- 軽量なアセットに乗り換える
問題6:シェーダーが表示されない
原因:
- Shader Graphの登録ミス
- インポートが不完全
対処法:
- ドキュメントで登録方法を確認
- Shader Settingsをチェック
- Unity再起動してから再インポート
導入前チェックリスト:後悔しないために
- URP対応を確認した?
- 求める水表現ができそう?
- パフォーマンス大丈夫?
- カスタマイズできる?
- 必要な機能は全部入ってる?
- レビューは良好?
- マニュアルは分かりやすい?
- サポートはありそう?
- 予算内?
- Unityバージョンは互換性ある?
【導入時】
- プロジェクトのバックアップ取った?(超重要!)
- URP環境であることを確認した?
- ドキュメント読んだ?
- URPアセット設定OK?
- セットアップ完了した?
- マテリアル作成した?
- オブジェクトに適用した?
- パラメータ調整した?
- 反射・屈折を有効化した?
- パフォーマンス問題ない?
FAQ:よくある質問
Q: Shader Graphじゃないとダメ?
A: いいえ!「URP対応」って書いてあれば大丈夫です。ただ、Shader Graphの方がカスタマイズしやすいので人気なんですよね。
Q: URPとHDRP、どっちを選べば?
A: あなたのプロジェクトに合わせて選んでください。URPならURP対応を、HDRPならHDRP対応を。シンプル!
Q: 水面が透明にならない…白く見える…
A: Rendering ModeをTransparentやFadeに設定してみてください。あと、Alphaスライダーも調整を。Post Processingが影響してる場合もあります。
Q: 屈折しないんだけど?
A: Project Settings → QualityでScreen Space Refractionを有効にしましょう。水面下のオブジェクトのマテリアル設定も要確認です。
Q: 重すぎる・・・軽くしたい
A: 軽量化のコツ:
- テクスチャ解像度を下げる
- 重い機能を無効化
- ポリゴン数を減らす
- 反射・屈折の品質を下げる
- Unity Profilerで犯人を探す
- 軽いアセットに乗り換える
Q: 自作シェーダーで作りたい。URPで注意点は?
A:
- Shader Graphのバージョン確認
- Shader Graph Shaderを有効化
- Render TypeとQueueを適切に設定
- Post Processingとの連携を考慮
- パフォーマンスを意識
- SSRやRefractionのノード設定
まとめ
長い記事でしたが、ここまで読んでくれてありがとうございます!
魅力的な水表現は、ゲームの没入感を劇的に高めます。プレイヤーに「うわ、この水キレイ・・・」って言わせちゃいましょう。

