Буфер обмена

Published
Скрипт позволяет задействовать буфер обмена в редакторе Unity.
using UnityEngine;
using System;
using System.Reflection;

public static class Clipboard
{
    private static PropertyInfo _systemCopyBufferProperty = null;
    private static PropertyInfo GetSystemCopyBufferProperty()
    {
        if (_systemCopyBufferProperty == null)
        {
            _systemCopyBufferProperty = typeof(GUIUtility).GetProperty("systemCopyBuffer", BindingFlags.Static | BindingFlags.NonPublic);
            if (_systemCopyBufferProperty == null)
                throw new Exception("Нет доступа к 'GUIUtility.systemCopyBuffer'. Возможно он удален или переименован");
        }
        return _systemCopyBufferProperty;
    }

    public static string GetAsString()
    {
        return (string) GetAsObject();
    }

    public static object GetAsObject()
    {
        return GetSystemCopyBufferProperty().GetValue(null, null);
    }

    public static void Set(object value)
    {
        GetSystemCopyBufferProperty().SetValue(null, value, null);
    }
}
Добавить в папку Editor внутри проекта.
Пример использования:
var currentBuffer = Clipboard.GetAsString(); //Чтение как строки
var currentBuffer2 = Clipboard.GetAsObject(); //Чтение как объекта
Clipboard.Set("Новое содержимое буфера")


Views: 3 046

П4ела #1 - 7 years ago 2
Голосов: +2 / -0
Огромное тебе спасибо, что этим занимаешься, я как будущий пользователь Unity очень благодарен за статьи
Devion #2 - 7 years ago 0
Голосов: +0 / -0
П4ела, это так, скриптик, а не статья, нужные мелочи о которых имхо тоже нужно писать )
GeneralElConsul #3 - 7 years ago 0
Голосов: +0 / -0
Можно уточнение: функции из скрипта все самописные, а объект Clipboard - от классов Unity?
Devion #4 - 7 years ago (изм. ) 0
Голосов: +0 / -0
GenElCon,
У Unity есть такое свойство, реализующее буфер обмена, оно называется GUIUtility.systemCopyBuffer. Однако это поле имеет internal доступ и в рамках разработки считается недоступным.
Данный класс просто реализует доступ к этому полю через рефлексию.
t1ok #5 - 7 years ago 0
Голосов: +0 / -0
GenElCon:
Можно уточнение: функции из скрипта все самописные, а объект Clipboard - от классов Unity?
Там же инициализация класса Сlipboard, он самописный.