【Unity/VRChat】「UdonSharp does not currently support null conditional operators」の対処法

Unity

はじめに

Unity で VRChat のワールドを開発中に以下のようなコードを書いた際、「UdonSharp does not currently support null conditional operators」というコンパイルエラーが発生したので、そのときに自分がやったことをメモしておきます。

var rb = objPlayer?.GetComponent<Rigidbody>();

このエラー文を日本語に訳すと「UdonSharp は現在、Null 条件演算子をサポートしていません。」となります。

結論

対処法は非常にシンプルなので早速結論を書いていきます。

エラー文の通り、少なくともこの記事の執筆時点では VRChat は Null 条件演算子をサポートしていないので、それを使わない形に書き直せば解決です。

「Null 条件演算子」については Wikipedia で以下のように説明されています。
先ほどのコードの「?」の部分のことです。

Null条件演算子 (: null-conditional operator) とは、第一項がnullヌルポインタ: null pointerまたはヌル参照: null reference)でない場合に第二項の結果を返し、nullである場合にnullを返す演算子である。

Null条件演算子 – Wikipedia

なので今回の場合は Null 条件演算子を使用してしまっているこのコードから、

var rb = objPlayer?.GetComponent<Rigidbody>();

三項演算子や if 文を使用した以下のようなコードに書き換えればOKです。

var rb = objPlayer != null ?
objPlayer.GetComponent<Rigidbody>() : null;
if(objPlayer != null) var rb = objPlayer.GetComponent<Rigidbody>();

最後に

参考記事

お問い合わせ

    タイトルとURLをコピーしました