こんにちは、Unityエンジニアのオオバです。

かなりハマってしまったのでメモ。

こちらの数行のソースコードを御覧ください。
注意 : ランタイムエラーというか、Unityはクラッシュします · GitHub

一見問題なさそうなコードですが、引数違いの関数ををActionとして代入しちゃっています。

このコード間違えて実行してしまうと、Unityがクラッシュしてしまいますのでご注意を。

Hoge関数の第1第2引数共にデフォルト引数を設定しているためコンパイルエラーにならないのだと思われます。

経緯

開発していた際にふと発生したクラッシュ事案。
オオバのコミット後から発生していることが分かりましたが、修正箇所を読んでもさっぱり分かりませんでした。

Unityエディタで実行してもクラッシュしてしまうので、どこまでコードが動いているのか非常に突き止めづらく、最終ブレークポイントを細かく打ちつつ、原因を探り当てたという、非常に無駄な時間を過ごした思い出です。

先程のサンプルソースコードは数行の1ファイルなので間違いにはすぐに気づきますが、大規模開発しているとそうはいきません。

しかもコンパイルエラーにならないため、テスト環境を通り抜け、最悪本番環境までアップされてしまう可能性もあります。
また、クラッシュしてしまうので大事故の元です。

まとめ

「関数を追加したら単体テストを心がける」大切さを知りました。またコードレビュー時には特に注意をしないといけない案件だということが分かりました。

オススメ記事
検証環境