Unity6000.0.40f1です。Package ManagerのIn Projectで「Collections (com.unity.collections)」を見ると 2.5.3 です。
この状態でDedicated Server用の書き出しをしたところ、プロジェクトによっては、以下のようにNativeList.csの2箇所のエラーを出すことがあります。
Library/PackageCache/com.unity.collections@9922678e06a0/Unity.Collections/NativeList.cs(847,24): error CS7036: There is no argument given that corresponds to the required formal parameter ‘safety’ of ‘NativeArray.ReadOnly.ReadOnly(void*, int, ref AtomicSafetyHandle)’
色々試しましたが、現時点で何かしらのアップデートはなさそうで、2.5.4以降を待つしかなさそうです。
ちなみに、プロジェクトフォルダにある「Library」内の「PackageCache」は、リネームしてからUnityを起動すればわかりますが、このフォルダがなければ自動的に生成されます。Packages直下の「manifest.json」に従って生成し、キャッシュされるようです。
いくつかのバージョンをキャッシュ生成したりして試しましたが、同様のエラーなため、今日なんとかビルドしたいといった急ぎの場合は、書き換えるべきではないPackageCache内のファイルですが、やむを得ず、書き換えてビルドエラーを通過させてしまいます。
応急措置
- 上記のConsoleに出力されたエラーをダブルクリックして対象のファイルを開く(2箇所出てます)
- 以下のようにコードを修正。第3パラメータにAtomicSafetyHandleの参照が指定されてないとダメと。
#if ENABLE_UNITY_COLLECTIONS_CHECKS return new NativeArray<T>.ReadOnly(m_ListData->Ptr, m_ListData->Length, ref m_Safety); #else return new NativeArray<T>.ReadOnly(m_ListData->Ptr, m_ListData->Length); #endif
を
#if ENABLE_UNITY_COLLECTIONS_CHECKS return new NativeArray<T>.ReadOnly(m_ListData->Ptr, m_ListData->Length, ref m_Safety); #else AtomicSafetyHandle m_DummySafety = AtomicSafetyHandle.Create(); return new NativeArray<T>.ReadOnly(m_ListData->Ptr, m_ListData->Length, ref m_DummySafety); #endif
- 一応、Unityを再起動
これでビルド自体はエラーを出さずに進んでくれるようになると思います。
ただし、PackageCacheはいつでも上書きされるファイルなので、あくまでも今日ビルドしたいくらい急いでる場合ということで。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。