/// <summary>
/// 剪切文本
/// </summary>
/// <param name="input"></param>
public void CopyToClipboard(string input)
{
#if UNITY_ANDROID
// 对Android的调用
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
if (activity == null)
return;
// 复制到剪贴板
activity.Call("copyTextToClipboard", input);
//从剪贴板中获取文本
string text = activity.Call<string>("getTextFromClipboard");
#endif
}
安卓的好了,接着该是高大上的IOS了,有些人看到IOS就怂了,不知道从哪下手,不知道该怎么去写,完全没概念。不好意思,我和你们也是一样怂,我也是大姑娘上轿,头一回!不要怂,就是干,大不了第一次不会成功,就去调试呗!有这个心态,说明你还是幸运的,我们直接是线上项目,没有时间去调试的,做完时,我心里没一点底啊!超怂的那种,,,后来出iPhone的测试包,没想到一次过了,心里的大石头终于落下了!那我们看看IOS是怎么实现的吧?IOS使用的ObjectC和C语言还是有些类似的,在OC中.h文件是声明,.m文件是实现,所以需要Clipboard.h和Clipboard.mm两个文件!
首先去声明这个Clipboard类,
@ interface Clipboard : NSObject
extern "C"
{
/* compare the namelist with system processes */
void _copyTextToClipboard(const char *textList);
}
@end
接下来是Clipboard.mm文件,切记千万不要忘记引用 #import "Clipboard.h"
#import"Clipboard.h"
@implementation Clipboard
//将文本复制到IOS剪贴板
- (void)objc_copyTextToClipboard : (NSString*)text
{
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = text;
}
@end
extern "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];
}
}
.h文件和.mm文件需要放在Unity项目的Assets/Plugins/下的任意路径下即可,一般程序员大多数是有洁癖的不放到Assets/Plugins/IOS/文件夹下,心里就是不舒服!再啰嗦两句.m和.mm有什么区别吗?还真有,“.m"中只能编写Object-C代码,而”.mm"中可以编写C代码。所以有 extern "C" 说明我们使用的是C代码!










