土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

#unity 小ネタ:Explicitレイアウトミスの話

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

*1:Explicitレイアウトはunsafeでは無いけども