3
最近,我和朋友一直在研究love2d遊戲,但在開發計算機硬盤驅動器的早期階段停止工作,意味着只有我的朋友才能在其上工作。現在我有一臺電腦,並且我想在Love2d中創建一個主菜單,但是love.load函數中有很多代碼(世界的一代等等)。我的問題是,當遊戲運行時,我可以更改love.load中的內容嗎?例如,主菜單加載,然後按下開始按鈕時加載世界的世代。更改love.load功能
最近,我和朋友一直在研究love2d遊戲,但在開發計算機硬盤驅動器的早期階段停止工作,意味着只有我的朋友才能在其上工作。現在我有一臺電腦,並且我想在Love2d中創建一個主菜單,但是love.load函數中有很多代碼(世界的一代等等)。我的問題是,當遊戲運行時,我可以更改love.load中的內容嗎?例如,主菜單加載,然後按下開始按鈕時加載世界的世代。更改love.load功能
love.load
函數只運行一次。正如您所提到的,它通常用於設置數據結構並預加載其他資源。您可以使用它來處理世界預加載和菜單預加載。然後,通過某種狀態控制活動。一個簡化的例子:
local state = "menu"
function love.load()
preLoadMenu()
preLoadWorld()
end
function love.update(dt)
if state == "menu" then
updateMenu()
else
updateWorld()
end
end
function love.draw()
if state == "menu" then
drawMenu()
else
drawWorld()
end
end
function love.mousepressed(x, y, button)
if startClicked(x,y,button) then
state = "world"
end
end
這是可以想象的,你不希望預先加載負載的遊戲絕對一切。也許你的遊戲太大了。如果是這種情況,請考慮使用活動場景。場景可能是菜單,也可能是遊戲級別。再次,一個簡化的例子:
local currentScene
function love.load()
currentScene = loadMenu()
end
function love.update(dt)
currentScene.update(dt)
end
function love.draw()
currentScene.draw()
end
function love.mousepressed(x, y, button)
if startClicked(x,y,button) then
currentScene = loadWorld()
end
end
第二個選項從長遠來看更加靈活。它可以處理任何數量和類型的場景,而不需要每個場景的條件邏輯。這將需要一點「對象」思維。所有場景都需要一致的方式來更新和繪製。
如果你的世界需要一段時間來加載,你可能想要顯示一個臨時的「世界正在加載」的場景,這樣你的用戶就不會不耐煩了。