void ShowSettingGUI(Setting setting, string path) { var preEdit = setting.edit; GUI.contentColor = Color.yellow; if (setting.edit = GUILayout.Toggle(setting.edit, path)) { GUILayout.Space(16); GUI.contentColor = Color.white; GUILayout.BeginHorizontal(); GUILayout.Space(16f); GUILayout.BeginVertical(); setting.OnGUIFunc(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Save and Close")) { setting.SaveAndClose(); } if (NetworkServer.active && setting.canSync) { if (GUILayout.Button("Sync Setting")) { setting.SyncSetting(); } } if (GUILayout.Button("Cancel")) { setting.CancelAndClose(); } GUILayout.EndHorizontal(); GUILayout.Space(16); } if (preEdit && setting.edit != preEdit) { setting.CancelAndClose(); } }