UNET 1.0.8: 「ビルド済みアプリ」と「Unity Editor上でのアプリ」での疎通で失敗する場合は1.1.1に
ビルド済みアプリ(クライアント)とUnity Editor上でのアプリ(サーバ)で疎通する際に、
IndexOutOfRangeException: NetworkReader:ReadByte out of range:NetBuf sz:0 pos:0
at UnityEngine.Networking.NetBuffer.ReadByte () [0x0004c] in
というエラーが出ました。SyncTime という時間を同期するライブラリを使っていたのですが、そこのReadMessageでメッセージが空になっている?ためか、メッセージのデシリアライズ処理(文字列から構造体に戻す処理)で失敗する というのが、エラーの内容でした。
var msg = netMsg.ReadMessage<SyncTimeMessage>();
結局、 Multiplayer HLAPI (通称UNET)のバージョンを1.0.8から1.1.1に更新することで上記のエラーが消えました。以下は、manifest.jsonで変更した内容。
"com.unity.multiplayer-hlapi": "1.1.1",
また、ややこしいですが、Multiplayer HLAPIはなぜかキャッシュがのこってしまっていて、1.1.1から1.0.8に戻すとエラーが起こらないので、Libraryフォルダのライブラリキャッシュを消す必要があります。
最後に
UNETの互換性のあるMirror に移行するのが主流ですので、みなさん、なるべく、そっちに移行しましょう。(自分の場合はどうしても直近で必要だったので、このような対応としましたが)
Mirrorは1フレームごとに送れるバイト数が大きく、バグもUNETと比べてかなり少なく、コミュニティも大きいのでおすすめです。
Author And Source
この問題について(UNET 1.0.8: 「ビルド済みアプリ」と「Unity Editor上でのアプリ」での疎通で失敗する場合は1.1.1に), 我々は、より多くの情報をここで見つけました https://qiita.com/supertask/items/ebb9bcfe44d7f69df4f6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .