Debug.Log()で直る奇怪なバグに遭遇した話

Unityでシーンを組み立てていたところ、WindowsとMacで描画が変わってしまう現象に遭遇。

調べた結果、見たことがない類のバグだったので、まとめておく。

バグの内容

Mathf.Atan2()の計算結果が変ってしまう。

その結果、OverCloudという天候を制御するアセットで、月の位置が大きくズレた。具体的には、このくらい。

ズレた月の位置
本来の月の位置(見えん)

再現条件

Macbook Pro M1 MAX (2021 16inch)

Unity2020.3.24f1

アセット OverCloud (https://assetstore.unity.com/packages/tools/particles-effects/overcloud-137742?locale=ja-JP) 使用中に発生。

原因

原因は不明。(いや、マジで。)

対策

OverCloud.cs L:4316(UpdateOrbital()メソッド)にある

float v = Mathf.Atan2( yv, xv );

の直後に

Debug.Log("");

を記載するだけ。(いや、マジで。)

所感

Debug.Log()のあるなしで計算値が変わっちゃったので、アセット依存の問題では無いと思われる。

別のところで遭遇する可能性も考えられるのが怖いところ。

Unity

Posted by Ijoru