Re: [請益] Unity 隊友顯示問題

看板GameDesign (遊戲設計)作者 (癢,好吃)時間5年前 (2019/09/09 04:32), 5年前編輯推噓2(202)
留言4則, 3人參與, 5年前最新討論串2/2 (看更多)
好吧 半夜睡不著覺,對這個問題寫了簡單的測試研究了一下 我的結論是這樣: 這個 BUG 的原因是『編號較前的玩家在同步後面玩家的 tag 之前,就先執行了 切換顏色的方法』導致。 當然你會覺得說:啊我不是先呼叫了所有玩家的 TagSet() ,才呼叫每個玩家的 SetBool() 嗎? 理論上是這樣啦,但實際上 RPC 的執行順序會受到很多方面影響。 當然我沒有認真研究過 UNET 的原始碼,所以不保證一定正確。 不過這樣也能解釋為什麼只有當 Host 也是人狼時,才不會出現 BUG。 因為所有玩家的 Tag 是由 Host 直接計算的,所以 Host 不會有延遲問題 然後你的人狼數量剛好是 2 ,所以第 2 個人狼也不會發現他之後的玩家 tag 有錯 針對這個問題我的建議如下 最簡單的方法,在 TagSet() 跟 SetBool() 之間設定一個延遲 大概 0.5 ~ 1 秒就很足夠了。 又或是在設定每個玩家角色時,直接將每個玩家的對應角色都傳給各個玩家 這樣就不會有先後問題,可以確保在切換顏色時所有玩家的角色都是正確的。 這個功能你可以使用 ClientRpc 完成,又或是偷懶一點用 SyncBoolList 來同步。 以上兩個方法提供你參考 最後要提的一點是 UNET 已經被 Unity 官方棄用了 建議你改用 Photon (喂 -- ██ ︵︵︵︵ ◢█◤ ちから /\||| ◢█◤ ひとりでは耐え切れぬ でもきっと、 │‵╯︶︶| ██◤ # ふたりなら大丈夫私は信じる!」 ╲ ) ∕█████ + + ╮ - │█◣ ◥◥█◣ 第四巻 27ページ… ▂▄▆│ │█◤* ◢████◣ 雷神の系譜    ψWix -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.192.61 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1567974734.A.2E2.html ※ 編輯: wix3000 (220.129.192.61 臺灣), 09/09/2019 04:34:10

09/09 14:53, 5年前 , 1F
推結論www
09/09 14:53, 1F

09/10 16:08, 5年前 , 2F
謝謝回覆 延遲是用sleep嗎?
09/10 16:08, 2F

09/10 16:08, 5年前 , 3F
我用sleep還是會出現這個問題
09/10 16:08, 3F

09/11 13:10, 5年前 , 4F
延遲簡單的方法兩種 Coroutine 或 Invoke
09/11 13:10, 4F
文章代碼(AID): #1TTMLEBY (GameDesign)
文章代碼(AID): #1TTMLEBY (GameDesign)