精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人黄色片在线观看| 波多野结衣 在线| а√天堂资源地址在线下载| 久久精品99国产精品| 久久在线精品视频| 国产精品一区二区人妻喷水| 日韩性xxx| 亚洲欧美一区二区视频| 国产98在线|日韩| 亚洲精品中文字幕乱码三区91| 日韩在线视屏| 精品少妇一区二区三区在线视频| 欧美极品欧美精品欧美图片| 欧美边添边摸边做边爱免费| 成人黄色大片在线观看| 国产精品久久久久久久久久久久 | 成人动漫一区二区三区| 欧洲亚洲在线视频| www青青草原| 狠狠操综合网| 亚洲成人久久一区| 久久久久久久久久久久久久久国产| 欧美草逼视频| 国产精品久久夜| 麻豆一区区三区四区产品精品蜜桃| 一级片视频播放| 亚洲一区区二区| 欧美另类暴力丝袜| 女人裸体性做爰全过| 免费成人三级| 日韩欧美卡一卡二| 黄色小视频免费网站| 成人性生活视频| 亚洲成av人片观看| 伊人久久av导航| 国产日本在线观看| 91视频在线看| 精品久久久三级| 国产 欧美 自拍| 久久草av在线| 国产精品69精品一区二区三区| 国产真实的和子乱拍在线观看| 亚洲国产精品综合久久久| 国产亚洲视频中文字幕视频| 中文字幕一区二区三区人妻不卡| 涩爱av色老久久精品偷偷鲁| 91精品国产综合久久精品性色| 黑森林精品导航| 国产精品迅雷| 日韩欧美在线免费| 18禁免费无码无遮挡不卡网站 | 欧美精品久久久久a| 精品国产国产综合精品| 欧美午夜精彩| 亚洲天堂一区二区三区| 37p粉嫩大胆色噜噜噜| 欧美毛片免费观看| 日韩av在线一区二区| www国产视频| 日韩av不卡一区| 日韩大陆欧美高清视频区| 人妻 日韩 欧美 综合 制服| 久久电影在线| 日韩av一区在线观看| 中文字幕xxx| 精品中文一区| 国产亚洲精品久久久久动| 中文字幕网站在线观看| 欧美特黄一级大片| 久久亚洲春色中文字幕| 国产波霸爆乳一区二区| 亚洲日本欧美| 国产成人亚洲精品| 中国女人真人一级毛片| 久久av中文字幕片| 97超碰资源| 天堂中文资源在线观看| 久久久影视传媒| 色一情一乱一伦一区二区三区| 91免费在线| 亚洲精品高清在线| 青娱乐自拍偷拍| 国产精品极品美女在线观看| 欧美精品在欧美一区二区少妇| 五月天婷婷影视| 国产成人av毛片| 亚洲色图国产精品| 婷婷伊人五月天| 在线国产日韩| 国产精品美腿一区在线看| 97视频免费在线| 成人免费黄色大片| 日本高清不卡一区二区三| 黄色av免费在线| 欧美日韩国产在线看| www.激情小说.com| 99精品国产高清一区二区麻豆| 日韩久久免费视频| 欧美乱大交做爰xxxⅹ小说| 韩国在线视频一区| 窝窝社区一区二区| 欧美三级电影精品| 手机看片国产精品| 亚洲资源网你懂的| 久久综合五月天| 亚洲免费在线视频观看| 久久精品久久99精品久久| 不卡视频一区| 69久久久久| 欧美日韩国产精品一区二区不卡中文| 久久国产精品国产精品| 国产一区二区三区不卡av| 国产午夜精品一区理论片飘花| 日本妇女毛茸茸| 日本成人在线一区| 韩日午夜在线资源一区二区| 男人的天堂在线视频免费观看| 午夜视频一区二区三区| 五月天丁香花婷婷| 国产日产精品一区二区三区四区的观看方式 | 天天爽天天爽夜夜爽| 日韩中文字幕视频网| 一区二区三欧美| 日韩三级一区二区三区| 国内精品伊人久久久久av影院 | 国产精品丝袜久久久久久高清| 国产91麻豆视频| 亚洲精品国产第一综合99久久| 一区二区三区入口| 久操成人av| 97久久久久久| 午夜精品久久久久久久第一页按摩| 国产日韩三级在线| 欧美日韩在线中文| 91成人噜噜噜在线播放| 久久精品久久久久久| 中文字幕精品无码亚| 久久婷婷综合激情| 日韩av资源在线| 图片婷婷一区| 欧美亚洲视频在线观看| 男人天堂网在线视频| 玉米视频成人免费看| 天天干天天曰天天操| 久久精品亚洲人成影院| 国产精品一区二区3区| 视频一区二区免费| 亚洲一区成人在线| 性生交大片免费看l| 欧美激情日韩| 99国产高清| 国产高清在线a视频大全| 日韩精品中午字幕| 久久精品一级片| 成人小视频免费在线观看| 欧美a级免费视频| 一区二区三区视频免费视频观看网站| 久久精品一区中文字幕| 国产精品久久久久久免费播放| 国产精品久久久久久久久图文区| 黄大色黄女片18第一次| 欧美xxxx中国| 91社区国产高清| 婷婷色在线资源| 日韩精品中文字幕在线一区| 国产午夜激情视频| 99久久99久久久精品齐齐| 日本成年人网址| 精品视频久久| 成人春色激情网| 超碰在线观看免费| 亚洲精品一区二区三区四区高清| 亚洲黄色三级视频| 国产人伦精品一区二区| www.色就是色.com| 女人天堂亚洲aⅴ在线观看| 国产精品区一区二区三含羞草| 女人让男人操自己视频在线观看| 国产性色av一区二区| 国产一区二区麻豆| 亚洲国产精品久久久久婷婷884| 中文精品在线观看| 黄一区二区三区| 日韩人妻无码精品久久久不卡| 要久久电视剧全集免费| 成人国产亚洲精品a区天堂华泰| 色www永久免费视频首页在线 | 成人国产精品久久久久久亚洲| 永久免费网站在线| 亚洲男女性事视频| 国产免费黄色片| 精品久久久久国产| 国产三级精品三级观看| 成人激情午夜影院| 中文字幕永久视频| 亚洲电影在线| 亚洲国产精品久久久久久女王| 91蜜桃臀久久一区二区| 国产99久久精品一区二区永久免费| 黄色大片在线播放| 亚洲色图狂野欧美| 精品女同一区二区三区| 色88888久久久久久影院野外| 视频这里只有精品| 国产日韩v精品一区二区| gogo亚洲国模私拍人体| 三级影片在线观看欧美日韩一区二区 | 国产成人精品av在线观| 色综合天天在线| 欧美xxxx黑人xyx性爽| 中文字幕精品一区二区三区精品| 熟女人妻一区二区三区免费看| 天使萌一区二区三区免费观看| 丁香六月激情网| 成人在线亚洲| 免费在线观看91| ady日本映画久久精品一区二区| 国产精品视频一区二区三区四| 超碰97免费在线| 欧美另类高清videos| 在线看的av网站| 亚洲色图国产精品| 天堂在线免费av| 精品成人一区二区| av在线亚洲天堂| 在线播放欧美女士性生活| 国产中文字幕视频| 欧美日韩免费在线观看| 久久精品免费av| 一个色综合网站| 极品魔鬼身材女神啪啪精品| 中文字幕av不卡| 日韩视频在线观看免费视频| 99re视频精品| 一级欧美一级日韩片| 国产超碰在线一区| www.桃色.com| 国模无码大尺度一区二区三区| 色国产在线视频| 免费在线观看一区二区三区| 国产激情在线观看视频| 国产一区91| 国内外成人免费激情视频| 亚洲精品三级| 欧美成人高潮一二区在线看| 在线欧美三区| 欧美日韩性生活片| 一区二区日本视频| 国产亚洲欧美在线视频| 国产精品美女| 日韩中文字幕三区| 久久看片网站| 三年中国国语在线播放免费| 日韩在线一区二区三区| 超碰在线97免费| 久久机这里只有精品| 久久精品亚洲天堂| 国产999精品久久久久久 | 久久亚洲一区二区三区明星换脸| 97香蕉碰碰人妻国产欧美| 99久久免费国产| 高潮毛片无遮挡| 国产精品乱子久久久久| 最新一区二区三区| 亚洲天堂免费在线观看视频| 粉嫩av性色av蜜臀av网站| 一区二区三区日韩在线观看| 久久精品国产亚洲av麻豆色欲 | 中文字幕一区图| 黑人中文字幕一区二区三区| 亚洲尤物av| 中文字幕一区二区三区四区五区六区 | 韩国av一区二区三区四区| 韩国三级丰满少妇高潮| 91在线观看下载| 一级二级黄色片| 一区二区在线观看视频| 日本一区二区三区免费视频| 日本高清不卡视频| 国产日韩欧美一区二区东京热 | 成年人在线观看视频| 久久精品91久久久久久再现| 羞羞电影在线观看www| 668精品在线视频| 国产69精品久久久久9999人| 亚洲最大成人在线| 亚洲人成网77777色在线播放| 亚洲免费不卡| 在线视频观看日韩| 国产精品入口免费软件| 国产suv一区二区三区88区| 永久免费成人代码| 亚洲日本青草视频在线怡红院| 日韩精品在线免费看| 欧美偷拍一区二区| 亚洲第一页在线观看| 在线观看不卡av| 波多野结衣久久| 91精品久久久久久久久久久| 久久综合五月婷婷| 在线观看成人av电影| 国产精品一卡| 乳色吐息在线观看| 国产午夜精品理论片a级大结局| 欧美精品成人久久| 欧美性猛片aaaaaaa做受| 日本波多野结衣在线| 久久精品中文字幕免费mv| 最新中文字幕在线播放| 亚洲综合一区二区不卡| 日本一二区不卡| 欧美女人性生活视频| 国产精品99久久久久久久女警| 欧美偷拍一区二区三区| 亚洲电影中文字幕在线观看| 91美女精品网站| 国产午夜精品视频| 中老年在线免费视频| 国产精品一区二区三区四区五区| 香蕉视频官网在线观看日本一区二区| 日韩欧美xxxx| 91亚洲国产成人精品一区二三| 成人自拍小视频| 欧美色网一区二区| 男人av在线| 欧美亚洲国产视频| 欧美网色网址| 人妻av中文系列| 成人精品免费网站| 久久久久久久福利| 欧美一区二区成人6969| 欧美极品另类| 国产欧美精品在线播放| 欧州一区二区| 一区二区三区免费播放| 久久久美女毛片| 亚洲免费黄色网址| 亚洲精品理论电影| h片在线观看视频免费免费| 97久久精品午夜一区二区| 欧美激情性爽国产精品17p| 最好看的中文字幕| 亚洲精品ww久久久久久p站| 国产免费一区二区三区最新不卡| 色爱av美腿丝袜综合粉嫩av| 国产香蕉久久| 中文字幕日韩一区二区三区不卡 | 影音先锋日韩精品| 思思久久精品视频| 亚洲欧美综合色| 99热这里只有精品在线| 美女精品视频一区| 亚洲无线观看| 男人添女荫道口图片| 成人av在线网站| 国产日产精品一区二区三区| 亚洲区免费影片| 成人av集中营| 中文字幕免费在线不卡| 精品一区二区影视| 国产这里有精品| 亚洲成在人线av| 在线视频cao| 一区二区免费电影| 国产麻豆视频一区二区| 精品视频一区二区在线观看| 精品国产91亚洲一区二区三区婷婷| 国产h片在线观看| 欧美亚洲精品日韩| 久久电影网站中文字幕| 久久久精品视频免费观看| 亚洲精品mp4| 日本成人片在线| 国产激情在线看| 99久久精品免费精品国产| 国产美女www| 久久久精品影院| 欧美日韩精品一区二区三区在线观看| 欧美污视频网站| 国产精品久久久久久久久果冻传媒| www.黄色国产| 国产va免费精品高清在线观看 | 久久综合国产精品台湾中文娱乐网| 亚洲国产欧美国产第一区| av动漫在线观看| 亚洲欧美激情插| 日韩a在线观看| 成人激情视频在线观看| 亚洲国产黄色| 亚洲精品国产精品乱码在线观看| 欧美一级一级性生活免费录像| 鲁鲁在线中文| 日韩人妻精品一区二区三区| av午夜精品一区二区三区| 亚洲天堂免费av| 午夜精品蜜臀一区二区三区免费| 青草国产精品| 国产精品手机在线观看| 欧美日韩国产一级二级| 国模精品视频|