lua遊戲開發實踐指南學習筆記1,lua學習筆記

來源:互聯網
上載者:User

lua遊戲開發實踐指南學習筆記1,lua學習筆記

本文是根據lua遊戲開發實踐指南做的一些學習筆記,僅用於繼續自己學習的一些知識。

Lua基礎

1、  語言定義:

在lua語言中,標識符有很大的靈活性(變數和函數名),不過使用者不呢個以數字作為起始符,也要避免底線(_)接大寫字母,因為這種格式為lua自身保留如_Start。

建議使用者使用如下格式和命名規則來定義變數、常量和函數名:

①  常量用全大寫和底線,例如:MY_CONSTANT

②  變數第一個字母小寫,例如:myVariable

③  全形變數第一個字母用小寫g表示,例如:gMyGlobal

④  函數名第一個字母大寫,例如:functionMyFunction()

在lua中,使用者可以在一段文字前家兩個(--)來標記該行行為注釋,還可以使用塊注釋,參考下面的執行個體:

--this is acomment in lua that is on its own line

myValue = 7 --you can also add a comment to a line of script

2、  變數:

在lua中,變數不需要在使用前聲明,這個稍微有點爭議。因為不需要聲明,所以可以在任何地方引入需要的變數。建立、分類和給變數賦值可以參照如下代碼:

myValue = 7;

這段代碼中建立了一個名為myValue的變數,並給它賦值為數字7.可以使用type函數來判斷變數的類型。在Lua中有五種變數類型分別是:nil、Boolean、string、Number和table.

Nil是一個簡單類型,用來表示這個變數還沒有被賦值(參考下例),如果給一個變數賦值為nil,那麼實際上表示刪除該變數的意思。

myValue =nil—this deletes the variable

local myValue – this creates a local variable with aninitial nil value

Boolean 類型的變數只有兩種值:true和false。Boolean變數在條件表示中常用,參考下面的例子:

MyValue true – creates a Boolean variable with a value oftrue

String 類型在lua中相對比較簡單,lua字串可以小道一個字元,也可以包含百萬字元以上。

Number在lua中是雙精確度浮點數。Lua沒有整數(由於小於1w14的數值不存在取整誤差,所以不需要整數類型),數字可以用下列方式表達:

myNumber =7

myNumber = 0.756

table在lua中最強大也是最容易造成困擾的資料類型,我們可以把它當作數組來使用。

在控制台測試如下代碼:

Ready>myTable = {2,4,6,8,10}

Ready>print(myTable[3])

6

在例子中,table相關的函數看起來就像儲存許多變數的數組。我們使用中括弧和索引來擷取table中的值。

3、  局部變數和全域變數

Lua變數預設是全域的,也就是說,變數的值在整個會話中保持不變,除非指令碼改變它。當使用全域變數時,變數名前面加一個g字母,定義局部變數可以給它設定一個初值,也可以不用,參考下面的樣本:

Function MyFunction()

Local myX = 7

If myX<10 then

Local myY = “hello world”

End

Print(myY);

End

4、  運算子

運算子是特殊的符號,可以讓兩個值得到運算結果。算數運算子可以得到出計算結果,關係運算子得到Boolean的結果。

算數運算子,Lua 支援下列標準的算數運算子:

加,例如:a+b=c;

剪,例如:a-b=c

乘,例如:a*b=c

除,例如:a/b =c

關係運算子

使用者可以試用下列標準的關係運算子比較值或者運算式:

If a==b then

Prinf(“a is equal to b”)

End

If a-=b then

Print(“a is not equal to b”)

End

If a <b then

Print(“a is less than b”)

End

If a >b then

Prin(“a is greater than b”)

End

邏輯運算子

邏輯運算子測試兩個參數並返回相互關聯的結果。在lua中,邏輯運算子使用小寫字母。

And運算子比較兩個參數,如果一個參數是false,則返回false;否則返回第一個參數的值。

a = 5

b = 10

c = 20

if (a < 10)and (b<20) then

print(“this returns true”)

end

if (a>c)and(b<c) then

print(“this returns false”)

end

5、  控制結構

Lua包含了一小部分重要的控制結構,可以讓使用者在指令碼中有充分的選擇自由。所有的控制結構都可以用以end作為結束標記。

If語句很常見,如果使用者熟悉其他程式設計語言或者指令碼語言,肯定見多很多次。If語言可以判斷一個參數,如果是true的話,那麼程式塊就會被執行。例如:

myValue = 7;

if myValue <10 then

print(“myValue is less than ten”)

end

if (myValue >5)and(myValue<10)then

print(“myValue is between five andten”)

end

我們還可以使用else和另外一耳光程式塊來擴充if語句的功能。如果if語句得到false的結果,那麼被else-end括起來的程式塊將被執行。例如:

myValue =20

if myValue == 21 then

print(“the Value is 21”)

else

print(“the value is not 21”)

end

此外,使用者還可以使用elseif 關鍵字來添加一系列的條件式。在AI指令碼中,這個關鍵字非誠的有用,因為Lua不支援case句式。例如:

myValue =17

if myValue<6 then

print(“myValue is between zero andfive”)

elseif myValue<11 then

print(“myValue is between six andten”)

elseif myValue <16 then

print(“myValue is between elevenand twenty”)

elseif myValue <21the

print(“myValue is between sixteenand twenty”)

else

prin(“myValue is greater thantwenty”)

end

while 和repeat

while 和repeat控制結構非常相似,它們都可以迴圈執行一段指令碼知道滿足某個條件。While控制結構首先判斷一個參數,如果條件式true,那麼程式塊會被執行(也有可能永遠不被執行)。Repeat控制結構則是在最後判斷參數,這就保證該程式塊至少被執行一次。

While控制結構使用do關鍵字,和if控制結構的then關鍵字一樣,用來標記有條件的程式塊的開始,參考下面樣本:

Index =1

While index<10 do

Prinf(“loop pass :”,index)

Index = index+1

End

For控制結構

Lua提供兩種for控制結構(數字型和通用型),這裡我們先解釋數字型控制結構,for控制結構可以讓使用者根據運算式的值有限次地執行一段指令碼,例如:

for index =1,10 do

print(index)

end

在for關鍵字之後,需要提供變數的範圍,遍曆這個範圍內的每一個值的同時,程式塊會被執行。Do關鍵字標記程式塊的開始,end標記程式塊的結束。

使用者可以在第三個參數中定義”step”的值。例如:

for index = 10,1,-1 do

print(index)

end

for index =1,100,2 do

print(index)

end

在使用for控制結構時,使用者需要注意一下幾點。首先,迴圈次數只是第一次執行的時候確定,因此,就算使用者更改了參數的值元不會影響最終迴圈的次數。其次,迴圈結構中的變數是局部變數,一旦迴圈結束就會被清楚。如果想儲存他們的值,那麼必須使用全域變數或者更進階別的局部變數。

break控制結構

break語句可以從迴圈控制結構中強制退出。使用者不能再迴圈外使用它,而且它必須在程式塊的最後(通常是if-then語句)。參考下面樣本:

for index =1,100 do

if index ==52 then

print(“52--ouch”)

break

end

print(“the value is”,index’)

end

print(“this is the that will be executed after the break”)

 


lua遊戲開發實踐指南 怎

是書都可以看看 有些有PDF 的 可以先找找看
 
Lua遊戲開發實踐指南 源碼

Lua僅僅是一個擴充指令碼語言,不同的遊戲,對Lua的整合是完全不同的。

比如,一個對魔獸世界的Lua指令碼外掛程式很熟悉的人,你讓他去搞另一款遊戲的Lua指令碼,他必須得重來,他先前的經驗不太管用。

所以,不存在通用的Lua遊戲開發實踐,關鍵還是學習Lua本身。

Lua學了後,你對哪個遊戲感興趣,就去研讀這個遊戲對Lua的整合文檔,看遊戲給你提供了些什麼介面。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.