2016-03-08 62 views
1

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

我看到这个报道,但它似乎并没有在统一的工作: https://msdn.microsoft.com/en-us/library/kz40084e(v=vs.110).aspx

我只是想能够阅读纯文本。没有图像或任何东西。我也发现了一些其他的文章,但是没有一个代码可以在Unity中使用。

+1

你能在Unity3D C#脚本中显示代码吗?另外,何时您想要访问剪贴板数据? –

+0

您使用什么代码访问数据?为什么它不起作用?... – TheLethalCoder

+0

我想在程序加载时在开始时访问它。 – Andrew

回答

4

我做了一个快速示例,展示如何使用System.Windows.Forms命名空间中的Clipboard类。事实证明,该方法需要[STAThread]方法属性才能工作。我不知道这是否可以在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 
    } 
} 

要了解更多关于什么属性用于,看看这个问题(更重要的是,它的答案):What does [STAThread] do?

编辑:

我做了一点点挖掘,它看起来像Unity3D有一个系统剪贴板的包装。我还没有尝试过,但它看起来应该可以跨越不同的操作系统,而不仅仅是Windows:GUIUtility.systemCopyBuffer

+0

不能在Unity3D中使用它。即使他能够导入所需的DLL,它也不会在其他平台上工作。它只能在Windows上运行。 – Programmer

+1

@程序员的确如此。我找到了关于'EditorGUIUtility.systemCopyBuffer'的Unity3D文档的链接,看起来它可以用来访问操作系统的剪贴板。我编辑了我的答案以包含链接,但我还没有尝试过。 –

+1

+1。 EditorGUIUtility.systemCopyBuffer仅适用于Unity编辑器。 GUIUtility.systemCopyBuffer是正确的类/方法。更新你的答案。这将适用于除Web/WebGL之外的所有平台。 – Programmer