1.安卓方面的准备和代码编写
准备:必看https://blog.csdn.net/qq_15020543/article/details/82976850(先不要导出aar或jar包)
代码编写:参考自https://blog.csdn.net/mseol/article/details/78518754#commentsedit
在自己的Library新建一个类
package com.li.copy;
import android.app.Fragment;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.ClipData;
import com.unity3d.player.UnityPlayer;
public class MyPluginClass extends Fragment //注意,这里继承的是Fragment。要具体理解可以了解下 Android Activity 的层级结构
{
private static final String TAG = "Plugin";
private static MyPluginClass Instance = null;
private String gameObjectName;
public static MyPluginClass GetInstance(String gameObject)
{
if(Instance == null)
{
Instance = new MyPluginClass();
Instance.gameObjectName = gameObject;
UnityPlayer.currentActivity.getFragmentManager().beginTransaction().add(Instance, TAG).commit();
}
return Instance;
}
//拷贝String到剪贴板
public void onClickCopy(String str) {
//获取剪贴板管理器:
ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
// 创建普通字符型ClipData
ClipData mClipData = ClipData.newPlainText("Label", str); //Label是任意文字标签
// 将ClipData内容放到系统剪贴板里。
cm.setPrimaryClip(mClipData);
}
//粘贴
public String onClickPaste(){
ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
String result = "";
ClipData clipData = cm.getPrimaryClip();
ClipData.Item item = clipData.getItemAt(0); //这里获取第一条,也可以用遍历获取任意条
CharSequence charSequence = item.coerceToText(getActivity().getApplicationContext());
result = charSequence.toString();
return result;
}
}
根据需求导出aar/jar包,并放在Unity指定位置
2.创建Unity场景
Unity代码
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class name : MonoBehaviour
{
AndroidJavaObject jo = null;
public Text text1;
public Text text2;
void Start()
{
AndroidJavaClass jc = new AndroidJavaClass("com.li.copy.MyPluginClass"); //和java代码包名统一
jo = jc.CallStatic<AndroidJavaObject>("GetInstance", gameObject.name); //Main Camera
}
public void OnCopy()
{
jo.Call("onClickCopy", text1.text);
}
public void OnPaste()
{
text2.text = jo.Call<string>("onClickPaste");
}
}
把脚本挂在到Directional Light上
给两个Button绑定方法
打包,真机测试。
总结:我学到了很多,Android环境,导包,通信,第三方SDK的引入。另外针对这个功能我说一下,函数方法都提供好了,只需要在需要用到的地方调用就可以了。参考案例