2014-08-30 76 views
1

當從其他線程訪問UnityEngine和UnityEditor中的類的方法和字段時,是否可以禁用/繞過Unity3D主線程檢查?有沒有辦法繞過/禁用主線程檢查?

如果是這樣,有什麼辦法來實現這一目標? 有誰知道Unity團隊如何實施此檢查?

(我知道,和我目前正在使用其他技術,讓我成功地解決任何多線程的問題,但這個問題是相當的學術型的:)

請只與可能的解決方案或信息作出反應爲什麼不能這樣做。

回答

1

如果Unity不允許您在主線程上分別在主線程上執行某些操作而不是,則假設至少有一個好理由。

試圖規避它將幾乎不可避免地導致問題,可能很難調試,因爲Unity試圖保護你免受兩個徹底的非法事件的破壞或崩潰應用程序(即從不同的線程訪問OpenGL上下文)或最有可能導致潛在問題的事情,如競態條件,死鎖等。

因此,即使有一種方法可以繞過所述檢查,而無需訪問代碼並深入理解上下文中的多線程編程如果你真的設法繞過所述檢查,那麼它將會產生很大的反作用,弄巧成拙,爲失敗而設置自己,並難以調試問題。

每個框架都帶有一套工作規則。如果Unity說「這個方法必須在主線程上調用」,那麼您只需遵循這些規則。尤其是因爲您無法訪問引擎源代碼,並且可以證明在這種特定環境下它不會成爲問題。如果你有源代碼,你可以禁用這些特定情況的檢查。不過,如果框架開發者堅持認爲這不是一個好主意,那麼你最好聽聽他​​們,因爲他們肯定知道他們的框架比任何人都要好得多。

+1

我知道如何使用此線程檢查進行操作可能會導致問題,但這不是對本主題中提出的任何問題的回答。 – vvirehead 2014-08-30 19:41:36

+0

你問他們爲什麼要實施,除非Unity程序員願意透露你所尋求的信息,否則這與答案一樣接近。我強烈懷疑有什麼辦法可以規避檢查,除非你要破解團結的引擎(可能違反Unity ToS)。 – LearnCocos2D 2014-08-30 19:55:59

+0

我尋求其他解決方案,那些不會破壞ToS並且不涉及Unity內部幫助的解決方案 - 也就是說,我想讓Unity相信其他線程是主線。 Btw。我從來沒有問過他們爲什麼實施這種限制 - 如果我是他們,我可能會這樣做。 – vvirehead 2014-08-30 21:32:59

相關問題