Unityclient通訊測試問題處理(二)

2021-09-09 03:31:04 字數 1611 閱讀 9296

unityclient通訊測試問題處理(二)

在client的通訊測試過程中。場景載入的問題給自己帶來了不小的麻煩。由於訊息的解析方法在單獨的監聽執行緒中呼叫,這也就意味著無法在訊息的解析方法中呼叫unity自身的api了。本來是打算在接收到場景切換的訊息後,直接在解析方法中呼叫協同程式startcoroutine。來實現場景的非同步載入,但是如今一

旦呼叫就會

提示下面錯誤:

startcoroutine_auto can only be called from the main thread...

不能直接在監聽執行緒中呼叫,那就僅僅能另想辦法了。怎樣來觸發場景非同步載入的協同程式呢?於是。自己想到了start方法,由於這裡是個呼叫協同程式的好地方。那麼又該怎樣呼叫start方法呢?沒錯。通過物件的例項化來實現。

當乙個物件在例項化的過程中。它的指令碼元件中的awake方法與start方法會相繼執行。

因此。我就通過例項化遊戲物件的方式,來觸發start方法,進而在start方法中呼叫協同程式。進行場景的非同步載入操作。物件例項化的過程。通過乙個布林變數來進行控制,當解析方法中接收到場景切換的訊息後,與目標場景相相應的布林變數置為true,從而在update方法中進行場景載入物件的例項化。**例如以下所看到的:

void

update( )

else

if( _isfirstlevel ) 

else

if( _issecondlevel )  

}

要實現這個過程,離不開prefab的製作。我們須要針對專案中存在的幾個不同場景,每乙個場景製作乙個prefab,作為非同步載入場景的物件使用,prefab例如以下所看到的:

然後還須要編寫繫結在這每個prefab之上的指令碼,指令碼實現的功能,就是依據不同的物件,來載入不同的場景,**例如以下所看到的:

void

start()

else

if( first_object_name == gameobject.name ) 

else

if( second_object_name == gameobject.name ) 

}

在協同程式中直接呼叫場景管理類寫好的非同步載入場景的方法。完畢場景的非同步載入。非同步載入場景的**例如以下所看到的:

public

ienumerator

loadlevelasync( 

string

levelname )

_async = 

.loadlevelasync( levelname );

yield

return

_async;

}

通過以上處理。當我們在監聽執行緒中的訊息解析方法中接收到場景切換的訊息後。就會馬上例項化與目標場景相相應的遊戲物件,然後通過在start方法中呼叫的協同程式,來完畢場景的非同步載入。

自己仍然在琢磨,

在update方法中處理場景載入物件的例項化過程,

這可能並非最佳的方式。

測試及時通訊工具

來自 51testing軟體測試論壇 測試像qq那樣的及時通訊 工具,應該如何測試?1 首先以核心功能為中心進行測試工作的部署 比如 關鍵功能或核心功能 收發等等 因為有可能聯動一些其他輔助功能,事先進行規劃部署 2 綜合利用場景分析法進行測試用例的編寫 比如 實際收發各種情況的模擬 通訊線路的模擬...

lorawan MAC 閘道器通訊測試

在閱讀之前,你需要乙個標準 lora 工程,包括 sx1276 字元裝置 loramacgw 字元裝置,libloragw動態庫以及動態庫測試程式。你需要乙個朗威的 stk10 lorawan 節點開發套件。你需要 spirit1,單通道閘道器執行的硬體平台。首先編譯部署 lora 工程到 spir...

erlang節點通訊小測試

1.目標 開啟兩個節點使得a節點操作b節點的程序 2.步驟與 1 開啟兩個節點 erl setcookie abcedef sname test1 erl setcookie abcedef sname test2 2 使節點連通 net adm ping test2 pc201406231106 ...