【Unity】リファレンスをコピペする際の注意点
リファレンスをコピペしたのにコンパイルエラーが起きる
とりあえずどんな動きをするのか見たいときにサンプルコードを公式リファレンスからコピペすることがあると思います。 ですが時として、そのソースコードがコンパイルエラーを起こすことがあります。
つい先日、unity初心者には気づきにくい罠にはまったので共有します。
Unityのリファレンスコードはブラウザ上では変換されていることがある
CharacterController.Move のサンプルコードをコピペしようとしたときに躓きました。
以下実際のコードの一部を抜粋しながらお話します。
//エラーになるコード
if (groundedPlayer && playerVelocity.y < 0)
{
playerVelocity.y = 0f;
}
こちらは、ブラウザ上で表示されている実際のコードです。
これをこのままコピペするとifの条件式でコンパイルエラーが発生します。
理由はこのコードがブラウザ上で変換されたものだからです。
参考ページ
本来このコードは以下のようになっているのが正しい状態です。
//正しいコード
if (groundedPlayer && playerVelocity.y < 0)
{
playerVelocity.y = 0f;
}
ブラウザの仕様上「&」が「 & amp;」と表示されているみたいです。
初めはC#の演算子なのかと思って必死に調べたけど単に変換されていただけだったという落ちでした。
ちなみにChoromeとEdgeでこの現象が発生するのを確認しました。 おそらく他のブラウザでも発生すると思います。
Unityリファレンス上の演算子は変換されていることがあるから注意しよう
「&」に限らずブラウザ上で特殊な扱いをされる記号はUnityのリファレンス上では変換されて無害化した書き方になってることを頭の片隅に置いておくと謎のトラップにかかることがなくなります。
私はプログラミング自体は初めてでなく(PHPの経験が少しある)それゆえC#の文法でこういう書き方があるのかと思い今回この罠にはまりました。
リファレンスなのになんで素のコードで表示されてないんだろう。PHPのリファレンスはこんなことなかったのに。