VersionControlObject.GetExtension
Declaration
public T GetExtension();Возвращаемое значение
T Объект расширения, если он поддерживается VersionControlObject. null в противном случае.
Описание
Получает необязательный объект расширения.
Вы можете реализовать дополнительные расширения в вашем VersionControlObject для улучшения пользовательского опыта. Например, IIconOverlayExtension позволяет вам рисовать VCS состояния над значками ассетов. Полный список расширений см. в документации. Будущие версии Unity может добавить новые внутренние номера или прекратить вызов существующих.
Реализация по умолчанию GetExtension пытается VersionControlObject тип расширения. Это позволяет реализовать расширения непосредственно в вашем VersionControlObject derived class.
using UnityEditor.VersionControl; using UnityEngine;
[VersionControl("Custom")] public class CustomVersionControlObject : VersionControlObject, IIconOverlayExtension { static Texture2D s_Icon;
static Texture2D GetIcon() { if (s_Icon == null) { s_Icon = new Texture2D(8, 8); for (var y = 0; y < s_Icon.height; ++y) { for (var x = 0; x < s_Icon.width; ++x) { var border = y == 0 || y == s_Icon.height - 1 || x == 0 || x == s_Icon.width - 1; var color = border ? Color.white : Color.red; s_Icon.SetPixel(x, y, color); } } s_Icon.Apply(); } return s_Icon; }
public void DrawOverlay(string assetPath, IconOverlayType type, Rect rect) { var topLeft = new Rect(rect.x, rect.y, 8, 8); var icon = GetIcon(); GUI.DrawTexture(topLeft, icon); } }
Для поддержки расширений, реализованных в отдельных классах, необходимо перезаписать этот метод и возвратить соответствующий объект.
using UnityEditor.VersionControl; using UnityEngine;
public class CustomIconOverlayExtension : IIconOverlayExtension { public void DrawOverlay(string assetPath, IconOverlayType type, Rect rect) { var topLeft = new Rect(rect.x, rect.y, 8, 8); GUI.DrawTexture(topLeft, Texture2D.whiteTexture); } }
[VersionControl("Custom")] public class CustomVersionControlObject : VersionControlObject { readonly IIconOverlayExtension m_IconOverlayExtension = new CustomIconOverlayExtension();
public override T GetExtension<T>() { return m_IconOverlayExtension as T; } }
Дополнительные ресурсы: ,VersionControlObject,, ,IIconOverlayExtension,, ,IInspectorWindowExtension,, ,IPopupMenuExtension,, ,ISettingsInspectorExtension,.