熱更新
如熱更新果需要更換UI顯示,或者修改游戲的邏輯,這個(gè)時(shí)候,如果不使用熱更新,就需要重新打包,然后讓玩家重新下載(浪費(fèi)流量和時(shí)間,體驗(yàn)不好)。熱更新可以在不重新下載客戶端的情況下,更新游戲的內(nèi)容。
(1)熱更新的實(shí)現(xiàn)方式
1,使用Lua腳本編寫游戲的UI或者其他的邏輯
Lua是一個(gè)精悍小巧的腳本語言,可以跨平臺(tái)運(yùn)行解析,而且不需要編譯的過程
2,使用C#Light
3,使用C#反射技術(shù)
(2)在所有的熱更新技術(shù)中都需要AssetBundle
Unity提供了一個(gè)資源更新技術(shù),就是通過AssetBundle,我們可以通過AssetBundle更新游戲UI,也可以把腳本或者其他代碼當(dāng)成資源打包成AssetBundle然后更新到客戶端。
(3)熱更新技術(shù)的學(xué)習(xí)過程
1,學(xué)習(xí)Lua編程
2,學(xué)習(xí)通過LuaInterface和luanet進(jìn)行Lua和C#的交互通信
3,學(xué)習(xí)使用AssetBundle進(jìn)行資源更新
4,學(xué)習(xí)uLua SimpleFramework
利用us創(chuàng)建自己的熱更新游戲
Lua編程的學(xué)習(xí)
(0)編寫程序
1,找到luaforwindows的安裝目錄,找到SciTE
2,打開SciTE,寫入第一行Lua代碼
print("Hello World")
3,保存代碼,保存為HelloWorld.lua
4,按下F5運(yùn)行
(1)程序分析
Lua中每一條語句后面是沒有;號(hào)的
(2)定義變量
num = 100
這里定義了一個(gè)全局變量叫做num,賦值為100
在Lua中定義變量是沒有類型的,根據(jù)存儲(chǔ)什么數(shù)據(jù),來決定是什么類型
(3)注釋
1,單行注釋 --注釋內(nèi)容
2,多行注釋 --[[ 這里是注釋內(nèi)容 ]]--
(4)Lua中變量類型
4,number小數(shù)類型(Lua中沒有整數(shù)類型)
5,table表類型
myTable = {34,134,34,2,342,4}
myTable[2],表示134,索引是從1開始的。
我們可以使用type()來取得一個(gè)變量的類型
(5) 流程控制
-- if語句
1, if [condition] then
end
2, if [condition] then
else
end
3, if [condition] then
elseif [condition] then
else
end
-- while循環(huán)


--repeat循環(huán)(do while)



--for循環(huán)

break可以終止循環(huán) 沒有continue語法
(6)函數(shù)(方法)


--標(biāo)準(zhǔn)庫
1,數(shù)學(xué)處理的math相關(guān)函數(shù)
2,字符串處理的string相關(guān)函數(shù)

3,表處理的table相關(guān)函數(shù)
在Lua中的table類似C#中的字典,其實(shí)就是一個(gè) key-value鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu)。
1...table的創(chuàng)建
myTable = {}
表名后面使用{}賦值,表示一個(gè)空的表
2...table的賦值
myTable[3]=34 當(dāng)鍵是一個(gè)數(shù)字的時(shí)候的賦值方式
myTable["name"]="taikr" 當(dāng)鍵是一個(gè)字符串的賦值方式
myTable.name = "siki"當(dāng)鍵是一個(gè)字符串的賦值方式
3...table的訪問
myTable[3] 當(dāng)鍵是數(shù)字的時(shí)候,只有這一種訪問方式
myTable.name 當(dāng)鍵是字符串的時(shí)候有兩種訪問方式
myTable["name"]
4...table的第二種創(chuàng)建方式
myTable = {name="taikr",age=18,isMan = false}
(表創(chuàng)建之后依然可以添加數(shù)據(jù))
數(shù)據(jù)訪問
myTable.name
myTable["name"]
5...table的第三種方式(類似數(shù)組的使用)
myTable = {34,34,34,3,4,"sdfdsf"}
當(dāng)沒有鍵的時(shí)候,編譯器會(huì)默認(rèn)給每一個(gè)值,添加一個(gè)數(shù)字的鍵,該鍵從1開始
6...表的遍歷
(1),如果是只有數(shù)字鍵,并且是連續(xù)的可以使用下面的遍歷

(2),所有的表都可以通過下面的方式遍歷

7...表相關(guān)的函數(shù)
(1).table.concat (只針對(duì)只有值的情況)
把表中所有數(shù)據(jù)連成一個(gè)字符串

(2),table.insert
向指定位置插入一個(gè)數(shù)據(jù)

(3),table.move
移動(dòng)數(shù)據(jù)

(4),table.sort(從小到大排列的)
排序

8...通過表來實(shí)現(xiàn)面向?qū)ο?br>
myTable={} 申明對(duì)象
local this = myTable聲明this關(guān)鍵字代表當(dāng)前對(duì)象
--定義并聲明對(duì)象中的屬性
myTable.name="siki"
myTable.age = 110
--定義并聲明對(duì)象中的方法
myTable.function = function ()
[code to execute]
end
function myTable.function ()
[code to execute]
end
