TreeViewで選択している項目の背景を消す

選択項目のスタイルはTreeViewGUIが設定を持っていますが、非公開クラスのため外部から変更が出来ません。

リフレクションでGUI処理時にスタイルを置き換えると選択項目の背景を自由に変更することができます。

var selectionStyleField = typeof(TreeView).Assembly.GetType("UnityEditor.IMGUI.Controls.TreeViewGUI+Styles").GetField("selectionStyle");

単純にスタイルを置き換えてしまうと他のTreeViewの表示にも影響が出てしまうので、TreeView.OnGUIを呼ぶ間だけスタイルを変更します。

object oldStyle = selectionStyleField.GetValue(null);

try
{
    // スタイルをGUIStyle.noneで置き換える
    selectionStyleField.SetValue(null, GUIStyle.none);
    treeView.OnGUI(rect);
}
finally
{
    // 置き換えたスタイルを元に戻す
    selectionStyleField.SetValue(null, oldStyle);
}