Добавлен , опубликован
Скрипт позволяет задействовать буфер обмена в редакторе 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("Новое содержимое буфера")
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
25
10 лет назад
2
Огромное тебе спасибо, что этим занимаешься, я как будущий пользователь Unity очень благодарен за статьи
0
27
10 лет назад
0
П4ела, это так, скриптик, а не статья, нужные мелочи о которых имхо тоже нужно писать )
0
9
10 лет назад
0
Можно уточнение: функции из скрипта все самописные, а объект Clipboard - от классов Unity?
0
27
10 лет назад
Отредактирован Devion
0
GenElCon,
У Unity есть такое свойство, реализующее буфер обмена, оно называется GUIUtility.systemCopyBuffer. Однако это поле имеет internal доступ и в рамках разработки считается недоступным.
Данный класс просто реализует доступ к этому полю через рефлексию.
0
15
10 лет назад
0
GenElCon:
Можно уточнение: функции из скрипта все самописные, а объект Clipboard - от классов Unity?
Там же инициализация класса Сlipboard, он самописный.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.