top of page

シェーダーがビルドから消えた日

執筆者の写真: Marcel Dütscher
Marcel Dütscher
6月27日
読了時間: 2分

Unity エディターでは、すべて完璧に見えました。ところが、できあがったビルドでは、ピンク色の面と、消えたエフェクト。Unity のいちばんやっかいな落とし穴のひとつと、その親戚たちへようこそ。


シェーダーのストリッピング。ビルドのとき、Unity は、必要なさそうなものをすべて捨てます。シェーダーも例外ではありません。問題は、Shader.Find() で実行時にシェーダーを読み込む場合です(私たちは、水、大気、ホログラムなどのために、20個以上の独自シェーダーでそうしています)。Unity は、どのシーンにもそれへの参照を見つけられません。その結果、シェーダーはエディターにはあるのに、ビルドには消えてしまいます。解決策は地味ですが、欠かせません。これらのシェーダーは、すべてグラフィックス設定のAlways Included Shadersのリストに入れる必要があります。それ以来、私たちのルールは、新しいシェーダー? すぐ追加、です。


-1 だったレイヤー。似た種類の話です。物理レイヤーを、コードの中で名前で探していました。エディターでは動きます。でも、ビルドサーバーのバッチビルドでは、そのレイヤーが存在せず、検索は -1 を返し、そのレイヤーに頼るすべてが、静かにおかしな動きをします。それ以来、レイヤーは名前ではなく、決まったインデックスで指定しています。


教訓:Unity エディターと、できあがったビルドは、別の世界です。エディターは寛大で、すべてのアセット、名前、シェーダーが手元にあります。ビルドは容赦がありません。だから私たちは、クライアントのどんな変更でも、エディターの再生ボタンだけでなく、ローカルで本物のビルドをテストします。時間はかかります。それでも、恥ずかしいリリースをたくさん防いでくれました。

最新記事

すべて表示
新しいバージョンが2026.7.19で、0.9.2ではない理由 🗓️

今日アップデートする人は、バージョン0.9.1から2026.7.19にジャンプします。打ち間違いに見えますが、意図した決定です。バージョンの付け方を、「セマンティック」から日付ベースのバージョン(年.月.カウンター)に変えました。その理由をお話しします。 古い方式は、だれも聞かない質問に答えていました。 セマンティックバージョニング(0.9.1、1.2.3…)は、ソフトウェアライブラリの世界から来

 
 
おそうじ完了:GitHubのキャッシュをようやくちゃんと使えるようになりました 🧹

前回の技術記事では、ビルドとチェックのパイプラインに本当は何がかかっているのかを測りました。わかったのは、お金ではなく、待ち時間と保存容量だということでした。その記事は「おそうじの作業は計画してあるけれど、まだ終わっていない」で締めくくっていました。ところが、思ったより早く進みました。今日のお昼の時点で、メインブランチに入っています。数字をご紹介します。 まず結果から。 リポジトリのキャッシュ使用

 
 
月に1000回のビルド実行、そのどれにもお金はかかっていません ⚙️

まず訂正です。この記事の最初のバージョンでは、GitHubのビルド時間を使い切ってしまい、そのせいでProアカウントにアップグレードせざるをえなかった、と書いていました。それは間違いでした。ドキュメントを一目見ればわかったことです。公開リポジトリでは、GitHubのビルド時間は無料です。アーティファクトもキャッシュもです。うちのリポジトリは5月末から公開されているので、1分もお金を払ったことはあり

 
 

コメント


この投稿へのコメントは利用できなくなりました。詳細はサイト所有者にお問い合わせください。
bottom of page