2017-07-29 72 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