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 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);
这样就实现了。
一直信仰这句话,前人栽树后人乘凉,感谢大牛的经验分享,努力成为那样的人。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件