Unity3D实现复制文本到系统剪贴板

Unity中将文本拷贝到系统剪贴板,兼容UnityEditor、PC、Android和iOS。

C# 部分

ClipboardHelper.cs如下:

using UnityEngine;public class ClipboardHelper{    ///     /// 复制文本到系统剪贴板    ///     ///     public static void Copy(string text)    {#if UNITY_ANDROID && !UNITY_EDITOR        //For Android        AndroidJavaObject javaClipboardHelper = new AndroidJavaObject("com.game.ClipboardHelper");             AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");        if (activity != null)        {            javaClipboardHelper.Call("copyTextToClipboard", activity, text);        }#elif UNITY_IOS && !UNITY_EDITOR        //For iOS        _copyTextToClipboard(text);#else        //方法一        var textEditor = new TextEditor();        textEditor.text = text;        textEditor.OnFocus();        textEditor.SelectAll();        textEditor.Copy();        //方法二        GUIUtility.systemCopyBuffer = text;#endif    }#if UNITY_IOS    [DllImport ("__Internal")]    private static extern void _copyTextToClipboard(string text);#endif}

Android 部分

利用AndroidStudio新建一个Module,这里起名为ClipboardHelper,包名例如com.game,创建ClipboardHelper.java如下:

import android.app.Activity;import android.content.ClipData;import android.content.ClipDescription;import android.content.ClipboardManager;import android.content.Context;public class ClipboardHelper {    public static ClipboardManager clipboard = null;    public void copyTextToClipboard(Context activity, String str) throws Exception {        clipboard = (ClipboardManager) activity.getSystemService(Activity.CLIPBOARD_SERVICE);        ClipData clipData = ClipData.newPlainText("data", str);        clipboard.setPrimaryClip(clipData);    }    public String getTextFromClipboard() {        if (clipboard != null && clipboard.hasPrimaryClip() && clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {            ClipData cdText = clipboard.getPrimaryClip();            ClipData.Item item = cdText.getItemAt(0);            return item.getText().toString();        } else {            return "";        }    }}

将该Module构建输出成.aar格式的文件,或直接解压该.aar文件取出其中的.jar包,将其放入Unity项目中的Assets/Plugins/Android目录下即可。

iOS 部分

可直接使用文本编辑器创建头文件和oc源文件,ClipboardHelper.h如下:

#import @interface Clipboard : NSObjectextern "C"{    void _copyTextToClipboard(const char *textList);}@end

ClipboardHelper.mm如下:

#import "ClipboardHelper.h"@implementation Clipboard- (void) objc_copyTextToClipboard : (NSString*)text{     UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];     pasteboard.string = text;}@endextern "C" {    static Clipboard *iosClipboard;    void _copyTextToClipboard(const char *textList)    {        NSString *text = [NSString stringWithUTF8String: textList];        if (iosClipboard == NULL)        {            iosClipboard = [[Clipboard alloc] init];        }        [iosClipboard objc_copyTextToClipboard: text];    }}

将以上两个文件放入Unity项目中的Assets/Plugins/iOS目录下即可。

更多相关文章

  1. 为什么要学习 Markdown?究竟有什么用?
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. Android(安卓)数据存储方式有哪几种
  7. C++与java混合编写和C++与OC混合编写 笔记
  8. Android(安卓)studio插件大全
  9. android BannerView实现自动轮播广告的用法(参考自github)

随机推荐

  1. android的makefile 特有的 dd
  2. Android仿360悬浮小球自定义view实现示例
  3. Android实习生 —— 数据存储与共享
  4. Android(安卓)手势基础 GestureDetector
  5. 【Android】更改程序图标
  6. android 为什么初始界面scrollView.scrol
  7. Android通过获取Ip的方法判断手机是否联
  8. android coordinatorLayout 使用简介
  9. Android仿淘宝头条垂直滚动,垂直走马灯,公
  10. Android(安卓)AsyncTask 源码解析