ScriptingDefineSymbolsを設定するついでにProjectSettingsの値も書き換える

Unityでアプリを作っていて、場合によって構成を変えたい場合があります。
たとえば展示するアプリ・配布するアプリなどです。

その際はScriptingDefineSymbolsに値を突っ込み、プログラム上で以下のように条件分岐することができます。こういうやつです。

```
#if HOGE

#else

#endif

```

## 便利なエディタ拡張

こちらの記事で簡単に設定できるエディタ拡張が公開されてました。ありがとうございます
http://baba-s.hatenablog.com/entry/2015/02/10/102941


## ついでにProjectSettingの値も変更

ScriptingDefineSymbolsの変更に加え、ProjectSettingも書き加えたかったの追記しました。

//追記 という部分です。PlayerSettings.productName="HOGE"などとやると変更できます。

```csharp

using System.Collections.Generic;
using System.Linq;
using System.Xml;
using UnityEditor;
using UnityEngine;

/// <summary>
/// シンボルを設定するウィンドウを管理するクラス
/// </summary>
public class SymbolWindow : EditorWindow
{
    //===================================================================================================
    // クラス
    //===================================================================================================

    /// <summary>
    /// シンボルのデータを管理するクラス
    /// </summary>
    private class SymbolData
    {
        public string   Name        { get; private set; }   // 定義名を返します
        public string   Comment     { get; private set; }   // コメントを返します
        public bool     IsEnable    { get; set;         }   // 有効かどうかを取得または設定します

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public SymbolData( XmlNode node )
        {
            Name    = node.Attributes[ "name"    ].Value;
            Comment = node.Attributes[ "comment" ].Value;
        }
    }
    
    //===================================================================================================
    // 定数
    //===================================================================================================

    private const string ITEM_NAME      = "Tools/Symbols";              // コマンド名
    private const string WINDOW_TITLE   = "Symbols";                    // ウィンドウのタイトル
    private const string XML_PATH       = "Assets/Plugins/Editor/defineSymbols/symbols.xml";  // 読み込む .xml のファイルパス
    
    //===================================================================================================
    // 変数
    //===================================================================================================

    private static Vector2      mScrollPos;     // スクロール座標
    private static SymbolData[] mSymbolList;    // シンボルのリスト
    
    //===================================================================================================
    // 静的関数
    //===================================================================================================

    /// <summary>
    /// ウィンドウを開きます
    /// </summary>
    [MenuItem( ITEM_NAME )]
    private static void Open()
    {
        var window = GetWindow<SymbolWindow>( true, WINDOW_TITLE );
        window.Init();
    }
    
    //===================================================================================================
    // 関数
    //===================================================================================================

    /// <summary>
    /// 初期化する時に呼び出します
    /// </summary>
    private void Init()
    {
        var document = new XmlDocument();
        document.Load( XML_PATH );

        var root        = document.GetElementsByTagName( "root" )[ 0 ];
        var symbolList  = new List<XmlNode>();
            
        foreach ( XmlNode n in root.ChildNodes )
        {
            if ( n.Name == "symbol" )
            {
                symbolList.Add( n );
            }
        }

        mSymbolList = symbolList
            .Select( c => new SymbolData( c ) )
            .ToArray();

        var defineSymbols = PlayerSettings
            .GetScriptingDefineSymbolsForGroup( EditorUserBuildSettings.selectedBuildTargetGroup )
            .Split( ';' );

        foreach ( var n in mSymbolList )
        {
            n.IsEnable = defineSymbols.Any( c => c == n.Name );
        }
    }
        
    /// <summary>
    /// GUI を表示する時に呼び出されます
    /// </summary>
    private void OnGUI()
    {
        EditorGUILayout.BeginVertical();
        mScrollPos = EditorGUILayout.BeginScrollView( 
            mScrollPos, 
            GUILayout.Height( position.height ) 
        );
        foreach ( var n in mSymbolList )
        {
            EditorGUILayout.BeginHorizontal( GUILayout.ExpandWidth( true ) );
            n.IsEnable = EditorGUILayout.Toggle( n.IsEnable, GUILayout.Width( 16 ) );
            if ( GUILayout.Button( "Copy" ) )
            {
                EditorGUIUtility.systemCopyBuffer = n.Name;
            }
            EditorGUILayout.LabelField( n.Name, GUILayout.ExpandWidth( true ), GUILayout.MinWidth( 0 ) );
            EditorGUILayout.LabelField( n.Comment, GUILayout.ExpandWidth( true ), GUILayout.MinWidth( 0 ) );
            EditorGUILayout.EndHorizontal();
        }
        if ( GUILayout.Button( "Save" ) )
        {
 
            var defineSymbols = mSymbolList
                .Where( c => c.IsEnable )
                .Select( c => c.Name )
                .ToArray();

            var str = string.Join( ";", defineSymbols );

            PlayerSettings.SetScriptingDefineSymbolsForGroup(
                EditorUserBuildSettings.selectedBuildTargetGroup, 
                str
            );

            //追記
            if(str.IndexOf("HOGE")>=0){
                
                PlayerSettings.productName = "HOGE";
                PlayerSettings.allowedAutorotateToLandscapeLeft=true;
                PlayerSettings.allowedAutorotateToPortrait=false;
                PlayerSettings.allowedAutorotateToPortraitUpsideDown=false;                
                PlayerSettings.allowedAutorotateToLandscapeRight=false;
                PlayerSettings.applicationIdentifier = "com.hoge.hogehoge";
                PlayerSettings.iOS.targetDevice = iOSTargetDevice.iPhoneAndiPad;

            }else{
                
                PlayerSettings.productName = "FUGA";
                                
                PlayerSettings.allowedAutorotateToPortrait=true;
                PlayerSettings.allowedAutorotateToPortraitUpsideDown=false;
                PlayerSettings.allowedAutorotateToLandscapeLeft=false;
                PlayerSettings.allowedAutorotateToLandscapeRight=false;
                PlayerSettings.applicationIdentifier = "com.hoge.fugafuga";
                PlayerSettings.iOS.targetDevice = iOSTargetDevice.iPhoneOnly;
                //PlayerSettings.SplashScreen.show = true;
                
            }

            Close();
        }
        EditorGUILayout.EndScrollView();
        EditorGUILayout.EndVertical();
    }
}
```