Collections (com.unity.collections の NativeList.cs でビルドエラー

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

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内のファイルですが、やむを得ず、書き換えてビルドエラーを通過させてしまいます。

応急措置

  1. 上記のConsoleに出力されたエラーをダブルクリックして対象のファイルを開く(2箇所出てます)
  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
  1. 一応、Unityを再起動

これでビルド自体はエラーを出さずに進んでくれるようになると思います。

ただし、PackageCacheはいつでも上書きされるファイルなので、あくまでも今日ビルドしたいくらい急いでる場合ということで。

スポンサーリンク