Xlua中的util腳本中的async_to_sync方法 記錄


整理一下xlua中的async_tosync()

參考xlua案例7

async_to_sync()

將一個傳遞過來的方法包裝成一個需要在協程中執行的方法,
通過這個方法調用參數中的方法時會自動添加一個回調函數的參數  並調用這個原方法,原方法執行完即掛起這個協程(執行原方法的方法)
當原方法執行傳入的回調函數之后,再次啟動掛起的該協程,並最終執行完畢,回調函數執行的時候的參數返回調用的函數。
在coroutine執行前作為方法   使用xxx()  調用, 在回調函數執行完成后做為變量接收返回值
高能注意: 不能在主線程中調用coroutine.yield()會報錯LuaException: attempt to yield from outside a coroutine,其實自己並沒有調用yield,但是async_to_sync中使用了這個方法
      所以需要使用util.coroutine_call() 來開啟一個協程,在這個協程里使用async_tosync()  而不是直接調用
return后邊不能有代碼了。會報錯 error loading module “腳本名” from resource
 
下邊是例子  一共兩個按鈕,一個是標簽為StartButton的,一個是標簽為Button的
 

 

xlua腳本在Resources下

 

 

也可以寫成一個腳本,下邊這樣

 

 

 

 OK

記錄一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM