cocos2dx-3.11 使用建立Lua專案以及執行自定義場景
第一節 建立專案
現在用cocos2dx3.11版本寫一個小遊戲,首先建立專案,在終端裡輸入如下指令:
cd/Users/xiaosong1531/Desktop/cocos2d-x-3.11.1/tools/cocos2d-console/bin
進入到bin目錄之後,輸入建立專案的指令:
cocos newCatchFishLua –p com.yuting.CatchFishLua –l lua –d ~/Desktop
然後在桌面上就建立了CatchFishLua這個專案。開啟專案的檔案在這個資料夾裡的:
CatchFishLua/frameworks/runtime-src/proj.ios_mac/CatchFishLua.xcodeproj,雙擊這個檔案,即可開啟。
為了前期除錯編譯方便快捷,我們選擇如下進行編譯(先不選擇ios,ios編譯有點慢)
編譯之後,執行,效果如下:
這樣,一個專案就執行成功了。接下來,看一下專案的組成結構(如下如所示):
之後我們所用的資源全都放在res資料夾下,我們所建立的類基本上都存放在views資料夾下。
關於這個專案是怎樣執行的,我大概說一下:從2.x版本轉過的同學,一般都是找AppDelegate檔案,從lua建立的這個專案中,也有AppDelegate檔案,看下面程式碼:
這樣我們找main.lua就好了。
第一行程式碼的意思是:取消載入luac檔案
第二行和第三行是新增資源搜尋目錄,所以我們可以直接把資源和檔案新增到res和src目錄下。
第十三行是執行main函式,所以就呼叫了require(“app.MyApp”):create():run()
在lua中,檔案的路徑使用”.”,而不使用”/”。在app資料夾下有MyApp.lua檔案,這個檔案返回MyApp,它是繼承mvc檔案下的AppBase檔案,而AppBase檔案只是一個普通的類,在預設的類裡,有三個函式:
ctor(建構函式),new函式,create函式。世界上create函式裡呼叫的就是new函式,而new函式裡又呼叫了建構函式。之後,呼叫run()
在mvc下的ViewBase.lua檔案中:
這樣就運行了一個場景,而場景的內容就是MainScene.lua檔案中設定的。
這是這個預設建立專案的執行流程。當然,在我們實際專案中,可能不按這個流程做,所以接下來,就直接在main函式裡執行自定義的場景。
首先,在跟MainScene.lua同一級目錄下,建立CLogonLayer.lua檔案,並在這個檔案中寫入如下基本內容:
local size =cc.Director:getInstance():getVisibleSize()
local CLogonLayer =class(“CLogonLayer”, function()
return cc.Scene:create()
end)
localCLogonLayer:create()
local scene = CLogonLayer:new()
scene:addChild(scene:createLayer())
return scene
end
localCLogonLayer:createLayer()
local layer = cc.Layer:create()
local label =cc.Label:createWithSystemFont(“Hello Lua”, “Arial”, 32)
label:setPosition(cc.p(size.width/2,size.height/2))
layer:addChild(label)
return layer
end
return CLogonLayer
寫到這裡,這個最基本的場景就寫完了,接下來,在main函式中,我們不採用系統的require(“app.MyApp”):create():run()。
換成我們自定義的場景:
local cLogonLayer =require(“app.views.CLogonLayer”)
local cLogonScene =cLogonLayer.create()
cc.Director:getInstance():runWithScene(cLogonScene)
然後執行,我們就會看到執行在螢幕上就是我們自定義的場景。
下面我們來修改一下螢幕的大小,也就是解析度。
在我的專案中,我的解析度是固定不變的,也就是1280*720
在專案下的config.lua中,將width改為1280,height改為720,autoscale全部改為SHOW_ALL即可。