我一直在爲遊戲編寫一些腳本,腳本是用Lua編寫的。遊戲要求之一就是你的lua腳本中的Update方法(每幀被稱爲)可能不會超過2-3毫秒,如果遊戲剛剛結束。我只需要調用Multitasking.RunTask(SomeFunction),然後任務作爲協程運行,然後我必須在我的代碼中分散Multitasking.Yield(),它會檢查任務已經運行了很長時間,如果超過2毫秒,它會暫停任務並在下一幀恢復。這是好的,除了我必須在整個代碼中分散Multitasking.Yield()無處不在,而且這真是一團糟。Lua任務調度
理想情況下,我的代碼會在運行時間過長時自動產生。那麼,是否有可能採用Lua函數作爲參數,然後逐行執行它(也許在Lua中解釋Lua,我知道這是可能的,但是我懷疑如果你擁有的只是一個函數指針,這是可能的)?通過這種方式,我可以在每一行之間自動檢查運行時間和產量。
編輯::要清楚,我正在修改遊戲,這意味着我只能訪問Lua。不允許使用C++技巧。
這看起來好像需要訪問C++源代碼? – Martin 2010-04-22 01:47:16
它是C,而不是C++ – Javier 2010-04-22 03:59:31
''調試'庫是從Lua中導出的。你可以直接從Lua調用'debug.sethook()'。 – 2010-04-22 04:13:10