スキップしてメイン コンテンツに移動

投稿

ラベル(unity)が付いた投稿を表示しています

Unity 2021.3.3f1でのAndroidビルド失敗

事象 下記のエラーが出てAndroidビルドに失敗。他にもエラー出ていたが下記のエラーが根本原因。 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':launcher:mergeReleaseNativeLibs'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > More than one file was found with OS independent path 'lib/arm64-v8a/libopenxr_loader.so'. If you are using jniLibs and CMake IMPORTED targets, see <https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake> * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at <https://help.gradle.org> BUILD FAILED in 24s 重要なのは、 「More than one file was found with OS independent path ‘lib/arm64-v8a/libopenxr_loader.so’」 の部分。 どうもlibopenxr_loader.soがビルド時に複数参照されていることが原因のよう。libopenxr_loader.soファイル自体はOpen XRプラグインに含まれている。

UnityプロジェクトでNuGetパッケージを入れる

(方法1) NuGetでDLLを落としてきてプロジェクトに含める UnityプロジェクトでNuGetパッケージを入れる方法は、こちらの動画が参考になります。 https://www.youtube.com/watch?v=GRn49ehm_pI CLIからNuGetパッケージをインストールする一般的な方法。 https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-powershell (方法2) NuGet for Unityを使う https://baba-s.hatenablog.com/entry/2018/01/25/095900 を参考。 https://github.com/GlitchEnzo/NuGetForUnity/releases/ から NuGetForUnity.X.X.X.unitypackageをダウンロード。 Unity プロジェクトにインポート。 インポートするとUnity内にNuGetのメニューが追加される。クリックするとウィンドウが開くのでそこから必要なNuGetパッケージをインストール。

Unityのバイナリがフォルダに出力されない問題

Visual Studio上でNUnitのプロジェクトから、Unity本体のプロジェクトを参照させて、Unity本体のプロジェクトのコードの一部をテストさせようとしたところ、下記のエラーメッセージが出力され、Debugディレクトリにアセンブリが生成されず、NUnitを実行することができませんでした。 Metadata file 'ProjectFolder\Temp\bin\Debug\Assembly-CSharp.dll' could not be found. Google先生で検索したところStack Overflowでドンピシャの質問を見つけました。 https://stackoverflow.com/questions/58614995/visual-studio-doesnt-put-binaries-of-unity-project-to-output-folder 記事の通り Disable the full build of projects を False に設定すると、無事bin/Debugフォルダにアセンブリが出力されるようになりました。

Unity関連のクラスをWindowsのスタンドアローンアプリケーションから利用する際の注意点

Unityのアセンブリを参照してWindows上からスタンドアローンのアプリケーションを実行しようとしたところ、Unity Engine内からしかインスタンス化できないクラスがあったのでメモです。( visual studio - C# Security Exception - Stack Overflow でも投稿されています。) 例えば、GameObjectクラスをUnity Engine外からインスタンス化しようとすると下記のようなエラーが発生します。 System.Security.SecurityException : ECall メソッドをシステム モジュールにパッケージ化しなければなりません。 英語だと下記のエラーメッセージになります。 ECall methods must be packaged into a system module Stack Trace: GameObject.ctor() ちなみにVector3の構造体(struct)はUnity Engine外から参照しても問題ありませんでした。 実際にクラスや構造体を利用してみて調べていくしかなさそうです。