Unity – How to copy a string to Clipboard
In Unity there is a cross-platform way to copy a string to Clipboard. Using the GUIUtility class I’m going to show you how to copy a string into the user’s Clipboard. This should work in Unity 2017 and beyond.
By using the GUIUtility class, from UnityEngine, we can fit any C# object with a ToString() function into the Clipboard!
Clipboard Extension
To make it easily accessible I made the function as a string extension. By doing it this way we can use the function on any string anywhere in the code.
using UnityEngine; public static class ClipboardExtension { /// <summary> /// Puts the string into the Clipboard. /// </summary> public static void CopyToClipboard(this string str) { GUIUtility.systemCopyBuffer = str; } }
Example
Here is an example on how to copy different elements into the Clipboard using the ClipboardExtension:
public string GetSomeString() { return "This is a string coming from a function!"; } public void TestCopyToClipboard() { // + Using a standard string string testString = "Am I in the Clipboard?"; testString.CopyToClipboard(); // The content of test1 is in the Clipboard now! // + Using a method to get a string GetSomeString().CopyToClipboard(); // The content returned by GetSomeString() is in the Clipboard now! // + Using a C# object with a ToString() method Color colorTest = Color.red; colorTest.ToString().CopyToClipboard(); // The string version of the object colorTest is in the clipboard now! }
You can try out this code for yourself! Run it, then try pasting your Clipboard into a notepad. It has been tested and works on PC, Android and iOS!
Thank you! Excellent Post!!!!
I see you updated the article to use GUIUtility, but not the next. It still references TextEditor. You might want to update that as well ๐
I meant “the text”, not “the next”
Indeed! Thanks ๐
Hello!
FIrst of all, thank you very much for the post!
Though I am using it and it is not working.
It copies the text inside Unity but using WebGL in a browser is not working.
I have also tried with this other plugin and nothing neither. https://github.com/sanukin39/UniClipboard
Do you know further information?
Thank you so much!
On WebGL first you need to get permission from the browser and then get access to clipboard. As far as I remember it only works with Javascript so you need to write a native JS extension that communicates between browser and Unity.
Sorry for the late reply, try using:
GUIUtility.systemCopyBuffer = “My Copied text”;
Unfortunately, this doesn’t work on webGL either
It seems that copy and pasting in WebGL is not working because of security reasons as discussed in this thread: https://forum.unity.com/threads/copy-paste-has-anyone-built-a-good-solution-for-this.401851/
ty