初識Lua

Lua 是一種輕量小巧的腳本語言,用標(biāo)準(zhǔn)C語言編寫并以源代碼形式開放,

其設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。


Lua特性說明

1.采用標(biāo)準(zhǔn)c語言編寫,編譯后源碼僅100多k

2.豐富的擴(kuò)展接口和機(jī)制,自動內(nèi)存管理

3.支持面向過程和函數(shù)式編程

應(yīng)用場景

1.獨(dú)立應(yīng)用腳本

2.游戲開發(fā)

3.web應(yīng)用腳本

.....

熱更新

熱更新技術(shù)就是可以在不重新下載客戶端的情況下,實(shí)現(xiàn)更新游戲內(nèi)容常見于移動端。

c#代碼必須經(jīng)過編譯,編譯過程無法在移動平臺完成,所以當(dāng)游戲邏輯變更的時候,必須要在開發(fā)環(huán)境下對源文件重新編譯,上傳用戶體驗(yàn)差,浪費(fèi)時間


Lua基本語法

print()是Lua中內(nèi)置的輸出語句

Lua中的字符串用””或者’’都可以

?Lua中每一條語句都不需要分號(;)結(jié)束


--> 變量

print(var)

gVar = 0 -- 全局變量

--lua中是沒有數(shù)據(jù)類型的

var = 0

print(type(var)) ?-- number

var1 = 0.2

print(type(var1))? -- number

在lua中number相當(dāng)于C#中的值類型(int float double)

默認(rèn)number 就是 double

var5 = function ()

print("lua")

end

print(type(var5)) ?-- function類型

var6 = {}

print(type(var6)) ?-- table類型


演示局部變量和全局變量,這里的do和end 與C#中的{}差不多

do

c = 5 -- 默認(rèn)是全局變量

local c2 = 1 -- 局部變量

end

print(c,c2) -- 打印出來的就是 5 nil ?


lua可以對多個變量同時賦值,變量列表和值列表 各個元素之間用,隔開,賦值語句右邊會依次賦值給左邊

x,y,z = 1,2,3 ?--如果左邊只有x,y 那x = 1 y = 2 ?,3不管 如果右邊只有1,2那z = nil

運(yùn)算符 ? + - * / %(取余) ^(次方) -(負(fù))

關(guān)系運(yùn)算符 ?> ?>= ?< ?<= ?== ?~=(不等于)

邏輯運(yùn)算符 ?and(&&) or(|) not(!)

連接運(yùn)算符 ..(相當(dāng)于C#中的 + )

長度運(yùn)算符 # ? 能夠得到字符串,表..的長度

運(yùn)算符優(yōu)先級,由高到低

^

not -

* /

+ -

..

> >= < <= == ~=

and

or


Lua分支結(jié)構(gòu)

if雙分支結(jié)構(gòu)

?a = 50

if (a < 0) then

print("a的值小于0")

else

print("a的值大于等于0")

end


if-elseif-else結(jié)構(gòu)

a = -1

if(a>0)then

elseif(a < 0)then

print("a的值小于0")

elseif(a == 0)then

else

end


Lua循環(huán)之 while循環(huán)

輸出1-100的和


sum = 0

a = 0

while(a <= 100)

do

a = a + 1

sum = a + sum

if(a == 100)then

print(sum)

break

end

end

Lua循環(huán)之 repeat..until

輸出15句hello world

a = 10

repeat

print("hello world")

a = a + 1

until a > 15

Lua循環(huán)之for循環(huán)

輸出100以內(nèi)的奇數(shù)

for i=1,100 do

if(i % 2 == 1)

then

print(i)

end

end

Lua的函數(shù)

1.無參無返回值

function Say()

print("LUA")

end

-->函數(shù)的調(diào)用

Say()

無參有返

-- var = function()

-- return "lua"

-- end

-- print(var())

有參無返

var = function (arg)

print("hello"..arg)

end

var(" lua")

有參有返

var = function (a,b)

return a+b

end

print(var(2,1))


演示函數(shù)作為參數(shù)傳遞給函數(shù)

function MyFunc(para)

para()

end

function Say()

print("hello")

end

MyFunc(Say)


演示2

function MyPrint(param)

print("兩個數(shù)的和為",param)

end

function Add(num1,num2,funcParam)

result = num1 + num2

funcParam(result)

--return result

end

Add(10,2,MyPrint)


在lua中函數(shù)可以有多個返回值

function F(a,b)

return a+b,a-b,a*b,a/b

end

var,var1,var2,var3 = F(10,10)

print(var,var1,var2,var3)


lua中函數(shù)的可變的參數(shù)列表

function Sum( ... )

print("求和函數(shù)")

local args = {...}

print("總共傳入"..#args.."個參數(shù)")

sum = args[1] + args[2]

print(sum)

end

Sum(1,5)


數(shù)組

array = {"c#","unity","lua"}

for i=1,3 do

print(array[i])

end

這里需要注意lua中的數(shù)組是從1開始的,當(dāng)然你也可以自定義下標(biāo)


二維數(shù)組

array = {}

for i=1,3 do

array[i] = {}

for j=1,3 do

array[i][j] = i * j

end

end

for i=1,3 do

for j=1,3 do

print(array[i][j])

end

end

演示泛型迭代器

days = {"星期一","星期二","星期三","星期四","星期五",

"星期六","星期七"}

for index,value in pairs(days) do

?print(index,value)

?end

這里的index和value可以改名字但是不能賦值

Lua 表

gMyTable = {

["name"] = "lucy",

["age"] = 18,

["sex"] = "woman",

["name"] = "lily",

"測試",

"測試1"

}


表中的數(shù)據(jù)的存儲都是放在棧中,可以存放數(shù)組,可以存放字典,也可以全放在一個表中

for k,v in pairs(gMyTable) do

print(k,v)

end

這樣讀取表中數(shù)據(jù)可以全部讀取

for i,v in ipairs(gMyTable) do

print(i,v)

end

這樣讀取就只能讀取數(shù)組,并且是從1開始連續(xù)的數(shù)組

當(dāng)表中有兩個一樣的Key值時 根據(jù)Key值取的value值一定是后面進(jìn)棧的元素而不是先進(jìn)棧的那個元素

t1 = {}

t1["key"] = "修改前"

t2 = t1

t2["key"] = "修改后"

print(t2.key)? --- 修改后?

print(t1.key)? --- 修改后

t2 = nil

print(t1.key)? --- 修改后 ?

首先t1和t2都只是引用變量 都指向了同一個地方,當(dāng)t2改變了表中的數(shù)據(jù)后,在用t1得到的值一定是修改后的值,

而 t2 = nil 后只是將t2指向內(nèi)存的地址給消除了,內(nèi)存里的東西還在,沒有改變。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,483評論 0 17
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,762評論 0 33
  • 本文參加#薩格拉斯之墓#故事征集活動,本人承諾,文章內(nèi)容為原創(chuàng),且未在其他平臺發(fā)表過。 我 進(jìn)入...
    白從義閱讀 424評論 0 1
  • 讓早春的風(fēng) 穿過晴空下萌動的密林 追趕陽光的腳步 讓影子斜躺身后 翠竹掩映桃紅 敵不過青春的暖風(fēng) 我們不僅僅只為自...
    微風(fēng)LG閱讀 181評論 2 2
  • 汽車開進(jìn)山區(qū),車中一眼看見連綿的山巒,算不得雄偉,讓我這個不常出門的人去爬,實(shí)在是挑戰(zhàn)極限了。除我之外,一行人都酷...
    吾小桐閱讀 694評論 0 0