unity socket 回調(diào) 無(wú)效
get_isActiveAndEnabled can only be called from the main thread.
問(wèn)題:我在unity場(chǎng)景中使用 text 顯示每次上傳的內(nèi)容,但是,socket的回調(diào)函數(shù)并不能修改這些內(nèi)容,經(jīng)過(guò)try catch調(diào)試發(fā)現(xiàn)上邊的錯(cuò)誤。
表面原因 :?socket回調(diào)函數(shù)中使用了unity場(chǎng)景的組件或者方法.
真正原因 : socket回調(diào)使用的異步多線(xiàn)程,而unity是偽多線(xiàn)程,就導(dǎo)致,他們不在同一頻道,然后unity為了維護(hù)單線(xiàn)程的穩(wěn)定,防止了其他線(xiàn)程的訪(fǎng)問(wèn)吧(猜測(cè))。
解決方法:
在unity中使用其他變量來(lái)存儲(chǔ) socket 回調(diào)函數(shù)傳來(lái)的 需要修改、展示的新內(nèi)容,然后在update或者fixedUpdate中修改、展示。
為 socket 建立緩存容器,使socket 運(yùn)行時(shí),訪(fǎng)問(wèn)緩存,而不是直接訪(fǎng)問(wèn) unity 內(nèi)容。