2014-01-19 85 views
2

我想用Love 2d引擎編寫一個簡單的遊戲。它使用lua作爲腳本語言。我有一些陣列問題,找不到任何解決方案。這是我的問題:在Lua中尋址一個索引

for i = 1, 10 do 
    objects.asteroids = {} 
    objects.asteroids[i] = {} 
    objects.asteroids[i].body = love.physics.newBody(world, 650/2, 650/2, "dynamic") 
    objects.asteroids[i].size = 3 
    objects.asteroids[i].angle = math.random(6) 
end 

在我試圖做以下操作相同的功能:

for i = 1, 10 do 
    objects.asteroids[i].size = 2 
end 

,並試圖運行我比賽的時候,我得到這個錯誤:

錯誤 main.lua:48:試圖索引一個零值

Wher e行48是指這行代碼:

objects.asteroids[i].size = 2 

回答

2

您在每次循環迭代中覆蓋objects.asteroids

for i = 1, 10 do 
    objects.asteroids = {} -- <== Here. 
    objects.asteroids[i] = {} 

這意思是,你試圖添加結束了小行星對象上循環的下一個步驟被刪除,因爲object.asteroids被設置爲一個新的{}表和舊此後將無法訪問。

您可能要重新安排它像這樣:

objects.asteroids = {} 

for i = 1, 10 do 
    objects.asteroids[i] = {} 
    -- ... 
+0

謝謝,現在看來那麼微不足道:)。 –