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

如何讓Lua集成到自己的Android游戲

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

如何讓Lua集成到自己的Android游戲是本文要介紹的內(nèi)容,當(dāng)前眾多游戲引入腳本語言作為快速發(fā)布內(nèi)容以及靈活擴展的解決方案,在尋找向Android應(yīng)用集成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重寫解釋器的話,我們需要一種方式使C和Java能良好的溝通,熟悉Java的程序員肯定想到了JNI(Java Native Interface)。你可能在Linux環(huán)境和Window環(huán)境使用過JNI,過程并不復(fù)雜:寫好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是一個安裝器,負責(zé)在線或者本地找到安裝需要的文件并執(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源代碼導(dǎo)入到自己的Android工程中,在工程目錄下建立\libs\armeabi\結(jié)構(gòu)的路徑,并把動態(tài)鏈接庫文件拷入,刷新工程,這樣我們就完成了所有的步驟,并不復(fù)雜,可以寫一個簡單的實例來驗證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. /** Called when the activity is first created. */      
  8.  @Override       
  9.  public void onCreate(Bundle savedInstanceState) {          
  10.    LuaState L = LuaStateFactory.newLuaState();          
  11.    L.openLibs();          
  12.    L.LdoString("text = 'Hello Android, I am Lua.'");          
  13.    L.getGlobal("text");          
  14.    String text = L.toString(-1);          
  15.   super.onCreate(savedInstanceState);          
  16.   TextView tv = new TextView(this);          
  17.   tv.setText(text);          
  18.   setContentView(tv);      
  19.  }  

下面是運行結(jié)果圖:

如何讓Lua集成到自己的Android游戲

到此Android下的Lua環(huán)境就配置好了,至于怎么運用就看各位程序員的設(shè)計了。

小結(jié):如何讓Lua集成到自己的Android游戲的內(nèi)容介紹完了,西瓦過通過本文的學(xué)習(xí)能對你有所幫助!

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

2011-08-29 09:49:35

LuaAndroid游戲

2011-09-16 10:25:01

Android應(yīng)用蠟筆大炮游戲

2011-08-24 10:24:54

EditPlusLUA

2011-08-24 11:14:25

LUA 游戲

2022-05-24 10:10:33

顧問CIO首席信息官

2011-08-25 16:38:06

EditPluslua

2020-06-11 08:26:05

信息泄漏密碼網(wǎng)絡(luò)安全

2019-06-03 09:11:59

2011-06-02 10:09:18

2011-08-24 14:26:08

Lua游戲腳本

2022-05-06 10:11:21

開源游戲桌游

2014-01-02 13:08:38

2014-07-15 10:34:14

Android游戲引擎

2011-05-31 15:56:52

游戲啟動菜單Android

2012-07-31 09:20:15

移動應(yīng)用市場推廣

2014-04-03 10:29:27

iOSAndroid跨界平臺

2018-06-13 16:38:33

React Nativ組件Android

2013-08-21 14:31:27

App推廣選擇合適發(fā)行商移動應(yīng)用市場

2010-06-18 10:44:42

職場喜歡

2012-09-11 09:19:35

JavaScriptJSjQ
點贊
收藏

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