自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何集成Lua實現(xiàn)到Android游戲

移動開發(fā) iOS
如何集成Lua實現(xiàn)到Android游戲是本文要介紹的內(nèi)容,主要是來學習LUA的集成,如何實現(xiàn)到自己的android游戲中,具體內(nèi)容來看本文詳解。

如何集成Lua實現(xiàn)到Android游戲是本文要介紹的內(nèi)容,主要是來學習LUA的集成,如何實現(xiàn)到自己的android游戲中。當前眾多游戲引入腳本語言作為快速發(fā)布內(nèi)容以及靈活擴展的解決方案,在尋找向Android應用集成Lua腳本語言的方案時,大量零碎的資料并沒有向開發(fā)者指引一個明確的方向。

在這里我把自己通過整合資料完成的方案寫下來,希望能給需要的程序員幫助,歡迎大家提供更快捷的方案。不再贅述Android開發(fā)環(huán)境的配置以及Lua腳本語言的介紹,需要了解的朋友可以Google資料。

我的開發(fā)環(huán)境是Window,列舉我們將要用到的工具和組件:

  1. Native Development Kit r6  http://developer.android.com/sdk/ndk/index.html   
  2. Cygwin 1.7       http://www.cygwin.com/   
  3. Lua 5.1.4 source    http://www.lua.org/   
  4. luajava 1.1 source    http://www.keplerproject.org/luajava/manual.html  

簡要介紹解決方案涉及到的幾個基本概念,高手自動略過:

Lua用C實現(xiàn),所以如果我們不打算用Java重寫解釋器的話,我們需要一種方式使CJava能良好的溝通,熟悉Java的程序員肯定想到了JNI(Java Native Interface)。你可能在Linux環(huán)境和Window環(huán)境使用過JNI,過程并不復雜:寫好Java文件并在其中聲明好native方法→用javah生成C頭文件→為C文件中聲明的函數(shù)寫好實現(xiàn)→編譯C代碼生成動態(tài)鏈接庫,這樣就可以在Java中使用native方法了。

在Android下我們同樣要經(jīng)過這些步驟,只不過編譯生成動態(tài)鏈接庫的時候我們需要Google提供的NDK工具。在Window環(huán)境下使用NDK還需要安裝UNIX模擬環(huán)境Cygwin。我們還將用到一個對Lua進行良好封裝的開源項目luajava。

下面開始詳細步驟:

安裝Cygwin,下載到的setup是一個安裝器,負責在線或者本地找到安裝需要的文件并執(zhí)行安裝,建議把文件下載到本地以備下次使用,安裝過程執(zhí)行到選擇安裝包時一定確定All結(jié)點(樹形結(jié)點的根結(jié)點)在Install狀態(tài)以免需要的包不被安裝,如果是在線安裝時間會很長,耐心等待過后Cygwin安裝成功。
安裝NDK,NDK是一個壓縮文件,下載完成解壓縮(建議解壓縮到一個方便輸入路徑的目錄)。

下載上面lua和luajava的源代碼并解壓縮到任意目錄。

在任意目錄創(chuàng)建luajava4android(名字可以任意)目錄,在目錄下創(chuàng)建子目錄jni(名字指定為jni),把lua和luajava中的C文件(包括頭文件和源文件)都拷入該目錄,并在該目錄下創(chuàng)建Android.mk文件,拷貝下面內(nèi)容至文件: 

  1. LOCAL_PATH := $(call my-dir)   
  2. include $(CLEAR_VARS)   
  3. LOCAL_ARM_MODE :arm 
  4. LOCAL_MODULE :luajava-1.1  
  5. LOCAL_SRC_FILES :lapi.c \  
  6. lauxlib.c \  
  7. lbaselib.c \  
  8. lcode.c \  
  9. ldblib.c \  
  10. ldebug.c \  
  11. ldo.c \  
  12. ldump.c \  
  13. lfunc.c \  
  14. lgc.c \  
  15. linit.c \  
  16. liolib.c \  
  17. llex.c \  
  18. lmathlib.c \  
  19. lmem.c \  
  20. loadlib.c \  
  21. lobject.c \  
  22. lopcodes.c \  
  23. loslib.c \  
  24. lparser.c \  
  25. lstate.c \  
  26. lstring.c \  
  27. lstrlib.c \  
  28. ltable.c \  
  29. ltablib.c \  
  30. ltm.c \  
  31. lundump.c \  
  32. lvm.c \  
  33. lzio.c \  
  34. print.c \  
  35. luajava.c include $(BUILD_SHARED_LIBRARY)  

運行Cygwin安裝目錄下的Cygwin.bat進入命令行界面,進入剛才建立的luajava4android路徑,執(zhí)行ndk-build,成功以后就會在目錄下生成一個lib目錄,里面以.so為后綴名的文件即為我們需要的動態(tài)鏈接庫文件。

把luajava中的java源代碼導入到自己的Android工程中,在工程目錄下建立\libs\armeabi\結(jié)構(gòu)的路徑,并把動態(tài)鏈接庫文件拷入,刷新工程,這樣我們就完成了所有的步驟,并不復雜,可以寫一個簡單的實例來驗證Lua環(huán)境是否搭建好了。

  1. package com.android.hello;   
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.widget.TextView;   
  5. import org.keplerproject.luajava.*;   
  6. public class HelloAndroidActivity extends Activity {   
  7. @Override   
  8. public void onCreate(Bundle savedInstanceState) {  
  9.   LuaState L = LuaStateFactory.newLuaState();  
  10.   L.openLibs();L.LdoString("text = 'Hello Android, I am Lua.'");  
  11.   L.getGlobal("text");String text = L.toString(-1);   
  12.   super.onCreate(savedInstanceState);  
  13.   TextView tv = new TextView(this);  
  14.   tv.setText(text);  
  15.   setContentView(tv);  
  16.   }  
  17. }  

小結(jié):如何集成Lua實現(xiàn)到Android游戲的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-31 17:04:26

2011-04-25 14:45:38

2011-08-24 11:14:25

LUA 游戲

2011-08-24 14:26:08

Lua游戲腳本

2013-05-21 13:33:02

Android游戲開發(fā)異步音樂播放

2014-07-15 10:34:14

Android游戲引擎

2018-06-13 16:38:33

React Nativ組件Android

2011-08-23 14:33:51

Lua捕獲字符串

2011-08-31 15:36:59

Lua解釋器

2011-08-24 13:56:12

Lua游戲

2021-01-12 06:42:50

Lua腳本語言編程語言

2011-08-24 16:41:38

lua調(diào)試器

2011-08-23 09:50:29

LuaPlusLua 腳本

2011-08-24 10:32:03

LuaPlusC++Lua

2011-08-25 15:35:18

Lua游戲對象

2011-09-16 10:25:01

Android應用蠟筆大炮游戲

2011-08-25 10:40:21

Lua游戲

2011-08-24 13:27:07

Lua 游戲C接口腳本

2013-05-21 13:55:51

Android游戲開發(fā)圖像漸變特效

2013-07-24 10:10:08

點贊
收藏

51CTO技術(shù)棧公眾號