private void GUILayoutConnect() { EditorGUILayout.BeginHorizontal(); var content = new GUIContent("Connect To"); var contentSize = EditorStyles.label.CalcSize(content); EditorGUILayout.LabelField(content, GUILayout.MaxWidth(contentSize.x)); if (attachProfilerState != null) { #if UNITY_2020_1_OR_NEWER ConnectionGUILayout.ConnectionTargetSelectionDropdown(attachProfilerState, EditorStyles.toolbarDropDown); #else ConnectionGUILayout.AttachToPlayerDropdown(attachProfilerState, EditorStyles.toolbarDropDown); #endif } EditorGUI.BeginChangeCheck(); contentSize = EditorStyles.label.CalcSize(Styles.RecOnContent); mIsRecording = GUILayout.Toggle(mIsRecording, mIsRecording ? Styles.RecOnContent : Styles.RecOffContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10)); if (EditorGUI.EndChangeCheck()) { if (mIsRecording) { SendMessage(MessageData.MessageID.RECORDING_ON); } else { SendMessage(MessageData.MessageID.RECORDING_OFF); } } content = new GUIContent(string.Format("Frame:{0,6}/", profileDataList.Count)); contentSize = EditorStyles.label.CalcSize(content); EditorGUILayout.LabelField(content, GUILayout.MaxWidth(contentSize.x + 10)); content = new GUIContent(string.Format("Frame:{0}", frameCountMax)); contentSize = EditorStyles.label.CalcSize(content); var tmp = EditorGUILayout.DelayedIntField(frameCountMax, GUILayout.MaxWidth(contentSize.x - 32)); if (tmp > 0) { frameCountMax = tmp; } // // Clear // contentSize = EditorStyles.label.CalcSize(Styles.clearData); if (GUILayout.Button(Styles.clearData, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10))) { profileDataList.Clear(); mSlider = 0; } // // Load CSV // contentSize = EditorStyles.label.CalcSize(Styles.OpenContent); if (GUILayout.Button(Styles.OpenContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10))) { var path = EditorUtility.OpenFilePanel("Open Profile Data", "", "csv"); if (!string.IsNullOrEmpty(path)) { using (StreamReader sr = new StreamReader(path)) { if (mProfileDataList == null) { mProfileDataList = new List <ProfileData>(); } else { mProfileDataList.Clear(); } // headerを読み捨てる sr.ReadLine(); // Bodyの読み込む while (!sr.EndOfStream) { var line = sr.ReadLine(); var item = new ProfileData(); item.SetCsvBody(line); mProfileDataList.Add(item); } sr.Close(); } } } // // Save File // contentSize = EditorStyles.label.CalcSize(Styles.SaveContent); if (GUILayout.Button(Styles.SaveContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10))) { var path = EditorUtility.SaveFilePanel( "Save Profile Data as CSV", "", "", "csv"); if (path.Length != 0) { using (StreamWriter sw = new StreamWriter(path)) { sw.WriteLine(ProfileData.GetCSVHeader()); foreach (var d in profileDataList) { sw.WriteLine(d.GetCSVBody()); } sw.Close(); } } } EditorGUI.BeginChangeCheck(); contentSize = EditorStyles.label.CalcSize(Styles.statsContent); mEnabledStats = GUILayout.Toggle(mEnabledStats, Styles.statsContent, EditorStyles.toolbarButton, GUILayout.MaxWidth(contentSize.x + 10)); if (EditorGUI.EndChangeCheck()) { SendMessage(mEnabledStats ? MessageData.MessageID.STATS_ON : MessageData.MessageID.STATS_OFF); } EditorGUILayout.EndHorizontal(); var playerCount = EditorConnection.instance.ConnectedPlayers.Count; StringBuilder builder = new StringBuilder(); builder.AppendLine(string.Format("{0} players connected.", playerCount)); int i = 0; foreach (var p in EditorConnection.instance.ConnectedPlayers) { builder.AppendLine(string.Format("[{0}] - {1} {2}", i++, p.name, p.playerId)); } EditorGUILayout.HelpBox(builder.ToString(), MessageType.Info); }