2017-07-29 81 views
2

我有统一5.6在Windows(VS2017社区)这个片段:读取和写入剪贴板

public static void setClipboardStr(string str) 
{ 
    try 
    { 
     if (Clipboard.ContainsText()) 
     { 
      // ...doesn't matter if true or false - 
      // from here on, I can't copy+paste inside 
      // the game or outside until I close the app. 
      // If I had an error instead of try/catch or 
      // check if it contains text, the error will 
      // remain UNTIL I REBOOT (beyond the app closing). 
     } 
    } 
    catch(Exception ex) 
    { 
     Debug.LogError(ex); 
    } 
} 

每当我检查,如果是文字或没有时,使用剪贴板以任何形式,甚至,它破坏了剪贴板,直到我关闭应用程序。现在,这是一个Unity错误吗? VS错误?有什么我不明白的吗?我应该用什么,而不是?

+0

为什么downvote我的帖子,甚至没有评论?这非常懦弱。这是一个合法的问题 - 如果剪贴板包含图像,只需使用Clipboard.ContainsText()将游戏/应用内外的剪贴板分开即可。 –

回答

3

Clipboard.ContainsText来自System.Windows.Forms命名空间。这些在Unity中不受支持。一个人很幸运,因为Unity使用了Mono,因此很有可能得到正确的工作。此外,这不是便携式,所以不要使用Unity中此命名空间中的任何内容。

应该使用什么?

写入到剪贴板:从剪贴板

GUIUtility.systemCopyBuffer = "Hello"; 

阅读:

string clipBoard = GUIUtility.systemCopyBuffer; 

应该工作。如果没有,您可以使用他们的C++ API从头开始实施您自己的剪贴板API。您必须为每个平台执行此操作。

+0

你是个摇滚人,而且速度....因为剪贴板排序工作,并且是大量论坛的最佳答案(....直到我后来向下滚动以查看它已损坏),这让人感到非常困惑。 –

+2

欢迎您,不要因为反对投票而不愿意提出未来的问题。你的问题看起来很好,代码和其他一切。有些人总是会投票。快乐的编码! – Programmer