精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Unity3D研究之Android實現本地數據共享

移動開發 Android 游戲開發
開始本篇文章之前我先為大家簡單的介紹一下Android NDK編程的原理, 我們知道Android開發使用JAVA語言來編程它的運行效率要比C/C++低很多,為了讓JAVA語言可以調用 C/C++ 這時候NDK就出現了,使用DNK可以很方便的實現 JAVA 與 C/C++之間的互相調用。NDK的工作原理是使用谷歌提供的NDK工具將C/C++的代碼編譯成 .so文件,最后使用JAVA代碼與.so文件之間相互調用。

下面我先說一下在Unity中結合Android NDK實現本地數據的共享的原理,如下圖所示 ,Unity工程加入NDK后工程大致可分為三個部分 Android(JAVA) 、 C/C++(.so)、Unity(C#)它們之間是可以相互調用的,在之前的文章中我向大家介紹了 Android與Unity之間相互調用的原理,Unity3D研究院之打開Activity與調用JAVA代碼傳遞參數(十八)。這種方式只能相互傳遞String字符串,少量數據傳遞時可以使用這種方式。如果是大量數據這樣就有點限制了,其實我們可以把C/C++的代碼做為一個中轉站,實現兩邊的數據引用與共享。

首先在官網中下載NDK最新的安裝包,安裝包分為三個版本這里我下載使用的是MAC OS版本,最新版本已經到了R8。

下載地址:http://developer.android.com/sdk/ndk/index.html

OK,我們在Eclipse中創建一個Android工程,在res與src平級文件夾目錄下創建一個jni的文件夾。接著在文件夾中創建兩個代碼文件,分別是C與C++還有一個配置文件Android.mk。 

        c.c代碼一共分為兩個方法,先說說方法Java_com_xys_UnityTestActivity_TestAddInt 這個方法是漏給Java代碼調用的,jint表示此方法的返回值為整形,數據類型還可以是jlong 、jfloat、jdouble、 jobject、jboolean、jbyte、jchar、jshort,搞程序的一看就應該明白了吧?我就不一一解釋了。 方法名中java開頭是標準用法,com_xys表示當前程序的包名,UnityTestActivity表示當前類,TestAddInt表示方法名,在Android中就是調用這個方法的,這個方法實現了一個簡單的整形相加的操作。在說說第二個方法int addInt(),這個方法是留給Unity中C#語言調用的,它的結構與上面不一樣不能在Java代碼中調用,同樣它也就是實現整形相加的操作。

先是C的文件 c.c

[代碼]c#/cpp/oc代碼:

01 #include
02 #include
03  
04 //Android中java代碼調用此方法
05 jint
06 Java_com_xys_UnityTestActivity_TestAddInt( JNIEnv* env, jobject thiz ,jint a,jint b)
07 {
08     return addInt(a,b);
09 }
10  
11 //Unity中C#代碼調用此方法
12 int addInt(int a, int b)
13 {
14     return a + b;
15 }

在看看C++文件,它和C文件的調用原理差不多,不過值得注意的是C++中一定要把需要調用的方法寫在extern “C”{ } 中,否則無法調用。

cplus.cpp

 

[代碼]c#/cpp/oc代碼:

01 #include
02 #include
03  
04 //聲明一個類
05 class  MyClass
06 {
07     public:
08     static float add(float a, float b)
09     {
10         return a + b;
11     }
12  
13 };
14  
15 //外部調用的方法需要寫在這里
16 extern "C"
17 {
18  
19     jfloat
20     Java_com_xys_UnityTestActivity_TestAddFloat( JNIEnv* env, jobject thiz ,jfloat a,jfloat b)
21     {
22         return MyClass::add(a,b);
23     }
24  
25     float addFloat(float a,float b)
26     {
27         return MyClass::add(a,b);
28     }
29  
30 }

 再看看第三個配置文件,文件中比較重要的兩個變量 LOCAL_MODULE表示生成出的.so的名稱 LOCAL_SRC_FILES 表示需要編譯的文件,如果是多個C/C++文件中間需要使用  \ 隔開。

Android.mk

[代碼]c#/cpp/oc代碼:

01 LOCAL_PATH := $(call my-dir)
02  
03 include $(CLEAR_VARS)
04  
05 LOCAL_MODULE    := xuanyusong
06 LOCAL_SRC_FILES := \
07 c.c \
08 cplus.cpp
09  
10 include $(BUILD_SHARED_LIBRARY)

 OK ,此時C/C++代碼的準備工作就做完了,下面我們學習如何把c.c 與 cplus.cpp 一個C文件與一個C++文件一同打包進.so文件中。首先打開終端,cd到剛剛創建的jni目錄下,然后執行一開始下載的DNK開發包中的ndk- build命令,你可以直接在android-ndk-r8中找到ndk-build然后拖拽到終端中即可,如果代碼沒有錯誤如圖所示表示.so文件編譯成功。

再看看當前Android工程的目錄結構,libs -> armeabi -> libxuanyusong.so 就是剛剛編譯生成的.so文件,xuanyusong.so前面的lib是系統默認添加的,大家不必驚慌。

下面我們編寫Java代碼,學習如何在java代碼中調用C/C++,代碼比較簡單在OnCreat()方法中分別調用C與C++的方法,并且彈出一個Toast顯示在界面中。

UnityTestActivity.java

[代碼]java代碼:

01 package com.xys;
02  
03 import android.os.Bundle;
04 import android.widget.Toast;
05  
06 import com.unity3d.player.UnityPlayerActivity;
07  
08 public class UnityTestActivity extends UnityPlayerActivity
09 {
10  
11     @Override
12     public void onCreate(Bundle savedInstanceState)
13     {
14         super.onCreate(savedInstanceState);
15  
16         //在這里調用.so中的兩個方法,并且顯示在屏幕中
17         Toast.makeText(getApplicationContext(), "整形  = " + TestAddInt(1,2)+" 浮點型 = " + TestAddFloat(1.5f, 1.1f),
18                  Toast.LENGTH_LONG).show();
19  
20     }  
21  
22     //聲明c.c中的TestAddInt方法
23     public native  int TestAddInt(int a, int b); 
24  
25     //聲明cplus.cpp中的TestAddFloat方法
26     public native  float TestAddFloat(float a, float b); 
27  
28     static
29     {
30         //加載.so文件
31         System.loadLibrary("xuanyusong");
32     } 
33  
34 }

好的,我們終于把Android的工程建立完畢。接著我們需要把工程拷貝至Unity的Android插件中, 插件的制作還有誰不會?? 不會的朋友請看之前的文章,這里就不贅述。如下圖所示,Android插件已經制作完畢放在Unity中。目錄結構如下所示。

編寫test.cs腳本,實現通過C#腳本直接訪問libxuanyusong.so文件,直接把test.cs掛在攝像機上。使用 [DllImport ("xuanyusong")]來引入.so 的方法, 這里注意的是 一定要把.so文件名的lib 與后綴.so去掉, 最后將數據通過GUI顯示在屏幕中。

test.cs

[代碼]c#/cpp/oc代碼:

01 using UnityEngine;
02 using System.Collections;
03 using System.Runtime.InteropServices;
04 public class test : MonoBehaviour {
05  
06     int i = 0 ;
07     float f = 0.0f;
08  
09     //引用C 、C++中的方法
10     [DllImport ("xuanyusong")]
11     private static extern int addInt(int a,int b);
12     [DllImport ("xuanyusong")]
13     private static extern float addFloat(float a,float b); 
14  
15     void Start ()
16     {
17         //調用方法中相加函數
18         i = addInt (1,2);
19         f = addFloat (1.0f,2.2f);
20  
21     }
22  
23     void OnGUI()
24     {
25  
26         //將相加后的信息顯示在屏幕中
27         if(i !=0)
28         GUILayout.Label(" use  c  =" +  i );
29  
30         if(f !=0.0f)
31         GUILayout.Label(" use  cplus  =" +  f );
32     }
33 }

所有的工作已經做完,我們打包編譯上真機,首先是在Android中調用.so時 彈出結果的Toast 。

然后是在Unity中調用.so后通過GUI繪制在屏幕中的結果。

責任編輯:冰凝兒
相關推薦

2012-12-24 09:09:27

AndoidUnity3D

2012-12-24 09:13:23

iOSUnity3D

2012-12-24 09:14:31

ios

2012-12-24 09:19:31

iOSUnity3D

2012-12-24 09:11:58

iOSUnity3D

2013-04-25 09:56:24

unity3D手機游戲引擎

2012-12-24 09:15:57

iOSUnity3D

2012-12-24 09:17:12

iOSUnity3D

2012-12-24 08:48:25

iOSUnity3D

2013-04-25 10:03:07

unity3D手機游戲引擎

2012-12-24 09:08:14

iOSUnity3D

2013-04-25 13:27:11

unity3D手機游戲引擎

2012-12-24 08:51:23

iOSUnity3D

2012-12-24 08:45:19

iOSUnity3D

2013-04-25 09:08:39

unity3D手機游戲引擎

2013-04-09 13:42:23

Unity3D基礎知識梳理

2012-12-24 09:01:41

iOSUnity3D

2012-12-24 08:57:35

iOSUnity3D

2012-12-24 08:46:50

iOSUnity3D

2013-06-14 09:54:04

Unity3D
點贊
收藏

51CTO技術棧公眾號

成人精品999| 2018国产在线| 97国产精品久久久| 欧美女激情福利| 亚洲国产精品99久久| 国产一区二区在线视频播放| 国产51人人成人人人人爽色哟哟| 秋霞电影网一区二区| 久久综合久中文字幕青草| 日本三级日本三级日本三级极| 欧美××××黑人××性爽| 亚洲免费av网站| 久久伊人资源站| 国产欧美综合视频| 日韩在线观看一区二区| 欧美乱大交xxxxx另类电影| 五级黄高潮片90分钟视频| 在线视频成人| 色噜噜狠狠色综合欧洲selulu| 亚洲精品无人区| 天堂中文在线观看视频| 精品在线观看免费| 欧美专区福利在线| 久久国产露脸精品国产| 日韩欧美网站| 日韩精品在线电影| 色婷婷一区二区三区在线观看| 在线观看网站免费入口在线观看国内| 国产精品久久久久久久久免费相片| 国产精品久久久久久久久久久久午夜片 | 欧美xxxx综合视频| 成人性生交大免费看| 91综合精品国产丝袜长腿久久| 欧美三级视频在线| 日本在线观看a| 国精产品一区一区三区mba下载| 国产精品色眯眯| 免费国产一区二区| 天天干,天天操,天天射| 国产一区啦啦啦在线观看| 国产精品视频自在线| 国产农村妇女aaaaa视频| 欧美三级免费| 欧美人在线视频| 成人高潮免费视频| 日韩美女一区二区三区在线观看| 亚洲开心激情网| 催眠调教后宫乱淫校园| 6080亚洲理论片在线观看| 91麻豆精品国产| 日本不卡一区二区在线观看| www.久久| 欧美午夜片在线看| 欧美一级黄色片视频| 在线最新版中文在线| 亚洲大片免费看| 国产美女主播在线| 女子免费在线观看视频www| 亚洲视频免费看| 三级网在线观看| 久草免费在线| 亚洲免费资源在线播放| 超薄肉色丝袜足j调教99| 国产视频一区二区| 亚洲欧美aⅴ...| 青青视频免费在线| bl在线肉h视频大尺度| 亚洲第一成年网| 欧美亚洲一二三区| 欧美精品高清| 欧美日韩中文字幕一区二区| 亚洲精品性视频| 精品国产亚洲一区二区三区在线| 日韩视频在线观看一区二区| 日本成人在线免费观看| a看欧美黄色女同性恋| 亚洲高清一二三区| 一区二区黄色片| 清纯唯美综合亚洲| 久久综合免费视频影院| 久久高清无码视频| 午夜亚洲一区| 国产精品亚洲美女av网站| 中文字幕+乱码+中文| 精东粉嫩av免费一区二区三区| 成人中心免费视频| 亚洲成人av综合| 91年精品国产| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美日韩精品久久| jzzjzzjzz亚洲成熟少妇| 国产精品久久久久久户外露出| 偷拍盗摄高潮叫床对白清晰| 色老头在线观看| 欧美日韩精品国产| 爱爱爱爱免费视频| 99re8这里有精品热视频免费| 欧美精品一区二区三区很污很色的 | 青青草综合视频| 蜜桃麻豆av在线| 欧美视频在线一区| 折磨小男生性器羞耻的故事| 九九在线高清精品视频| 精品国内亚洲在观看18黄| 69精品久久久| 麻豆精品视频在线观看免费| 福利视频一区二区三区| 国产区在线视频| 亚洲图片一区二区| 污污的视频免费| 日韩有码av| 久久99久久亚洲国产| 亚洲成熟少妇视频在线观看| 国产美女精品一区二区三区| 国新精品乱码一区二区三区18| av在线免费一区| 亚洲高清不卡在线| 成年人三级黄色片| 亚洲综合小说图片| 久久人人爽人人| 国产又粗又大又爽| 国产性色一区二区| 国产高清av在线播放| 日韩久久99| 亚洲美女自拍视频| 久久综合成人网| 久久aⅴ国产欧美74aaa| 欧美激情导航| rebdb初裸写真在线观看| 欧美精品丝袜中出| 成人无码av片在线观看| 中文欧美日韩| 懂色av一区二区三区在线播放| 日韩伦理在线观看| 欧洲精品视频在线观看| 特级西西人体wwwww| 午夜天堂精品久久久久| 国产日韩欧美黄色| 成人精品一区二区三区免费| 欧美日韩国产在线播放| aaa黄色大片| 国内揄拍国内精品久久| 91影视免费在线观看| 秋霞成人影院| 精品视频1区2区| 男人的天堂官网| 久久综合影视| 欧美一区二区三区电影在线观看| 色老头在线一区二区三区| 精品国产91九色蝌蚪| 久久久综合久久| 国产福利精品一区| 51xx午夜影福利| 亚洲**毛片| 欧美激情啊啊啊| 亚洲黄色小说网址| 亚洲一区二区美女| 在线播放第一页| 亚洲国产片色| 精品不卡在线| 成人直播视频| 亚洲一区av在线播放| 天堂免费在线视频| 国产精品入口麻豆原神| 色www免费视频| 亚洲色图网站| 国产精品初高中精品久久| 波多野结衣精品| 日韩精品中文字幕在线播放| 亚洲成人第一网站| 欧美高清在线一区二区| 中文字幕亚洲欧洲| 欧美精品麻豆| 久久综合给合久久狠狠色| 欧美动物xxx| 日韩在线激情视频| 国产www免费观看| 亚洲最大的成人av| 欧产日产国产精品98| 久久夜色精品| 一区二区不卡在线观看| 91久久久久久白丝白浆欲热蜜臀| 中文字幕av一区中文字幕天堂| 丰满少妇乱子伦精品看片| aa级大片欧美| 亚洲欧美自偷自拍另类| 亚洲欧美综合| 韩国成人av| 91精品国产经典在线观看| 欧美裸体男粗大视频在线观看| 色呦呦视频在线| 在线观看欧美日本| 中文字幕影音先锋| 2024国产精品视频| 欧美一级xxxx| 99成人免费视频| 亚洲欧洲日本国产| 国产欧美三级电影| 国产精品日韩电影| 免费毛片b在线观看| 日韩在线视频观看| 色猫av在线| 91精品国产综合久久小美女| 五月天综合激情网| 国产精品久久久久久久久免费桃花| 日韩少妇一区二区| 九色综合狠狠综合久久| 日韩中文字幕在线视频观看| 天堂美国久久| 欧美精品亚洲精品| 91成人短视频| 成人精品一区二区三区| 中文字幕乱码在线播放| 欧美日韩国产91| av男人的天堂在线| 日韩经典一区二区三区| 亚洲欧美国产高清va在线播放| 欧美性xxxxx极品少妇| 国产精品999久久久| 最新久久zyz资源站| 亚洲天堂久久新| av在线一区二区三区| 17c国产在线| 日本中文字幕一区| 好吊妞无缓冲视频观看| 国产中文一区| 黄瓜视频免费观看在线观看www| 精品国产一区二区三区| 精品视频第一区| 丁香婷婷成人| 99在线视频播放| 亚洲精品大全| 国产精品视频免费在线| 久九九久频精品短视频| 高清一区二区三区四区五区| 黄色精品在线观看| 色妞欧美日韩在线| 永久免费av片在线观看全网站| 国产视频精品一区二区三区| 欧美 日韩 中文字幕| 日韩欧美一卡二卡| av资源免费看| 欧美高清你懂得| 中文字幕一区二区三区四区免费看| 日韩欧美aaa| 日韩精品在线观看免费| 污片在线观看一区二区| 国产无遮挡又黄又爽在线观看| 亚洲最大成人综合| 久久精品国产亚洲av无码娇色| 一区二区三区资源| 免费一级黄色大片| 亚洲国产sm捆绑调教视频 | 国产三级视频在线播放线观看| 日韩av综合网站| 香蕉国产在线视频| 日韩国产欧美精品一区二区三区| 香蕉视频黄色片| 亚洲精品一二区| 国产经典自拍视频在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 精品99久久久久成人网站免费| 一区二区三区产品免费精品久久75| 青娱乐国产精品| 亚洲成人免费视频| 黄色在线观看国产| 在线免费观看一区| 中文字幕乱码在线观看| 欧美电影影音先锋| 亚洲国产综合网| 亚洲人午夜色婷婷| av资源在线观看免费高清| 久久亚洲一区二区三区四区五区高| jizzjizz亚洲| 国外色69视频在线观看| 一个人www视频在线免费观看| 国产精品久久久久久久久久久久久| 国产精品久久久久77777丨| 亚洲精品免费av| 欧美美女黄色| 亚洲国产成人不卡| 欧美激情另类| 男人添女荫道口图片| 久久免费高清| 久久成年人网站| 成人精品高清在线| 国产精品久久免费观看| 亚洲精品免费看| 黄色在线免费观看| 欧美日韩在线播放一区| 性一交一乱一伧老太| 亚洲一级片在线看| 午夜伦理在线视频| 国产精品h在线观看| 国产精品高清一区二区| 国产一区二区高清不卡| 日韩欧美伦理| 亚洲熟妇无码另类久久久| 麻豆成人免费电影| 完美搭档在线观看| 国产精品久久毛片av大全日韩| 国产亚洲第一页| 欧美在线视频全部完| 亚洲av无码乱码在线观看性色| 亚洲欧美999| 久久香蕉一区| 国产综合色香蕉精品| 欧美中文一区| 992tv快乐视频| 日韩电影一区二区三区四区| 任你躁av一区二区三区| 中文字幕av一区 二区| 国产午夜福利精品| 欧美一区二区三区影视| 狠狠狠综合7777久夜色撩人| 欧美高跟鞋交xxxxxhd| 九七影院97影院理论片久久 | 亚洲 欧美 激情 另类| 久久精品成人欧美大片古装| 原纱央莉成人av片| 成人永久免费| 66久久国产| 国产嫩草在线观看| 91在线看国产| 久久久综合久久| 欧美一级免费观看| 色三级在线观看| 国产成人精品国内自产拍免费看| 国产一区福利| 日韩a级黄色片| 狠狠色丁香久久婷婷综| 欧美色图17p| 欧美伊人久久久久久久久影院| 偷拍自拍在线| 久久久久女教师免费一区| 色999久久久精品人人澡69| 日韩欧美亚洲v片| 久久一区中文字幕| 新91视频在线观看| 日韩欧美国产高清91| 午夜国产在线视频| 91精品国产网站| 欧美sss在线视频| 国产人妻777人伦精品hd| 国产成人精品综合在线观看| 中国毛片直接看| 91精品婷婷国产综合久久性色 | 欧美激情亚洲国产| 一区二区在线视频观看| 男人添女人下部视频免费| 国产精品自在欧美一区| 国产精品老熟女一区二区| 日韩三区在线观看| 91老司机福利在线| 激情小说综合区| 激情网站在线| 综合在线观看色| 黄色av网站免费观看| 精品一区精品二区| 在线看欧美视频| 亚洲图色在线| 精品一区二区精品| 欧美成人手机视频| 欧美mv日韩mv国产网站app| 3344国产永久在线观看视频| 久久99精品久久久水蜜桃| 久久久久国产精品一区三寸| 精品人妻一区二区三区蜜桃视频| 欧美性色欧美a在线播放| 暖暖日本在线观看| 91一区二区三区| 国产亚洲激情| 国产91丝袜美女在线播放| 欧美日韩国产成人在线免费| 色呦呦在线看| 久久国产精品久久精品国产| 日韩高清在线不卡| 亚洲色图100p| 精品久久久久久久久久久久包黑料 | 少妇又紧又色又爽又刺激视频| 最近2019年中文视频免费在线观看| av在线精品| 日韩av在线高清| 国产精品一区二区三区免费观看| 台湾亚洲精品一区二区tv| 精品免费国产一区二区| 中文字幕在线观看一区二区| 成人福利小视频| 国产成人小视频在线观看| 日韩免费一区| 韩国黄色一级片| 色狠狠综合天天综合综合| 亚洲麻豆精品| 好吊色欧美一区二区三区视频| 久久一区视频| 九九九在线视频| 亚洲无线码在线一区观看| 国产一精品一av一免费爽爽| 国产婷婷一区二区三区| 国产精品久久久久四虎|