Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public static Networking.PlayerConnection.IConnectionState GetConnectionState(EditorWindow parentWindow, Action connectedCallback);

Параметры

parentWindow Окно редактора, которое будет использовать соединение.
connectedCallback Обратный вызов, который запускается всякий раз, когда попытка подключения, инициированная пользователем, завершается успешно..

Возвращает

IConnectionState Возвращает несериализованное состояние подключения к проигрывателю, которое используется в PlayerConnectionGUI.ConnectionTargetSelectionDropdown или PlayerConnectionGUILayout.ConnectionTargetSelectionDropdown. Возвращаемый объект состояния подключения содержит информацию о том, какая цель подключена к проигрывателю и какие цели доступны.

Описание

Этот метод создает объект отслеживания состояния для установления и отображения соединения редактора с проигрывателем.

Это состояние и соответствующие методы графического интерфейса (PlayerConnectionGUI.ConnectionTargetSelectionDropdown и PlayerConnectionGUILayout.ionTargetSelectionDropdown ) должны использоваться из EditorWindow. Поставляемое окно редактора используется для:

  1. Отображать оверлей при подключении
  2. Перерисовать окно после установления соединения
  3. Получать обратные вызовы с помощью connectCallback, когда другие окна, использующие тот же тип соединения, устанавливают соединение

Технически можно указать parentWindow как null и использовать его вне EditorWindow, но это не рекомендуется и мы не планируем поддерживать этот вариант использования

Также имейте в виду, что полученное состояние не сериализовано и должно быть удалено. Рекомендуемый шаблон использования — получить состояние в OnEnable EditorWindow и удалить его в OnDisable.

connectedCallback не будет запущен, если, например, соединение было установлено путем автоматического установления соединения профилировщика с проигрывателем или возврата к соединению с редактором. Вместо этого он отвечает только на то, что пользователь активно выбирает цель, и ждет, пока это соединение не будет установлено. Если тип подключения является общим для всех окон редактора, он также будет активирован, когда пользователь выберет его в другом EditorWindow.

В возвращаемом состоянии известно, какая цель в данный момент подключена и какие цели доступны.

using UnityEngine; using UnityEngine.Profiling; using UnityEditor; using UnityEngine.Networking.PlayerConnection; using UnityEditor.Networking.PlayerConnection; public class MyWindow : EditorWindow { // The state can survive for the life time of the EditorWindow so it's best to store it here and just renew/dispose of it in OnEnable and OnDisable, rather than fetching repeatedly it in OnGUI. IConnectionState attachProfilerState; [MenuItem("Window/My Window")] static void Init() { MyWindow window = (MyWindow)GetWindow(typeof(MyWindow)); window.Show(); } private void OnEnable() { // The state of the connection is not getting serialized and needs to be disposed // Therefore, it's recommended to fetch it in OnEnable and call dispose on it in OnDisable attachProfilerState = PlayerConnectionGUIUtility.GetConnectionState(this, OnConnected); } private void OnConnected(string player) { Debug.Log(string.Format("MyWindow connected to {0}", player)); } private void OnGUI() { // Draw a toolbar across the top of the window and draw the drop-down in the toolbar drop-down style too EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); PlayerConnectionGUILayout.ConnectionTargetSelectionDropdown(attachProfilerState, EditorStyles.toolbarDropDown); switch (attachProfilerState.connectedToTarget) { case ConnectionTarget.None: //This case can never happen within the Editor, since the Editor will always fall back onto a connection to itself. break; case ConnectionTarget.Player: Profiler.enabled = GUILayout.Toggle(Profiler.enabled, string.Format("Profile the attached Player ({0})", attachProfilerState.connectionName), EditorStyles.toolbarButton); break; case ConnectionTarget.Editor: // The name of the Editor or the PlayMode Player would be "Editor" so adding the connectionName here would not add anything. Profiler.enabled = GUILayout.Toggle(Profiler.enabled, "Profile the Player in the Editor", EditorStyles.toolbarButton); break; default: break; } EditorGUILayout.EndHorizontal(); } private void OnDisable() { // Remember to always dispose the state! attachProfilerState.Dispose(); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3