ちょっと試したい事があってコードを書いていたら、普通に実行した時は問題無く動くのに、Visual Studioでアタッチしている時だけUnityが100%実行時エラーを出して落ちる(!)という、出来れば遭遇したくない事態に陥りました。
最初は意味がわからなすぎて結構な時間を無駄にしたんですが(VSの内部ファイルが壊れたんじゃないかとか、Unityのバグ踏んだんじゃないかとか色々考えた)、検証したら単純なコーディングミスだったと判明しました。
どんなミスだったかと言いますと、構造体のメンバをExplicitレイアウトで構築して共用体っぽく使おうとしていたんですが、その中で値型と参照型(具体的にはstring)のレイアウトを重ねるというルール違反をしてしまっていたのでした。あーこれは如何にも実行方法によって異なるエラーになりそうなやーつ。
普段unsafeなコードは極力書かない*1ようにしているので、こういう事態に弱いです。慣れない事はするもんじゃないな……。今回はすぐ判明したから回避できたけど、今後も似たようなトラブルを起こしそうなので、このアプローチを取るのはひとまずやめました。
*1:Explicitレイアウトはunsafeでは無いけども