亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

Unity移動端的復制要這么寫示例代碼

2019-10-21 18:39:56
字體:
來源:轉載
供稿:網友

前言

Unity官網提供了詳盡的文檔和豐富的教學視頻,昨天跟著視頻做了一個簡單的3d游戲“roll-a-ball”。游戲涉及了許多Unity的基本知識,用來入門很不錯。

本文主要給大家了關于Unity移動端的復制的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

游戲上線很久了,有些玩家慢慢就流失了,為了讓剛流失的玩家再度回歸所以做了召回功能!如果一個200級的玩家10天沒上線且成功召回的,就會給予召回玩家豐厚的獎勵!

Q:那如何召回這個流失的玩家呢?

A:召回肯定得有類似召回碼的東東啊,是的。服務器根據玩家ID生成一定位數的字母和數字組合,發給客戶端,客戶端召回界面顯示召回碼

Q:不可能讓玩家一個一個在聊天框輸入吧?玩家肯定會罵:“什么傻逼設計,老子不玩了,,,”

A:玩家是大爺,所以做復制召回嗎功能還是很有必要的!

那么如何實現這個功能呢?Unity不支持復制嗎?是的,Unity是支持,僅僅支持PC端的,就是這玩意TextEditor!

TextEditor text = new TextEditor();text.content = new GUIContent(yourText);text.OnFocus();text.Copy();

這么就實現了PC端的復制,那么移動端的怎么做呢,別著急,小伙子,一個一個來,先看看Android是怎么復制的!

首先創建安卓庫工程,在MainActivity里添加這段代碼就好,導出jar包在Unity中調用即可,接下來會說Unity里如何去調用!

步驟:

1. 在Untiy3D項目的Assets目錄下創建Plugins目錄。

2. 在Plugins目錄下創建Android目錄。

3. 在Android 目錄下創建bin目錄。

4. 在bin 目錄下放置你編寫的類的jar包

package com.wuzhang.testandroid;import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;import android.R.string;import android.app.Activity;import android.app.ActivityManager;import android.app.ActivityManager.RunningAppProcessInfo;import android.app.Service;import android.content.ClipData;import android.content.ClipDescription;import android.content.ClipboardManager;import android.content.Context;import android.os.Looper;import android.support.v4.app.NotificationCompat;import android.support.v4.content.FileProvider;import android.view.ContextThemeWrapper;public class MainActivity extends UnityPlayerActivity { private Vibrator mVibrator01;//聲明一個振動器對象  private static Context instance; private String TAG = "log"; public static String gameObgectName = "Main Camera"; public static String methodName = "OnCoderReturn"; public static ClipboardManager clipboard = null; private BatteryListener listener; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  instance = getApplicationContext(); } public static Context getContext() {  return instance; }  /*  * 向剪貼板中添加文本   */ public void copyTextToClipboard(final String str)  throws Exception {    if (Looper.myLooper() == null){     Looper.prepare();    }    clipboard = (ClipboardManager) MainActivity.instance.getSystemService(Activity.CLIPBOARD_SERVICE);    ClipData textCd = ClipData.newPlainText("data", str);    clipboard.setPrimaryClip(textCd);  }   /*  * 從剪貼板中獲取文本  */ 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();  }  return "null"; }}

安卓中如何調用這段代碼呢?

/// <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 : NSObjectextern "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;}@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]; }}

.h文件和.mm文件需要放在Unity項目的Assets/Plugins/下的任意路徑下即可,一般程序員大多數是有潔癖的不放到Assets/Plugins/IOS/文件夾下,心里就是不舒服!再啰嗦兩句.m和.mm有什么區別嗎?還真有,“.m"中只能編寫Object-C代碼,而”.mm"中可以編寫C代碼。所以有 extern "C" 說明我們使用的是C代碼!

Unity3D對IOS類的調用

1. 在Untiy3D項目的Assets目錄下創建Plugins目錄。

2. 在Plugins目錄下創建IOS目錄。

3. 在IOS 目錄下放置".h"文件和".mm"文件。

好了,趕緊說怎么調用呢,這會都夜里1點了,再啰嗦就天亮了!調用.h聲明的函數即可:

//調用clipboard.h中的接口 _copyTextToClipboard (input); Debug.LogError ("CopyToClipboard_______"+input); 

就這么調用就OK了,是不是很失望!這個是所有平臺的調用

public static 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);#elif UNITY_IPHONE  //調用clipboard.h中的接口   _copyTextToClipboard (input);   Debug.LogError ("CopyToClipboard_______"+input); #elif UNITY_EDITOR  TextEditor te = new TextEditor();  te.content = new GUIContent(input);  te.OnFocus();  te.Copy();#endif }

好了,到此寫完了,現在感覺熬夜寫博客事件很奢侈的事情了,睡覺嘍!有問題的小伙伴記得@我,共同交流,下篇寫獲取手機剩余存儲空間的插件!

傳送門:https://gitee.com/wuzhang/UnityCallClipboard.git

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第五色综合网| 岛国av一区二区| 国产日韩欧美在线播放| 欧美一级电影在线| 日韩免费观看高清| 成人疯狂猛交xxx| 日韩成人中文电影| 国产精品av在线播放| 国产日韩换脸av一区在线观看| 久久久国产成人精品| 久久久久久久香蕉网| 亚洲人成电影网站色xx| 国产不卡在线观看| 一本大道香蕉久在线播放29| 国产精品夜间视频香蕉| 一区二区亚洲欧洲国产日韩| 成人黄色在线观看| 亚洲综合在线播放| 日韩中文在线中文网三级| 欧美电影免费观看电视剧大全| 国产在线视频一区| 久久精品国产一区二区三区| 亚洲电影免费在线观看| 538国产精品视频一区二区| 久久999免费视频| 成人激情在线观看| 日本高清不卡在线| 日韩欧美一区二区三区| 国产精品视频资源| 日韩视频永久免费观看| 午夜精品久久久久久久久久久久久| 九色精品美女在线| 国产精品视频专区| 欧美大尺度激情区在线播放| 亚洲男人天堂视频| 亚洲国内精品视频| 国产视频综合在线| 日韩在线视频播放| 中文字幕在线亚洲| 欧美区在线播放| 欧美最猛性xxxxx免费| 日韩欧亚中文在线| 国产成人自拍视频在线观看| 青草热久免费精品视频| 国产日本欧美一区二区三区在线| 亚洲丝袜在线视频| 国产一区二区丝袜高跟鞋图片| 国产91精品在线播放| 日韩av在线免费观看一区| 国产自产女人91一区在线观看| 在线性视频日韩欧美| 国产亚洲精品久久久久久牛牛| 欧美精品国产精品日韩精品| 欧美大片免费观看在线观看网站推荐| 欧美在线www| 久久久在线观看| 国产精品永久免费观看| 欧美在线精品免播放器视频| 92国产精品视频| 日韩电影中文字幕av| 国产欧美亚洲视频| 亚洲国产精品悠悠久久琪琪| 最近中文字幕2019免费| 成人两性免费视频| 成人妇女免费播放久久久| 久久精品国产久精国产思思| 亚洲自拍偷拍第一页| 欧美日韩在线视频首页| 欧美一级在线亚洲天堂| 欧美性videos高清精品| 亚洲国内高清视频| 国产精品扒开腿做爽爽爽的视频| 精品动漫一区二区| 77777亚洲午夜久久多人| 亚洲视频自拍偷拍| 日韩电影在线观看免费| 黑人巨大精品欧美一区二区一视频| 国产成人综合精品在线| 在线观看精品自拍私拍| 国产偷国产偷亚洲清高网站| 2020欧美日韩在线视频| 久久久久久91香蕉国产| 国产成人精品亚洲精品| 亚洲va欧美va国产综合久久| 91a在线视频| 日韩欧美成人区| 日韩电影中文字幕在线| 国产精品久久久久久久久免费| 国产精品一区二区av影院萌芽| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品va在线播放我和闺蜜| 久久九九热免费视频| 国产成人精品日本亚洲专区61| 精品视频—区二区三区免费| 国产精品电影一区| 91啪国产在线| 国产精品视频男人的天堂| 成人福利网站在线观看| 成人国产在线激情| 欧美又大又粗又长| 成人欧美一区二区三区黑人孕妇| 亚洲片在线资源| 亚洲欧美日韩一区二区三区在线| 北条麻妃一区二区三区中文字幕| 国产精品露脸av在线| 亚洲a级在线观看| 青青草原成人在线视频| 亚洲精品资源美女情侣酒店| 亚洲片国产一区一级在线观看| 久久精品99久久久香蕉| 国产成人精品视频在线观看| 欧美成人午夜视频| 日韩av色综合| 亚洲天堂成人在线| 欧美片一区二区三区| 亚洲乱亚洲乱妇无码| 精品女厕一区二区三区| 久久国产精品99国产精| 热久久美女精品天天吊色| 一区二区三区黄色| 亚洲毛茸茸少妇高潮呻吟| 欧美激情videoshd| 揄拍成人国产精品视频| 国产精品三级久久久久久电影| 久久全球大尺度高清视频| 久久伊人精品视频| 美女扒开尿口让男人操亚洲视频网站| 国产日产欧美精品| 国产精品中文久久久久久久| 精品人伦一区二区三区蜜桃免费| 成人激情视频在线播放| 日本久久精品视频| www高清在线视频日韩欧美| 日韩中文视频免费在线观看| 久久久精品日本| 国产中文字幕亚洲| 色香阁99久久精品久久久| 91午夜在线播放| 国产精品久久久久久久天堂| 97视频在线免费观看| 欧美噜噜久久久xxx| 久久精品国产v日韩v亚洲| 日韩av有码在线| 亚洲网站在线看| 操91在线视频| 亚洲欧美精品一区二区| 久久久精品在线观看| 日韩av电影手机在线观看| 日韩一区二区福利| 午夜精品在线观看| 国产精品第七十二页| 国产精品视频久久久久| 成人黄色av免费在线观看| 538国产精品一区二区在线| 成人有码在线视频| 日韩女在线观看| 久久久久久久久久久成人| 国产精品电影一区| 国产精品福利观看| 91社影院在线观看| 91精品美女在线| 精品无人国产偷自产在线| 欧美一级bbbbb性bbbb喷潮片| 91精品在线观看视频|