Скрипт позволяет задействовать буфер обмена в редакторе 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("Новое содержимое буфера")Смотрите также:
Комментарии
Огромное тебе спасибо, что этим занимаешься, я как будущий пользователь Unity очень благодарен за статьи
Можно уточнение: функции из скрипта все самописные, а объект Clipboard - от классов Unity?
GenElCon,
У Unity есть такое свойство, реализующее буфер обмена, оно называется GUIUtility.systemCopyBuffer. Однако это поле имеет internal доступ и в рамках разработки считается недоступным.
Данный класс просто реализует доступ к этому полю через рефлексию.
Можно уточнение: функции из скрипта все самописные, а объект Clipboard - от классов Unity?
Там же инициализация класса Сlipboard, он самописный.


<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>