您的位置:首页 > 移动开发 > Unity3D

unity调用ios的剪贴板

2016-06-28 15:50 615 查看
参考博客 http://www.cnblogs.com/xiaozefeng/p/Unity_Android_IOS.html?utm_source=tuicool&utm_medium=referral

本文基于unity 5.3.5 xcode 7.3  我参照 枫露霜阳 大牛的博客实现的,做了部分修改和整理,

关于unity和ios的交互问题,必须要用unity 的 c# 代码调用 ios 中的 c 代码,再用 c 调用ios的
oc 代码。最近也对unity在ios设备中的view跳转问题小有研究,不久便会写出来给大家看看,共同学习。

下面是代码部分,@ interface Clipboard : NSObject

extern "C"
{
/* 接口方法 */
void _copyTextToClipboard(const char *textList);
}

@end这个是Clipboard.h文件,这里的方法,就会在unity的c#代码中调用
#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];
}

}这是Clipboard.mm文件,因为.m文件不能写
c 。在xcode中编写的时候不要担心错误问题,这点请教过 枫露霜阳大牛的。
ok,ios中的代码部分已经完成,这两个文件要放到,(你的工程目录/Assets/Plugins/iOS/)文件夹下面。这样打包的时候会放到xcode的libraries文件夹里面。

然后就是在unity中的c#代码。

首先是在接口文件****.cs文件中声明接口

#if UNITY_IPHONE
[DllImport("__Internal")]
public static extern void _copyTextToClipboard(string text);//对ios剪切板的调用
#endif然后是方法内容,unity中需要调用的方法,
//剪切文本
public static void CopyToClipboard(string input)
{
#if UNITY_ANDROID
// 对Android的调用
AndroidJavaObject androidObject = new AndroidJavaObject("ClipboardTools");
AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");

if (activity == null)
return ;
// 复制到剪贴板
androidObject.Call("copyTextToClipboard", activity, input);

// 从剪贴板中获取文本
//// String text = androidObject.Call<String>("getTextFromClipboard");

#elif UNITY_IPHONE
//调用clipboard.h中的接口
_copyTextToClipboard (input);
Debug.LogError ("CopyToClipboard_______"+input);
#endif
}

其中的安卓方法见我另一篇博客,也是参考 枫露霜阳的方法实现的。
如此就是在需要的用的时候 ******.CopyToClipboard (sign.text);
这样就实现了。

一直信仰这句话,前人栽树后人乘凉,感谢大牛的经验分享,努力成为那样的人。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity unity3d android ios xcode