【问题标题】:Read Text from Clipboard从剪贴板读取文本
【发布时间】:2016-03-08 12:30:02
【问题描述】:

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

我看过这篇文章,但它似乎在 Unity 中不起作用: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.gettext

我只想能够阅读纯文本。没有图像或任何东西。我还找到了一些关于此的其他文章,但是这些代码在 Unity 中都不起作用。

【问题讨论】:

  • 你能在你的 Unity3D C# 脚本中显示代码吗?另外,您究竟想在什么时候访问剪贴板数据?
  • 您使用什么代码来访问数据?为什么它不起作用?...
  • 我想在程序启动时访问它。
  • 我使用的东西类似于 if Clipboard.ContainsText() 但“剪贴板”未被识别。
  • 什么平台? Windows 或 Mac 还是全部?

标签: c# unity3d


【解决方案1】:

我做了一个简单的例子来展示如何使用来自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

【讨论】:

  • 不能在 Unity3D 中使用它。即使他能够导入所需的 DLL,它也无法在其他平台上运行。它只能在 Windows 上运行。
  • @Programmer 是的。我找到了一个关于 EditorGUIUtility.systemCopyBuffer 的 Unity3D 文档链接,看起来它可以用来访问操作系统的剪贴板。我已经编辑了答案以包含链接,但我自己还没有尝试过。
  • +1。 EditorGUIUtility.systemCopyBuffer 仅适用于 Unity 编辑器。 GUIUtility.systemCopyBuffer 是正确的类/方法。更新你的答案。这将适用于除 Web/WebGL 之外的所有平台。
  • @Programmer,谢谢,我已经用GUIUtility.systemCopyBuffer 的文档链接更新了我的答案,但该链接没有太多信息,我也找不到任何示例。稍后我将不得不在 Unity 中尝试一下,看看它是否/如何工作。
  • np。在评论您的答案之前,我对其进行了测试。有用。顺便说一句,EditorGUIUtility 继承自 GUIUtility。
猜你喜欢
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2023-01-17
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
相关资源
最近更新 更多