|
函數問題
Nov 28, 2017 3:21:44 GMT
jasoninferno 發表於 Nov 28, 2017 3:21:44 GMT
請問我寫一個函數裡面有全局變量 F=false 但是在迴圈跑時 print F1 出來都是true 請問要如何修改?
-- 施放技能 function autoskill(skill_use, skill_delay, F)
if skill_use == true then
if F == true then
toast("施放")
F = false
wait(skill_delay)
end
end
end
-- 主迴圈 F1 = true
while (true) do
autoskill(skill_1_use, skill_1_delay, F1)
end
|
|
|
函數問題
Nov 28, 2017 3:30:00 GMT
AnkuLua 發表於 Nov 28, 2017 3:30:00 GMT
您把 F1 當參數傳進 autoskill() 的F F 就不是全域了 要在autoskill() 裡面直接改F1 的值
|
|
|
函數問題
Nov 28, 2017 7:11:19 GMT
jasoninferno 發表於 Nov 28, 2017 7:11:19 GMT
您把 F1 當參數傳進 autoskill() 的F F 就不是全域了 要在autoskill() 裡面直接改F1 的值 感謝版主 將F=false改成F1=false確實可以變全域 但是有其他辦法能保留F=false然後把它變成全域嗎? 因為我F有F1~F6這六個,需要用F來判斷是否施放過 最後我是用這樣來解決 function autoskill(skill_use, skill_delay, F)
if skill_use == true then
if F == true then
toast("施放")
wait(skill_delay)
if F == F1 then
F1 = false
elseif F == F2 then
F2 = false
elseif F == F3 then
F3 = false
elseif F == F4 then
F4 = false
elseif F == F5 then
F5 = false
elseif F == F6 then
F6 = false
end
end
end
end
|
|
|
函數問題
Nov 28, 2017 7:31:09 GMT
AnkuLua 發表於 Nov 28, 2017 7:31:09 GMT
一般做法是在autoskill 回傳一個值給F1
function autoskill(skill_use, skill_delay, F) ... ... return F end
F1 = autoskill(skill_1_use, skill_1_delay, F1)
|
|
|
函數問題
Nov 28, 2017 8:48:12 GMT
jasoninferno 發表於 Nov 28, 2017 8:48:12 GMT
感謝版主 已順利解決
|
|