123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
-
- using UnityEngine;
- using UnityEngine.EventSystems;
- using System.Runtime.InteropServices;
- public class WebGLCopyAndPasteAPI {
- #if UNITY_WEBGL
- [DllImport("__Internal")]
- private static extern void initWebGLCopyAndPaste(string objectName, string cutCopyCallbackFuncName, string pasteCallbackFuncName);
- [DllImport("__Internal")]
- private static extern void passCopyToBrowser(string str);
- #endif
- static public void Init(string objectName, string cutCopyCallbackFuncName, string pasteCallbackFuncName)
- {
- #if UNITY_WEBGL
- initWebGLCopyAndPaste(objectName, cutCopyCallbackFuncName, pasteCallbackFuncName);
- #endif
- }
- static public void PassCopyToBrowser(string str)
- {
- #if UNITY_WEBGL
- passCopyToBrowser(str);
- #endif
- }
- }
- public class WebGLCopyAndPaste : MonoBehaviour {
- void Start()
- {
- if (!Application.isEditor) {
- WebGLCopyAndPasteAPI.Init(this.name, "GetClipboard", "ReceivePaste");
- }
- }
- private void SendKey(string baseKey)
- {
- string appleKey = "%" + baseKey;
- string naturalKey = "^" + baseKey;
- var currentObj = EventSystem.current.currentSelectedGameObject;
- if (currentObj == null) {
- return;
- }
- {
- var input = currentObj.GetComponent<UnityEngine.UI.InputField>();
- if (input != null) {
-
-
- input.ProcessEvent(Event.KeyboardEvent(naturalKey));
- input.ProcessEvent(Event.KeyboardEvent(appleKey));
-
- return;
- }
- }
- #if WEBGL_COPY_AND_PASTE_SUPPORT_TEXTMESH_PRO
- {
- var input = currentObj.GetComponent<TMPro.TMP_InputField>();
- if (input != null) {
-
-
-
- input.ProcessEvent(Event.KeyboardEvent(naturalKey));
- input.ProcessEvent(Event.KeyboardEvent(appleKey));
- return;
- }
- }
- #endif
- }
- public void GetClipboard(string key)
- {
- SendKey(key);
- WebGLCopyAndPasteAPI.PassCopyToBrowser(GUIUtility.systemCopyBuffer);
- }
- public void ReceivePaste(string str)
- {
- GUIUtility.systemCopyBuffer = str;
- }
- }
|