再度開いたら、シェーダーが赤紫色…?
Unity5.3.x等で作成したプロジェクトをUnity5.4.xで開いた後、再度Unity5.3.xで開き直した時に、シェーダーが赤紫色になっていることがあります。
これは、5.4.x以前のバージョンのUnityで作成されたプロジェクトをUnity5.4.xで開いた場合、Shader auto updaterが適用されてシェーダーファイルが書き換えられているのが原因です。
一度、書き換えが行われると、Unity5.3.xとの互換性がなくなってしまいますので、以下の手順で直してみてください。なお修正には、IDEもしくはテキストエディタが必要ですので、元のシェーダーファイルはバックアップしておいたほうがよいでしょう。
エラーが出ているシェーダーを確認する
まずはエラーが出ているシェーダーファイルを確定しましょう。
エラーが出ているシェーダーファイルをInspectorで確認すると、Errorという欄に大体の情報が出ています。
この場合、「unity_ObjectToWorld」という単語が宣言されていないので、認識できないということを示しています。
次に該当するシェーダーファイルを、IDEやテキストエディタで開きます。
すると1行目に以下のようなコメントがあります。
このコメントは、Unity5.4.xのShader auto updaterが書き換えた部分を示しています。
この場合、元の「_Object2World」を「unity_ObjectToWorld」で書き換えたという意味です。
書き換えられた「_Object2World」という命令は、Unity向けのシェーダーの中では良く使われる命令ですので、この部分が書き換えられてしまったためにエラーが出ているということです。
IDEで書き換えられた部分を全置換する
再修正すべき部分が特定されれば簡単です。該当部分を元に戻すように全置換すればOKです。
今回はVisual Studioでやってみました。
Ctrl+Hを押して、クイック置換ウィンドウを出します。
メニューから出す場合には、以下の手順です。
置換が終了し、シェーダーファイルをセーブした後で、Unity5.3.xに戻ってくるとシェーダーファイルのエラーが消え、表示も元通りになっていることが確認できます。
新バージョンを試す時には、必ずプロジェクトのバックアップを取っておこう!
Unity5.4.x以前で作成したプロジェクトをUnity5.4.xで開く場合、それ以前のバージョンのUnityでも開く可能性がある場合には、Unity5.4.xで開く前に必ずバックアップをとっておくことをお勧めします。
もし誤って書き換えをしてしまった場合で、シェーダーにエラーが出ている時にはこちらの手順を参考に書き換えが行われたポイントを特定してみてください。
特に今は、Unity5.4.xへの移行期かと思いますので、十分注意した上で、新機能をお試しください!
Enjoy Your Happy Unity Life :-)
※本記事は、Unity5.3.5f1とUnity5.4.0f1で検証しています。