Unity 実機のデバッグと遭遇した落とし穴

        私が使用しているHuaweiの携帯電話、Unityのバージョンは2020.2.3f1c1で、USBデータケーブルで接続してデバッグしました。ここに全過程を記録します。Wi-Fi接続方法もあるようなので、今は考えません。

        USBケーブルをコンピュータと携帯電話に接続し、携帯電話のUSB接続オプションで「ファイル転送」を選択し、「設定」→「端末情報」を見つけて、バージョン番号を複数回クリックして開発者モードをオンにします。次に、「設定」に戻り、「システムとアップデート」を見つけ、「開発者向けオプション」を見つけて、「開発者向けオプション」と「USBデバッグ」をオンにします。

        Unity を Android プラットフォームに切り替えるには、必要なオプションをチェックします。

        次に、 cd コマンドを使用して、Android ADK の platform-tools ディレクトリを見つけます。unityHub によってインストールされた Android モジュールがデフォルトで使用される場合、パスは次のようになります。

C:\Program Files\Unity\Hub\Editor\2020.2.3f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools

        Windows + R で cmd が開きます。デフォルトは c ドライブです。ドライブ文字を切り替える必要はありません。cmd に cd と上記のパスを直接入力します。cd の後にスペースがあることに注意してください。このディレクトリには adb があり、adb コマンド adb devices を使用して、電話機が接続されているかどうかを確認できます。

        adb コマンドが正常に動作しない場合は、次の記事をお読みください: Unity3D 開発技術 Android APK デバッグ - 短い本 

    次に、tcp 接続を開いて次のコマンドを入力します: adb forward tcp:34999 localabstract:Unity-com.ygq.Archer ここの数値は、Unity プロファイラーに表示される内容によって異なります。最後に、Unity の後に独自のパッケージ名を記述します。

        プロファイラーの playMode に 2 つの 34999 が表示されたら、接続は成功し、実デバイスのデバッグ用にビルドして実行できます。ここでRunDeviceを自分のモバイルデバイスに変更します。

 VS でデバッグする携帯電話を選択するには、次の手順を実行して Android SDK ディレクトリを追加する必要があります。コピー パスをコピーするだけです。

        携帯電話でプログラムを終了するたびに、「Unity デバッガーを再度接続」する必要があります。

  1. 次に、プロファイラーの PlayMode で携帯電話を選択し、[Build and Run] をクリックして実デバイスのデバッグを実行します。
  2. デバッグを容易にするために、最初から vs エディターまたはアイデア エディターで C# および Lua コードにブレークポイントを設定します。

問題が発生します:

        --- > protobuf_net.dll は携帯電話ではエンコードまたはデコードできません

解決策: 教師の MMO_Client プロジェクト内の protobuf_net のソース コードに置き換えるだけです。

        --- >コンピュータ側はローカル iis サーバーからリソースをダウンロードできますが、Android apk をパッケージ化した後はダウンロードできません。

エラー: 自動接続プレーヤー カール エラー 7: 192.168.31.196 ポート 8080 への接続に失敗しました: 携帯電話とコンピューターが同じ Wi-Fi に接続されていないため、コンピューターのファイアウォールをオフにする必要があることが原因です。発効する前に確認する必要があります。

     --- >报错:自動接続されたプレーヤー DllNotFoundException: DLL 'xlua' をロードできません: 指定されたモジュールが見つかりませんでした。

理由: 対応する dll ファイルが失われているため、プロジェクトのプラグインの Android ディレクトリを確認しましたが、ファイルが見つかりませんでした。

解決策: xlua を再ダウンロードし、Plugins フォルダーを置き換えます。

        --- >报错:自動接続されたプレーヤーは ID 64、65、81、143 などのクラスを生成できませんでした

理由: Unity がエンジンコードをカットする際に、ID 64などのクラスコードもカットしてしまい、実行時に見つけることができなくなるためです。コードのクリッピングに関する設定は、「ビルド設定」->「プレーヤー設定」->「プレーヤー」->「管理されたストリッピング レベル」にあります。

解決策:プロジェクトの Assets ディレクトリにlink.xml という名前の新しいファイルを作成し不足しているIDに対応するクラス ライブラリをlink.xmlファイルに追加し、再パッケージ化すると、問題は解決されます。

公式ドキュメント ID に対応するクラス名: Unity - マニュアル: YAML クラス ID リファレンス

  --->エラー レポート: Autoconnected Player LuaException: xlua/util.lua:45:Cannot setallowSceneActivation, no such field. システム クラスの関数と変数にアクセスできない場合は、システムがコードをトリミングしていることが原因です。他にもまだ存在しており、NavMeshAgent、NavMeshSurface、Animation、AnimationEvent、Application などがあります。

解決策: 対応するクラスを link.xml ファイルに追加します。

おすすめ

転載: blog.csdn.net/qq_34256136/article/details/132911781