从剪贴板中读取文本

And*_*rew 5 c# unity-game-engine

我试图在Unity中的C#中读取剪贴板中的文本,然后将其设置为变量.

我看过这篇文章,但它似乎在Unity中不起作用:https: //msdn.microsoft.com/en-us/library/kz40084e(v = vs.110).aspx

我只想阅读纯文本.没有图像或任何东西.我还发现了一些其他文章,但Unity中的代码都不起作用.

Lar*_*sen 13

我做了一个快速示例来说明如何使用命名空间中的ClipboardSystem.Windows.Forms.事实证明,该方法需要[STAThread]method属性才能工作.我不知道是否可以在Unity3D C#脚本中使用它.

[STAThread]
static void Main(string[] args)
{
    if (Clipboard.ContainsText(TextDataFormat.Text))
    {
        string clipboardText = Clipboard.GetText(TextDataFormat.Text);
        // Do whatever you need to do with clipboardText
    }
}
Run Code Online (Sandbox Code Playgroud)

要了解有关该属性的用途的更多信息,请查看此问题(更重要的是,它的答案):[STAThread]做什么?

编辑:

我做了一些挖掘,看起来Unity3D有一个系统剪贴板的包装器.我还没有尝试过,但看起来它应该适用于不同的操作系统,而不仅仅适用于Windows:GUIUtility.systemCopyBuffer

  • @Programmer那是真的.我找到了一个关于`EditorGUIUtility.systemCopyBuffer`的Unity3D文档的链接,看起来它可以用来访问操作系统的剪贴板.我已经编辑了我的答案以包含链接,但我还没有尝试过. (3认同)
  • +1.EditorGUIUtility.systemCopyBuffer仅适用于Unity Editor.GUIUtility.systemCopyBuffer是正确的类/方法.更新你的答案.这适用于除Web/WebGL之外的所有平台. (2认同)
  • NP.我在评论你的答案之前测试了它.有用.顺便说一句,EditorGUIUtility继承自GUIUtility. (2认同)