SAColliderBuilderでNull Reference Exceptionが出てしまった時の応急処置
SA Mesh Collider Builderを使おうとしたらNullExceptionで処理が止まってしまった
超絶便利なSAColliderBuilderを使おうとしたらエラーで怒られました
上記のAssetはMeshに対して当たり判定を良い感じにつけてくれるものなのですが、AssetStoreにある別の建物などの環境Assetに対して使う際にエラーがでました。
その時のエラー箇所が SAMeshColliderEditorCommon.cs
の
public static string GetSAMeshColliderName_Material( Material[] materials, int index ) { // ↓ ここ if( materials != null && index < materials.Length && !string.IsNullOrEmpty(materials[index].name)) { return materials[index].name; } return "Mesh." + index.ToString("D8"); }
942行目あたりのif文だったので、ここだけ軽くチェックしたら materials[index]
がnullになるパターンがあるようでした。Assetの階層構造によるものなのかは深くチェックしていないのでわかりません。そのためif文に materials[index] != null
を追加して以下のようにしました。
public static string GetSAMeshColliderName_Material( Material[] materials, int index ) { if( materials != null && index < materials.Length && materials[index] != null && !string.IsNullOrEmpty(materials[index].name)) { return materials[index].name; } return "Mesh." + index.ToString("D8"); }
という風にしました。これで処理が終わり無事Colliderが付けられたので応急処置としては大丈夫そうです。