ECSのまとめ記事の更新をしようとCHANGELOGを翻訳したのだけど、 それだけで疲れたので更新は先送りにしてとりあえずこれだけ公開。 半年サボった代償は大きい……。
いくつか意味がとれない文があったりと翻訳の質が少しアレですが、 元々自分用のメモだったものなのでその辺はご容赦ください。
変更に関する所感としては、魔法の仕組みを作りたがるUnityの悪い癖が出てきたなぁ、という感じです。 確かにコードの外観はかなりシンプルになったのですが、裏で何が起こっているのか理解するのがとても困難で、 テンプレから少し外れたコードを書いた時に予想外の動作をしてハマりそうな気がしてます。 個人的には好みじゃないんですが、世間的にはどうなんだろう……。
- 2020/05/03 [0.9.0]-[0.10.0]の追加。
- 2020/05/27 [0.11.0]の追加。
[0.2.0] - 2019-11-22
このバージョンは Unity 2019.3 0b11+ が必要
新機能
- ILポストプロセスによりIComponentDataに対して自動的にオーサリングコンポーネントを生成するように。GenerateAuthoringComponent属性でマークされたコンポーネントデータはConvertメソッドを持つ専用のオーサリングMonoBehaviourを生成する。
- BuildSettingsアセットによりディスク上にひとつのビルドレシピアセットを定義できるように。これによりC#コードからモジュール単位でビルドパイプラインのフルコントロールが可能に。
- BuildSettingsはビルトインあるいはカスタムIBuildSettingsComponentsによる完全な構成が可能。
- BuildPipelinesはIBuildStepによって実行内容と順序を厳密に定義する。
- IBuildStepにはビルトインのものとカスタムビルドステップがある。
- BuildSettingsファイルは継承が可能なため多くの構成が完了した基本ビルド設定を容易に作成でき、ビルド設定ごとに細かい調整をすることが可能。
- 現在多くのプレイヤー設定は未だ既存のPlayerSettingsにあるが、計画では徐々にすべてのプレイヤー設定をBuildSettingsによって公開し、多くのビルドレシピやアーティファクトをもつ複雑なプロジェクトの構成を容易にする。
サブシーンが自動的にエンティティバイナリファイルに変換され、アセットパイプラインにキャッシュされるように。以前プロジェクト内に存在していたエンティティキャッシュファイルは削除すべき。変換システムはその振る舞いが変わった際に再変換を要求するためにConverterVersion属性を利用できるように。変換は別のプロセスによって非同期的に実行。そのため、初めてサブシーンを開いた際には即座に表示されない場合がある。
LiveLinkビルドは新しいBuildSettingsパイプラインによってビルドされるように。サブシーンを開いてLiveLinkビルドパイプラインを割り当てることにより、
- 閉じているエンティティシーンはアセットパイプラインによってビルドされ、必要に応じてLiveLinkによってロードされる。
- 開いているエンティティシーンは変更内容に応じてコンポーネントやエンティティごとのパッチとともにライブエンティティパッチャに送られる。
- エンティティシーンに参照されているアセットは保存時にLiveLinkによって転送される。
- GameObjectとしてロードされたシーンは現在はLiveLinkされていない(作業中)
(追加の
IJobForEach
を提供することなく)JobComponentSystem
のOnUpdate
メソッド内に直接ラムダ式を記述することによってジョブ化されたコードを提供するEntities.ForEach
の構文。EntityQueryMask
が追加され、エンティティがフィルタなしでEntityQuery
によって返されるかどうかをEntityQueryMask.Matches(Entity entity)
によって手早く確かめられるように。EntityQueryMaskはEntityManager.GetEntityQueryMask(EntityQuery query)
の呼び出しによって取得できる。- Fast Enter playmodeに対応し、プロジェクト設定から有効化できるように。すべてのDOTSプロジェクトで有効化推奨。
- UnityEngineのコンポーネント
StopConvertToEntity
によってConvertToEntity
の再帰に割り込めるように。この目的では"convert and inject"が設定されたConvertToEntity
が推奨される。 - EntityDebuggerが独立したカラムにIDを表示するようになり、エンティティがカスタム名を持つ場合でも依然として確認できるように。
- エンティティインスペクタ内のエンティティ参照に"Show"ボタンが表示され、参照されているエンティティをデバッガ内で選択できるように。
ArchetypeChunkIterator
がEntityQuery
のGetArchetypeChunkIterator
呼び出しによって作成できるように。ArchetypeChunkIterator
をIJobChunk.RunWithoutJobs()
に渡すことでJobs APIを迂回してIJobChunk
を実行できる。[AlwaysSynchronizeSystem]
属性が追加され、JobComponentSystem
に適用することで更新前にすべての依存対象を強制的に同期できるように。BoneIndexOffset
が追加され、アニメーションシステムがボーンインデックスのオフセットをハイブリッドレンダラに伝えられるように。- ハイブリッドコンポーネントを使用した変換のサポートの開始。StressTestsフォルダ内のHybridComponentサンプルを見よ。
- 新しい
GameObjectConversionSystem.ForkSettings()
により現在の変換設定に別の"EntityGuid namespace"を適用したフォークを作成する非常に特殊化されたメソッドを提供し、ネストされた変換に使用できるように。これは変換先ワールドに同じオーサリングオブジェクトのルートレベルのバリアントを複数生成する必要があるnet codeのような例で役に立つ。 EntityManager
のLockChunkOrder
とUnlockChunkOrder
が非推奨に。SceneSystem.LoadParameters
内のSceneLoadFlags.BlockOnStreamIn
によって、エンティティシーンが同期的に(次のストリーミングシステムの更新中に)ロードできるように。EntityCommandBuffer
がExclusiveEntityTransaction
でもEntityManager
同様に再生できるように。これによりジョブからでもECBの再生が可能に(再生中のEntityManagerへの排他的アクセスは依然として必要)。
アップグレードガイド
- サブシーンを使用している場合には新しいBuildSettingsアセットをビルドと実行に使用する必要がある。サブシーンは File -> BuildSettings... や File -> Build and Run のワークフローには対応しない。
- ある新機能にAssetDatabase V2が必要で、AssetDatabase V1には対応しない。
修正
ComponentSystemGroup.Enabled
にfalse
を設定した際にOnStopRunning()
をグループのみでなく、グループメンバーのシステムに対して再帰的に呼び出すように。- Propertiesパッケージを
0.10.3-preview
に更新し、Physicsコンポーネントデータをインスペクタに表示した際の例外とジェネリックな仮想関数呼び出しに対するIL2CPPのAhead of Timeリンカのエラーを修正。 LocalToParentSystem
がWriteGroup(typeof(LocalToWorld))
なコンポーネントを持つエンティティのLocalToWorld
に書き込まないように。- Proテーマにおけるエンティティデバッガのスタイルを改善。
- エンティティインスペクタにおけるおかしなインデントの修正。
AddSharedComponentData
,SetSharedComponentData
がSharedComponentOrderVersion
を更新しないことがある問題の修正。- 配列型や
UnityEngine.Object
参照を含むマネージドIComponentData
を読む際のシリアライズの問題を修正。 EntityQuery
に対してタグコンポーネントを再追加した際に例外を投げないように。AddComponent<T>(NativeArray<Entity>)
が対象エンティティのいずれかが不正な場合に、正しくArgumentException
を投げるように。- 編集モードでエンティティデバッガが再描画されない問題の修正。
[UpdateInGroup(typeof(LateSimulationSystemGroup))]
でマークされたシステムに対して[DisableAutoCreation]
に関する警告を出さないように。- HDRPに対応するようにチャンク情報のレンダリングを修正。
- マネージドコンポーネント型に対する
EntityQuery
においてToComponentDataArray
がフィルタ設定を無視する問題の修正。
変更
DynamicBuffer.Reserve
を非推奨としてDynamicBuffer.Capacity
を設定可能に。DynamicBuffer.Reserve(10)
はDynamicBuffer.Capacity = 10
となる。NativeString
をUnity.EntitiesからUnity.Collectionsへ移動。- パッケージの依存対象を更新。
- エディタ内での実行における
Entity
のインスタンス化パフォーマンスを劇的に改善。 class MyComponent : IComponentData {}
のようなマネージドなIComponentData
に対応し、コンポーネント内にGameObjectsやList<>のようなマネージド型を格納できるように。マネージドコンポーネントはジョブシステムやアーキタイプチャンクストレージが使用できず非常に動作速度が遅いため、これらはプロダクションコードでは控えめに使用すべき。マネージドコンポーネントの使用、用途、対策についての詳細はドキュメントのcomponent dataを参照。- 'SubSceneStreamingSystem'は
SceneSectionStreamingSystem
にリネームされinternalに。 SubScene.cs
の_SceneEntities
が非推奨に。代わりにSceneSystem.LoadAsync
/Unload
をそれぞれのSceneGUIDについて使用するように。com.unity.serialization
を0.6.3-preview
に更新。- 非推奨の
GetComponentGroup()
APIがprotected
となり、後継のGetEntityQuery()
などシステム内部からのみ呼び出されるように。 - "Convert and Destroy"の設定されたConvertToEntityの付いたすべてのGameObjectが同一の変換パスによって処理されるようになり、相互参照が可能に。
- 重複するコンポーネントの追加が常に無視されるように。
- EntityQueryによって単一のエンティティにコンポーネントが追加された場合、チャンクのアーキタイプを変更するのではなく一致するチャンクへとエンティティを移動するように。
- "Used by Systems"リストがフィルタの付いたクエリをスキップするように。
- マネージド
IComponentData
がデフォルト生成後にすべてのフィールドがnullでない状態でなくてもよいように。 ISharedComponentData
はエンティティやマネージドIComponentData
とともにシリアライズされる。共有コンポーネントがUnityEngine.Object
型を参照している場合には、その型は"objrefs"リソースアセットに別々にシリアライズされる。EntityManager
はコンポーネントのAdd
/Remove
のためにBurstデリゲートを介してEntityComponentStore
を呼び出す。EntityComponentStore
が例外を投げることはない(メインスレッドからBurstデリゲートとして呼ばれるため)bool ICustomBootstrap.Initialize(string defaultWorldName)
は非推奨のフォールバックなしにAPIが変更された。trueを返すことによってシンプルにデフォルトワールドの初期化を完全に置き換える機会を与えるものに。ICustomBootstrap
とDefaultWorldInitialization
はこのように構成可能に。
class MyCustomBootStrap : ICustomBootstrap { public bool Initialize(string defaultWorldName) { Debug.Log("Executing bootstrap"); var world = new World("Custom world"); World.DefaultGameObjectInjectionWorld = world; var systems = DefaultWorldInitialization.GetAllSystems(WorldSystemFilterFlags.Default); DefaultWorldInitialization.AddSystemsToRootLevelSystemGroups(world, systems); ScriptBehaviourUpdateOrder.UpdatePlayerLoop(world); return true; } }
ICustomBootstrap
が継承可能となり、最も深いサブクラスのブートストラップが実行されるように。DefaultWorldInitialization.GetAllSystems
はブートストラップの影響を受けず、シンプルに現在のdllや属性に基づいたシステムのリストを返す。Time
がワールドごとに使用可能となり、ComponentSystem
のプロパティに。ワールドごとにInitializationSystemGroup
内でUnityEngine.Time
に基づいて更新される。InitializationSystemGroup
内で動作するシステムにおいて時間にアクセスする場合には、必ずそのシステムがUpdateWorldTimeSystem
よりも後にスケジュールされるようにする。またTime
はTimeData
構造体による制限も受ける。UnityEngine.Time
で利用可能な拡張フィールドへのアクセスが必要な場合には明示的にUnityEngine.Time
へとアクセスする。OnUpdate
内で例外を投げたシステムがComponentSystemGroup
から削除されないように。この振る舞いは便利というよりも混乱を招くものだった。- マネージドIComponentDataが
IEquatable<>
の実装とGetHashCode()
のオーバーライドをしなくてもよいように。提供されている方が好ましいが、そうでなければコンポーネントは一般的な等値性を検査される。 EntityGuid
が元のID、名前空間ID、シリアルから生成されるようになり、新しいゲッタを用いてパックされた形式からこれらを安全に抽出できるように。不透明な構造体としてこれを扱いたい場合にはa
やb
フィールドを使用する(まだ未使用のビットが残っているためパック方法は将来変更される可能性がある)。a/bコンストラクタは曖昧さ回避のため削除された。com.unity.platforms
を0.1.6-preview
に更新。- デフォルトのAPI互換性レベルを
.NET Standard 2.0
とし、.NET 4.x
を使用するプロジェクトで警告をだすように。 [UnityEngine.ExecuteAlways]
をLateSimulationSystemGroup
に追加し、システムが編集モードでも動作するように。
[0.3.0] - 2019-12-03
新機能
- ENABLE_SIMPLE_SYSTEM_DEPENDENCIESによって自動的な依存チェーンをより単純な戦略で置き換えることができるように。ENABLE_SIMPLE_SYSTEM_DEPENDENCIES有効時には前のジョブに対してシステムの順序によって単純にジョブをチェーンする。ENABLE_SIMPLE_SYSTEM_DEPENDENCIES無効時には、それぞれのシステムにおけるコンポーネントデータへのread/writeアクセスに基づいて自動的に依存がチェーンされる。ゲームコードが非常に少ないコアを持つ場合や多くのシステムを持つ場合には、最適な依存を計算するオーバーヘッドを減らせるためこの方法によってパフォーマンスが改善する。
MultiListEnumerator<T>
にDebuggerTypeProxy
を追加(e.g.これによりGameObjectConversionSystem.GetEntities
呼び出しの結果がデバッガで読めるように)。- 二つの新しいメソッドをパブリックAPIに追加:
- EntityManager.CreateEntity(Archetype type, int count, Allocator allocator);
- EntityManager.Instantiate(Entity entity, int count, Allocator allocator);
- どちらのメソッドも
NativeArray<Entity>
を返す。
変更
0.1.1-preview
で/より前でアナウンスした次の非推奨APIを削除:
- GameObjectConversionUtility.cs:
ConvertIncrementalInitialize()
,ConvertScene()
- Translation.cs:
struct Position
- EditorEntityScenes.cs:
WriteEntityScene()
- GameObjectConversionSystem.cs:
AddReferencedPrefab()
,AddDependency()
,AddLinkedEntityGroup()
,DstWorld
- DefaultWorld.cs:
class EndPresentationEntityCommandBufferSystem
修正
- ConvertAndInjectがルートGameObjectを破棄しないように(0.2.0で混入したバグの回帰的修正)。
- 新しいビルドパイプライン使用時のAndroid/iOSビルドの修正
- Android向けにビルドした際のプロジェクトエクスポートに対して、正しいアプリケーション拡張apk、aabを提供するあるいは出力しないように。
[0.4.0] - 2019-12-16
このバージョンは Unity 2019.3.0f1+ が必要
新機能
- 二つの新しいメソッドをパブリックAPIに追加:
void EntityCommandBuffer.AddComponent<T>(EntityQuery entityQuery)
void EntityCommandBuffer.RemoveComponent<T>(EntityQuery entityQuery)
- BlobArray, BlobString, BlobPtr はメモリ位置からの相対的なオフセットポインタを持つため値としてコピーすることはできない。これはプログラミング上のミスを容易に引き起こす。
[MayOnlyLiveInBlobStorage]
属性の付いた型が値としてコピーすることができないようにすることでコンパイラが正しくない使用法を阻止するように。
変更
TypeManager.CreateTypeIndexForComponent
とそのコンポーネントタイプの亜種を非推奨に。型はTypeManager.AddNewComponentTypes
に未登録の型を渡す代わりに、(エディタビルド内で)動的に追加ができるように。[AlwaysUpdate]
の付いたシステムにおけるRequireForUpdate(EntityQuery)
とRequireSingletonForUpdate
が無視されるのではなく例外を投げるように。- ChangeVersionUtility.IncrementGlobalSystemVersionとChangeVersionUtility.InitialGlobalSystemVersionがinternalに。これらは以前は誤ってpublicになっていた。
- エンティティインスペクタがエンティティの名前を表示し、選択したエンティティのリネームができるように。
- エンティティデバッガのUIを改善。
- 変換時にレンダラを持つプレハブおよび無効化されたエンティティに対してWorldRenderBoundsを生成するようになり、これによってそれらのエンティティのインスタンス化が劇的に速くなった。
- System.Update/OnUpdateメソッドのスタックの深さを減らした(そのためデバッガで見やすくなった)。
- 他のワールドのEntityQueryでないか確認するように。
- あるワールドでつくられたEntityQueryを別のワールドで使用するとメモリ破壊を起こしていた。これらをEntityManager APIによって検出して引数例外を投げるように。
- 構造的変化がBurstによるコードパスによって実行されるようになり劇的に速くなった。
- DynamicBuffer.Capacityが設定可能に。
修正
- 参照されたGameObjectがシーンオブジェクトの場合のDeclareReferencedPrefabにおける不要で間違った警告を削除。
- ConvertAndInjectされたGameObjectsが変換されていない親からデタッチされないように(回帰的修正)
- 空のLinkedEntityGroupの付いたエンティティの削除時にクラッシュすることがある問題の修正。
- performanceパッケージを1.3.2に更新し、旧機能に対する警告を修正。
EntityCommandBuffer
が繰り返し再生できるように。- 共有コンポーネントからnullのUnityEngine.Objectを参照している場合にシーンのバイナリシリアライズ中のエンティティで例外が発生する問題の修正。
- LiveLinkに必要な場合に、アセンブリ間のスクリプトの移動によりアセットバンドルのリビルドが発生するように。
- AndroidにおけるLiveLinkの修正。
[0.5.0] - 2020-01-16
追加
- AndroidHybrid.buildpipelineをRunStepAndroidとともに追加。
変更
Entities.WithReadOnly
,Entities.WithNativeDisableParallelForRestriction
,Entities.WithDeallocateOnJobCompletion
,Entities.WithNativeDisableSafetyRestriction
,Entities.WithNativeDisableUnsafePtrRestriction
において、コンパイル時に引数型の適切な属性([NativeContainer]
,[NativeContainerSupportsDeallocateOnJobCompletion]
)を確認し、ユーザ定義型のフィールド上で使用されていた場合にエラーを投げるように。- サブシーン変換中にコンテキストオブジェクトなしに出力されたログエントリを破棄せずにサブシーンインスペクタ上に表示するように。
非推奨
- 非推奨とされているが期限の設定されていないAPIに対して削除期限を追加。
BlobAssetReference<T>
:Release()
を非推奨とし、代わりにDispose()
を使用するように。
削除
- 非推奨とされているが期限の設定されていないAPIに対して削除期限を追加。
BlobAssetReference<T>
:Release()
を非推奨とし、代わりにDispose()
を使用するように。EntityQuery.cs
: 期限切れのAPICalculateLength()
,SetFilter()
,SetFilterChanged()
の削除。
修正
- マネージドコンポーネントに対してエンティティリマッピングをしようとした際にコンポーネントフィールドがnullだと例外を投げる問題を修正。
- クエリによる
EntityManager.MoveEntitiesFrom
が共有コンポーネントバージョン、順序バージョン、ダーティバージョンを正しく上げていなかった。今は正しく動作する。 - Add Componentsドロップダウンから追加したサブシーンコンポーネントがヒエラルキービューに反映されない問題の修正。
- サブシーンインスペクタにおけるシーンアセットobjectfieldの変更のUndo/Redoがヒエラルキービューに反映されない問題の修正。
- サブシーンの複製が存在する場合を明確にした: ヒエラルキーに表示し、インスペクタに警告ボックスを表示。
- コンテキストメニューの'Create Sub Scene From Selection'がUndoに対応。
- コンテキストメニューの'New Sub Scene From Selection'に対するよりよいファイル名エラーへの対処。
- 'New Sub Scene From Selection'によって生成された新規サブシーンの兄弟間の順序を保持(新規サブシーンが最後の兄弟要素とならないように)。
- 選択対象からサブシーンを生成する際に、プレハブインスタンスの一部が選択されていた場合に対応。
- サブシーンコンポーネント内のシーンアセット参照を削除した際に、ヒエラルキーに可視化されないロード済みのサブシーンが残る問題の修正。
Entities.ForEach
にて二つの別々のスコープにある構造体がローカル変数としてキャプチャされてそのフィールドにアクセスされる場合に正しくないILが生成される問題の修正。- ヒエラルキーとサブシーンインスペクタにてネストされたサブシーンがまだサポートされていないことを明確に。
BinaryWriter
で要素がひとつしか存在しないSystem.String[]
をシリアライズした際に例外を投げることがある問題の修正。ComponentSystem.GetEntityQuery
とJobComponentSystem.GetEntityQuery
にて、"None"や"Any"フィールドを使用したクエリに対して誤ったキャッシュをしてしまう問題の修正。
[0.5.1] - 2020-01-28
変更
World.CreateSystem
中のコンストラクタに関連した例外が内部例外の詳細を含むように。DefaultWorldInitialization.GetAllSystems
がList<Type>
ではなくIReadOnlyList<Type>
を返すように。DefaultWorldInitialization.AddSystemsToRootLevelSystemGroups
がList<Type>
ではなくIEnumerable<Type>
を要求するように。
修正
BlobAssetReference
型が全てのプラットフォームにおいて8バイト境界である保証がないために、32ビットプラットフォームにおいてコンポーネントのBlobデータが正しく読み込めない問題の修正。MinMaxAABB.Equals()
にてMin
を自身ではなくother
と比較する問題の修正。Entities.ForEach
がDynamicBuffer
型のin
パラメータを読み込み専用として正しく扱うように。IJobChunk.Schedule
の呼び出し中に発生した例外後にジョブのリークに起因するクラッシュが発生する可能性がある問題の修正。ComponentSystemBase.GetSingleton()
において関数が呼ばれる度に新しいクエリが生成される問題の回帰的修正。
[0.6.0] - 2020-02-17
追加
[GenerateAuthoringComponent]
属性がIBufferElementData
を実装した構造体に付けられるように。エンティティにIBufferElementData
を実装した型のDynamicBuffer
に追加することのできるオーサリングコンポーネントが自動生成される。- コンポーネントシステムとして新しい
SystemBase
基底クラスを追加。この新しいコンポーネントシステムの定義方法は依存を管理する(手動での依存管理はSystemBase.Dependency
フィールドに直接アクセスすることで依然として可能)。 IJobChunk
と(SystemBase
の)Entities.ForEach
にジョブの並列スケジューリングを明示的に行うScheduleParallel
を追加。IJobChunk
のScheduleSingle
は非並列にスケジューリングが行われることを示す。BuildConfiguration
APIによって、素早く簡単にLiveLinkプレイヤーをビルドできるエディタワークフローを導入。- LiveLinkが
GameObject
シーンに対応。 SceneSystem
APIがLoadSceneAsync
APIによってGameObject
シーンもロードするように。Unity.Scenes.Editor
内のLiveLink設定に新しいビルドコンポーネントを追加し、初期シーンをどのように扱うか制御できるように(LiveLink all, embed all, embed first)。- ポストプロセス後のILコードをUnityエディタ内で確認できるように:
DOTS
->DOTS Compiler
->Open Inspector
GetAssignableComponentTypes()
がList<Type>ありでもなしでもデータの収集のため呼び出せるように。省略時にはリストが確保され、以前と同様の振る舞いとなる。
変更
com.unity.build
パッケージがcom.unity.platforms
パッケージへと統合された。そのため、com.unity.build@0.1.0-preview
への依存を削除し、com.unity.platforms@0.2.1-preview.1
へと置き換えた。詳細はcom.unity.platforms
の変更履歴を参照。- エンティティのアーキタイプが変化した際のGCアロケーションが少なくなるような方法でマネージドコンポーネントが記憶されるように。
Unity.Entities.ICustomBootstrap
をUnity.Entities.HybridからUnity.Entitiesへと移動。World.Dispose()
がリソース解放前にWorld
のEntityManager
下の全てのreader/writerジョブの完了を待つようになり、解放後使用のエラーを回避するように。- 静的イニシャライザや
InitializeOnLoad
内にてBurstを使用するパッケージに依存するプロジェクトを読み込む際のAssemblyResolveException
の修正。 - Assets/SceneDependencyCache内の
.sceneWithBuildSettings
ファイルが絶えずリビルドされないように。これらはエディタ内におけるサブシーンの動作に必要なため、削除された際に編集中シーンのサブシーンのOnValidateによって再生成される。またドメインのリロード(Unityの再起動、プレイモードへの移行/離脱、その他)によっても再生成されるべきである。 EntityQuery.cs
:CreateArchetypeChunkArray
,ToComponentDataArray
,ToEntityArray
,CopyFromComponentDataArray
のJobHandleを返すオーバーロード(非同期に完了することが可能)がAsync
の追加された名前にリネーム(i.e.ToComponentDataArrayAsync
)。旧いオーバーロードは非推奨となり、APIアップデータの節を追加。Entities.WithName
が文字、数字、アンダースコアを使用する名前(数字から始まらない、連続する二つのアンダースコアを含まない)のみを受け入れるように。com.unity.properties
パッケージをバージョン0.10.4-preview
に更新。com.unity.serialization
パッケージをバージョン0.6.4-preview
に更新。- エンティティデバッガがチャンク情報パネルの可視性を記憶するように。
- エンティティデバッガがシステムリストのネストした型の完全な名前を表示するように。
- エンティティデバッガが直前に使用したフィルタコンポーネントがフィルタGUIのトップとなるようソートするように。
- Burstのバージョンを上げたことにより、新機能が増え、次を含む修正がなされた。
- ドメインのリロード後に関数ポインタが壊れてクラッシュを引き起こす問題を修正。
- データベースのビルド時にBurstが使用された際、BurstとAssetDatabaseがデッドロックを引き起こす可能性がある問題を修正。
非推奨
GameObjectConversionSystem
のGetBuildSettingsComponent
をGetBuildConfigurationComponent
にリネーム。GameObjectConversionSystem
のTryGetBuildSettingsComponent
をTryGetBuildConfigurationComponent
にリネーム。GameObjectConversionSettings
のBuildSettings
をBuildConfiguration
にリネーム。SceneSystem
のBuildSettingsGUID
をBuildConfigurationGUID
にリネーム。
削除
- 期限切れのAPIの削除
SceneSectionData.SharedComponentCount
- 期限切れのAPIの削除
struct SceneData
- 期限切れのAPIの削除
SubScene._SceneEntities
- 期限切れのAPIの削除
World.Active
修正
- (インスペクタウィンドウへとカーソルを動かすことなく)シーン階層ウィンドウからサブシーンを開閉できる機能。
- GameObjectを生成することなく空のサブシーンを生成できる機能。
- サブシーンの読み込みとエディタ上の変更追跡のパフォーマンスを改善。
GetSingleton
が呼び出しの度にクエリを生成するようになっていた問題の回帰的修正。- 同じプレイヤー上かつ別々のワールドから複数回ロードされた場合に、すでにロードされているAssetBundleをサブシーンがロードしようとする問題の修正。
- プレハブ内のサブシーンがサポートされていないことを明確に。
- エラーメッセージが期待する内容を含まない場合にラムダ式によるジョブコード生成のテストが失敗するように。
- GameObject変換に必要なワールドの準備におけるパフォーマンスを改善。
IJobChunk.Execute()
に渡されるchunkIndex
パラメータの値が正しくなるように。ISystemStateSharedComponentData
コンポーネントの付いたエンティティが正しく破棄されなくなるエラーの修正。Entity
を含むマネージドコンポーネントが正しくシリアライズされるように。- 型を解決できない場合に
BlobAssetVerifier
がエラーを投げる問題の修正。 EntityQuery
のためのマネージドコンポーネント拡張の公開。Entities.ForEach
にて、ラムダ式がメンバ関数として出力されてコンパイルが失敗した際、拡張メソッドの呼び出しによる外側のシステムのthis
のキャプチャを認識するように。Entities.ForEach
にて、ラムダ式がメンバ関数として出力されてコンパイルが失敗した際、外側のシステムのフィールドがキャプチャされて参照として使用されていることを報告するように。Entities.ForEach
にて、ラムダ式がメンバ関数として出力されてコンパイルが失敗した際、静的関数の呼び出しを誤ってエラーの原因と指摘しないように。- Visual Studio 2017/2019による
Entities.ForEach
の内部のデバッグ(いくつかのデバッグ機能にはcom.unity.ide.visualstudioパッケージの今後の更新が必要)。 UnityEngine.Component
を継承するT
に対するEntityQuery.ToComponentArray<T>
が正しくチャンク内のすべてのデータを集めるように。EntityQueryDesc
によるComponentSystemBase.GetEntityQuery
EntityManager.CreateEntityQuery
の呼び出しが読み込み専用の許可を考慮しない問題の修正。
[0.7.0] - 2020-03-03
追加
- エンティティを介したコンポーネントへの容易なアクセスを提供する
HasComponent
/GetComponent
/SetComponent
をSystemBase
クラスに追加。これらのメソッドはOnUpdate内ではEntityManager
による呼び出しを行い、Entities.ForEach
内ではComponentDataFromEntity
を介したコード生成によるアクセスを行う。 SubScene
がハイブリッドコンポーネントに対応し、エディタLiveLinkが可能になった(プレイヤーLiveLinkは未対応)。- 変換時に含めるべきシステムを明示的に指定する
GameObjectConversionSettings.Systems
を追加。
変更
- デシリアライズされたワールド使用時、共有コンポーネントを手動で設定/追加するまで、共有コンポーネントフィルタが正しく動作しない問題の修正。
- 更新時のコールバックにより
ComponentSystemGroup
更新時の振る舞いが制御できるように。ComponentSystemGroup.UpdateCallback
のドキュメントやFixedRateUtils
の例を見よ。 - マネージドコンポーネントが
IDisposable
とICloneable
に対応。 - エディタ上の様々なツールウィンドウ上にて表示すべきワールドの選定に利用するため、
World
のFlags
フィールドを公開。 World.Systems
が読み込み専用のコレクションとなり、列挙時にマネージドメモリの確保をしなくなった。com.unity.platforms
のバージョンを0.2.1-preview.4
に更新。
非推奨
World.AllWorlds
プロパティはWorld.All
で置き換えられ、読み込み専用コレクションとなることで、列挙時にマネージドメモリを確保しなくなった。
削除
- 期限切れのAPIの削除
implicit operator GameObjectConversionSettings(World)
- 期限切れのAPIの削除
implicit operator GameObjectConversionSettings(Hash128)
- 期限切れのAPIの削除
implicit operator GameObjectConversionSettings(UnityEditor.GUID)
- 期限切れのAPIの削除
TimeData.deltaTime
- 期限切れのAPIの削除
TimeData.time
- 期限切れのAPIの削除
TimeData.timeSinceLevelLoad
- 期限切れのAPIの削除
TimeData.captureFramerate
- 期限切れのAPIの削除
TimeData.fixedTime
- 期限切れのAPIの削除
TimeData.frameCount
- 期限切れのAPIの削除
TimeData.timeScale
- 期限切れのAPIの削除
TimeData.unscaledTime
- 期限切れのAPIの削除
TimeData.captureDeltaTime
- 期限切れのAPIの削除
TimeData.fixedUnscaledTime
- 期限切れのAPIの削除
TimeData.maximumDeltaTime
- 期限切れのAPIの削除
TimeData.realtimeSinceStartup
- 期限切れのAPIの削除
TimeData.renderedFrameCount
- 期限切れのAPIの削除
TimeData.smoothDeltaTime
- 期限切れのAPIの削除
TimeData.unscaledDeltaTime
- 期限切れのAPIの削除
TimeData.fixedUnscaledDeltaTime
- 期限切れのAPIの削除
TimeData.maximumParticleDeltaTime
- 期限切れのAPIの削除
TimeData.inFixedTimeStep
- 期限切れのAPIの削除
ComponentSystemBase.OnCreateManager()
- 期限切れのAPIの削除
ComponentSystemBase.OnDestroyManager()
- 期限切れのAPIの削除
ConverterVersionAttribute(int)
修正
- transform階層の移動していない子によってtransformシステムの更新が引き起こされないように。
- 動的バッファコンポーネントがLiveLinkの最中にリークを引き起こすことがあるバグの修正。
- モジュール内に
[GenerateAuthoringComponent]
によって生成されたメソッドのみの場合にクラッシュする問題の修正。 - 変数、フィールド、戻り値として得られるデリゲートが使用された場合に
Entities.ForEach
が正しいエラーメッセージを表示するように。 - タグコンポーネントや
WithStructuralChanges
を利用したEntities.ForEach
に対するIL2CPPのコンパイルエラーの修正。 - ラムダ式がBurstコンパイルされかつコレクション検査が有効の際、
Entities.ForEach
のラムダ式パラメータがDOTSランタイム向けにマーシャリングされるように。以前はEntityCommandBuffer
やDisposeSentinel
フィールドを持つ別の型をラムダ関数の一部として使用した場合(DOTSランタイム使用時)、メモリアクセス違反となることがあった。 - フィルタのあるクエリにおいて
IJobChunk
の.Run()
がnullや無効なチャンクを参照することがあった。
セキュリティ
- 無関係なクエリから
ToComponentDataArrayAsync
CopyFromComponentDataArray
CopyFromComponentDataArrayAsync
にアクセスした場合に正しいエラーメッセージを表示するように。
[0.8.0] - 2020-03-13
追加
- 抜けていた動的コンポーネントのバージョンAPIの追加:
ArchetypeChunk.GetComponentVersion(ArchetypeChunkComponentTypeDynamic)
- 抜けていた動的コンポーネントの存在確認APIの追加:
ArchetypeChunk.Has(ArchetypeChunkComponentTypeDynamic)
EntityArchetype
がプレハブであるかどうかを公開していなかった。bool型のEntityArchetype.Prefab
を追加。メタエンティティクエリはプレハブを除外しないためこれが必要となる。- Linuxのためのビルド構成とビルドパイプラインを追加
- LiveLinkプレイヤーが誤ったエディタに接続しようとした際にエラーを出し、接続方法をユーザにアドバイスするように。
変更
ArchetypeChunkComponentTypeDynamic
のメモリレイアウトを最適化。48->40バイトに。- LiveLink: LiveLinkアセットをLiveLinkプレイヤーに送信した際にエディタがフリーズしないように。
- LiveLink: 単独のアセットに依存するbuiltin_extraのすべてのアセットを含めず、使われているものだけ送るように。これによりプレイヤーへのLiveLinkの初速が大幅に向上。
- Burstアップグレードにより、多くの不具合を解決しネイティブなデバッグ機能を導入。
非推奨
IJobForEach
インターフェースを実装する型を非推奨に。これらのジョブにはIJobChunk
やEntities.ForEach
を使用するように。
修正
- 連番でインデクスされていないサブシーンセクションへのLiveLinkの修正。どんなインデクスを使用しても動くように。
- 無効化されたゲームオブジェクトをライブ変換した際の警告を修正。
- 有効なネイティブコンテナを含む型に対する
Entities.WithReadOnly
,Entities.WithDeallocateOnJobCompletion
,Entities.WithNativeDisableContainerSafetyRestriction
,Entities.WithNativeDisableParallelForRestriction
の使用を許可。
[0.9.0] - 2020-04-09
追加
public void GetCreatedAndDestroyedEntitiesAsync(NativeList<int> state, NativeList<Entity> createdEntities, NativeList<Entity> destroyedEntities)
でこのメソッドの最後の呼び出し後に生成および破棄されたエンティティが検出可能に。- インスペクタボタンよりサブシーンの再インポートができるように。これは再変換を強制する。
- アセットに依存するゲームオブジェクトの変換結果を表現するために
GameObjectConversionSystem.DeclareAssetDependency
を追加。 void EntityManager.Instantiate(NativeArray<Entity> srcEntities, NativeArray<Entity> dstEntities)
を追加。これはインスタンス化されたエンティティ集合を明示的に集合として扱う。集合内のエンティティに対するエンティティ参照を含むコンポーネントが複製されるとそれはインスタンス化されたエンティティへと再マッピングされる。void EntityManager.CopyEntitiesFrom(EntityManager srcEntityManager, NativeArray<Entity> srcEntities, NativeArray<Entity> outputEntities = default)
を追加。これはワールドからワールドへと指定したエンティティ集合をコピーすることができる。集合内のエンティティに対するエンティティ参照を含むコンポーネントが複製されるとそれはインスタンス化されたエンティティへと再マッピングされる。- メッシュ変形データ構造に対するアセンブリを追加。
変更
- システムが二段階で生成されるように。まず、ECSはすべてのシステムの新しいインスタンスを生成してコンストラクタを実行する。その後、すべて
OnCreate
メソッドを実行する。これにより、OnCreate()
内部でのWorld.GetExistingSystem<OtherSystem>()
の使用が可能に。 - システムが三段階で破棄されるように。まず、ECSはすべての実行中のシステムを停止する(i.e. OnStopRunning()を実行する)。次にすべての
OnDestroy
メソッドを実行する。最後に、ECSはすべてのシステムを破棄する。これは他のシステムを相互参照するシステムの片付けを安全かつ予測可能に行えるということ。 - EntityCommandBufferの再生が関数ポインタを介してBurst化されるように。アンマネージドコマンドとマネージドコマンドの両方がひとつのバッファに混在する場合には、アンマネージドコマンドはBurst化される。マネージドコマンドが存在しない場合には、各チェインの再生は完全にBurst化される。
GameObjectConversionSystem
内でマッチ対象のゲームオブジェクトにクエリされたオーサリングコンポーネントが複数存在した場合でもEntities.ForEach
が警告を出さないように。期待する型の最初のコンポーネントインスタンスを返すようになり、必要であれば複数を扱うために変換システムでGetComponents<T>()
を呼び出すことができるように。- 変換時に参照プレハブとしてプレハブでないオブジェクトを宣言した場合に警告が出るように。
- SystemBase内で
SetSingleton
やGetSingleton
によってシングルトンにアクセスしたときのパフォーマンスを改善(EntityQueryのメソッドを介した場合も含む)。 com.unity.properties
パッケージを1.1.0-preview
に更新。com.unity.serialization
パッケージを1.1.0-preview
に更新。com.unity.platforms
パッケージを0.2.2-preview.7
に更新。
非推奨
public T World.CreateSystem<T>(params object[] constructorArguments)
を非推奨に。World.AddSystem(new MySystem(myParams))
を代わりに使うように。LiveLinkBuildImport.GetHash/GetDependencies/GetBundlePath
を非推奨に。
削除
- 期限切れのAPIの削除
TypeManager.CreateTypeIndexForComponent<T>()
- 期限切れのAPIの削除
TypeManager.CreateTypeIndexForSharedComponent<T>()
- 期限切れのAPIの削除
TypeManager.CreateTypeIndexForBufferElement<T>()
- 期限切れのAPIの削除
DynamicBuffer.Reserve(int)
- 期限切れのAPIの削除
World.Active
修正
- BlobAsset参照に
readonly
が使用されている場合によりよいエラーメッセージを生成するようにBlobAssetSafetyVerifierを修正。 EntityChunk.CompareTo()
における正しくない比較を修正。SceneManager.IsSceneLoaded
が変換されたエンティティシーンに対して動作するようになり、エンティティシーンのすべてのセクションがロードされているかどうかを返すように。- プレハブの一部となっているエンティティを削除しようとした際の変換コード中の例外を修正。
- 同一ゲームオブジェクトに対して複数のコンポーネントが追加された際にハイブリッドコンポーネントの変換が失敗する問題の修正。
- ネストされたキャプチャを伴うEntities.ForEach内でコンポーネントへのアクセスメソッド(GetComponent/SetComponent/HasComponent)の使用を修正。
ENABLE_SIMPLE_SYSTEM_DEPENDENCIES
有効化時のコンパイルの問題を修正。
既知の問題
- システムグループが
EntitySceneOptimizations
の一部として実行されるシステムに対して現在適用できない。
[0.9.1] - 2020-04-15
修正
- SystemBaseのシングルトンアクセスメソッドにおけるNullReferenceExceptionの問題を修正。
[0.10.0] - 2020-04-24
追加
- ArchetypeChunkに
GetOrderVersion()
を追加。orderバージョンはチャンク内で構造変化が起きた際に更新される。 SystemBase
クラスを使用する際にエンティティを介したコンポーネントアクセスを効率化するGetComponentDataFromEntity
を追加。これらのメソッドはOnUpdate内ではComponentSystemBase
のメソッドを呼び出し、Entities.ForEach
の内部では確保したComponentDataFromEntity
を介したアクセスをコード生成する。- ストリーミング中のワールドに対してエンティティセクションのロード後にシステムを実行できるように
WorldSystemFilterFlags.ProcessAfterLoad
をサポート。 NativeSlice
からコピーするDynamicBuffer.CopyFrom()
の亜種を追加。- 読み込み専用アクセスのみが必要なケースのために
DynamicBuffer.GetUnsafeReadOnlyPtr()
を追加。 - シーンやセクションエンティティに追加可能なPostLoadCommandBufferコンポーネントを追加。これはエンティティセクションのロード後にストリーミング中のワールド内でコマンドバッファを再生する。シーンエンティティに追加した場合にはシーン内のすべてのセクションでコマンドバッファを再生する。
- ハイブリッドやDOTSランタイムで特別に使用される変換システムを示す
WorldSystemFilterFlags.HybridGameObjectConversion
とWorldSystemFilterFlags.DotsRuntimeGameObjectConversion
を追加。 Entities.ForEach
を直接.Run
で実行した際のプロファイルマーカが欠けていたため追加。- 変換されたサブシーンのヘッダ内にメタデータコンポーネントを保存することをサポート。
GameObjectConversionSystem.GetSceneSectionEntity
はリクエストされたセクションエンティティにコンポーネントを追加する。追加されたコンポーネントはエンティティヘッダにシリアライズされ、実行時のシーン解決時にセクションエンティティに対して追加される。 - ResolvedSectionEntityバッファコンポーネントがパブリックとなり、解決されたシーンエンティティのメタデータコンポーネントへのアクセスに使用できるように。
変更
- Burstのバージョンを更新により、コンパイル時間を改善し、複数のバグを修正。
- ChangeVersionsの振る舞いを様々なエントリーポイントに対してより一貫性のあるものに。
com.unity.properties
のバージョンを1.1.1-preview
に更新。com.unity.serialization
のバージョンを1.1.1-preview
に更新。com.unity.platforms
のバージョンを0.3.0-preview.2
に更新。ConvertToEntity
が変換されたゲームオブジェクトにオーサリングコンポーネントが複数存在する場合でも警告を出さないように。これにより、複数をサポートできる変換システムと両立できるように。
非推奨
EntityManager.UnlockChunk
を非推奨に。- ゲームオブジェクトから変換されたエンティティに対してプロキシコンポーネントを用いてコンポーネントを追加することを非推奨に。
GameObjectConversionSystem
とIConvertGameObjectToEntity
による新しい変換ワークフローを使用すること。 Unity.Entities.Editor
のComponentDataProxyBaseEditor
、DynamicBufferProxyBaseEditor
を非推奨に。Unity.Entities.Hybrid
のComponentDataProxy<T>
、ComponentDataProxyBase
、DynamicBufferProxy<T>
、SharedComponentDataProxy<T>
、SceneSectionProxy
を非推奨に。Unity.Entities.Tests
のMockDataProxy
、MockDynamicBufferDataProxy
、MockSharedDataProxy
、MockSharedDisallowMultipleProxy
を非推奨に。Unity.Transforms
のCopyInitialTransformFromGameObjectProxy
、CopyTransformFromGameObjectProxy
、CopyTransformToGameObjectProxy
、LocalToWorldProxy
、NonUniformScaleProxy
、RotationProxy
、TranslationProxy
を非推奨に。ScriptBehaviourUpdateOrder.CurrentPlayerLoop
を非推奨に。代わりにPlayerLoop.GetCurrentPlayerLoop()
を使用すること。ScriptBehaviourUpdateOrder.SetPlayerLoop
を非推奨に。代わりにPlayerLoop.SetPlayerLoop()
を使用すること。
削除
- 期限切れのAPIの削除
BlobAssetComputationContext.AssociateBlobAssetWithGameObject(Hash128, GameObject)
- 期限切れのAPIの削除
BlobAssetReference.Release()
- 期限切れのAPIの削除
BlobAssetStore.UpdateBlobAssetForGameObject<T>(int, NativeArray<Hash128>)
- 期限切れのAPIの削除
class TerminatesProgramAttribute
- 期限切れのAPIの削除
EntityManager.LockChunkOrder(ArchetypeChunk)
- 期限切れのAPIの削除
EntityManager.LockChunkOrder(EntityQuery)
- 期限切れのAPIの削除
EntityManager.LockChunkOrder(NativeArray<ArchetypeChunk>)
- 期限切れのAPIの削除
EntityManager.UnlockChunkOrder(ArchetypeChunk)
- 期限切れのAPIの削除
EntityManager.UnlockChunkOrder(EntityQuery)
- 期限切れのAPIの削除
GameObjectConversionSettings.BuildSettings
- 期限切れのAPIの削除
GameObjectConversionSystem.GetBuildSettingsComponent<T>()
- 期限切れのAPIの削除
GameObjectConversionSystem.TryGetBuildSettingsComponent<T>(out T)
- 期限切れのAPIの削除
LambdaJobDescriptionConstructionMethods.WithBurst(...)
- 期限切れのAPIの削除
LambdaJobDescriptionConstructionMethods.WithNativeDisableUnsafePtrRestrictionAttribute(...)
- 期限切れのAPIの削除
SceneSystem.BuildSettingsGUID
- 期限切れのオーバーロードの削除
BlobBuilder.Allocate<T>(int, ref BlobArray<T>)
- 期限切れのオーバーロードの削除
EntityQuery.CopyFromComponentDataArray<T>(...)
- 期限切れのオーバーロードの削除
EntityQuery.CreateArchetypeChunkArray(...)
- 期限切れのオーバーロードの削除
EntityQuery.ToComponentDataArray<T>(...)
- 期限切れのオーバーロードの削除
EntityQuery.ToEntityArray(...)
修正
- ハイブリッドコンポーネントのトランスフォームの同期でスケールを正しく扱うように修正。
- 構造変化後に
ComponentDataFromEntity
、ArchetypeChunkComponentType
、ArchetypeChunkComponentTypeDynamic
、ArchetypeChunkBufferType
、ArchetypeChunkSharedComponentType
、ArchetypeChunkEntityType
、BufferFromEntity
にアクセスした際のJobsDebuggerのエラーメッセージを改善(Unity 2020.1.0b2以降が必要)。 - シーン変換なしにConvertToEntityを使用した際にシーンカメラのカリングマスクがリセットされていなかった問題の修正。
- ネストされたキャプチャを含むEntities.ForEachが存在する場合にIL2CPPビルドで発生するIL2CPPコンパイルエラーを修正。
- エンティティインスペクタでチャンクコンポーネントに正しくないデータが表示される問題の修正。
- 条件コンパイルされるフィールドを含み、型ハッシュの不一致を引き起こすハイブリッドコンポーネントのシリアライズ時に発生するエンティティシーンのロードエラーを修正。
LambdaJobTestFixture
とAutoCreateComponentSystemTests_*
システムがデフォルトでシミュレーションワールドに追加されないように。GameObjectConversionSystem.DependOnAsset
が複数サブシーンを正しく扱うように。- 小さなコンポーネントアクセスメソッド(
GetComponent/SetComponent/HasComponent
)が大量に存在する場合に、IL分岐命令の不足によりEntities.ForEach
が壊れてしまう問題の修正。 - エンティティの無効化時やプレハブへの変換時にハイブリッドコンポーネントが非アクティブ化される問題の修正。
- シングルトンアクセスメソッド(
SetSingleton
/GetSingleton
)のパフォーマンスを改善。 - マネージドコンポーネントがPlayer LiveLink中にシリアライズされない問題の修正。
CompanionLink
がPlayer LiveLink中に正しく同期されない問題の修正。- 変更されたチャンク内の共有コンポーネントがデフォルト値である場合のEntityDifferの誤検出を修正。
- コンポーネントアクセスメソッド(
GetComponent/SetComponent/HasComponent
)とともに静的メソッドをを呼び出すEntities.ForEachのラムダ式の修正。
[0.11.0] - 2020-05-25
追加
ArchetypeChunkComponentObjects<T>.Length
を追加。
変更
com.unity.burst
パッケージをバージョン1.3.0-preview.12
に更新。ComponentType.ToString
のDOTSランタイムでの名前を可能であれば完全な型名、そうでなければStableTypeHashをデフォルト値とするように改善。- Unityエディタの最小バージョンを2019.3.12f1 (84b23722532d)に更新。
- マネージャが有効でない場合に
EntityManager.Version
とEntityManager.GlobalSystemVersion
が0を返すのではなく例外を投げるように。
非推奨
- 構造体であるEntityManagerには効率的な実装ができないため
EntityManager.IsCreated
を非推奨に。(幸いにも滅多にないが)EntityManagerが未だ有効かどうか確認する必要がある場合には、WorldとEntityManagerの生成と破棄は常に同時に行われるため、World.IsCreated
を代わりに使用するように。 - 仮想関数やシステムリストの直接修正によるシステムのソートを非推奨に。
UpdateInGroup
属性に新しい二つのプロパティを追加:OrderFirst
とOrderLast
。これらどちらかのプロパティにtrueを設定するとそのシステムと同様にタグ付けされた他のシステムとがグループ化される。これらのシステムはそれらサブグループ内でソートされる。この変更は将来Burst互換システムを有効にするためのもの。
削除
- 期限切れのAPIの削除
EntityQuery.CreateArchetypeChunkArray(Allocator, out JobHandle)
- 期限切れのAPIの削除
EntityQuery.ToEntityArray(Allocator, out JobHandle)
- 期限切れのAPIの削除
EntityQuery.ToComponentDataArray<T>(Allocator, out JobHandle)
- 期限切れのAPIの削除
EntityQuery.CopyFromComponentDataArray<T>(NativeArray<T>, out JobHandle)
- 期限切れのAPIの削除
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkSharedComponentType<T>)
- 期限切れのAPIの削除
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkBufferType<T>)
- 期限切れのAPIの削除
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkComponentType<T>)
- 期限切れのAPIの削除
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
- 期限切れのAPIの削除
ScriptBehaviourUpdateOrder.SetPlayerLoop(PlayerLoopSystem)
- 期限切れのAPIの削除
TypeInfoGeneration.CalculateMemoryOrderingAndStableHash(TypeDefinition, out ulong, out ulong)
修正
EntityManager
に関わるJobsDebuggerエラーの改善。- コールバックが実行の最初のフレームで有効化された場合の
FixedRateUtils.FixedRateCatchUpManager
の潜在的な無限ループの修正。 FixedRateUtils.FixedRateCatchUpManager
かFixedRateUtils.FixedRateSimpleManager
が有効化された際、最初の更新が elapsedTime = 0.0 でなされることを保証するように。GameObjectConversionSystem.DeclareAssetDependency
で登録されたアセット依存対象が有効性がチェックされ、ビルトインアセットが無視されるように。- 大量のエンティティに変更を適用する際の
EntityPatcher
のパフォーマンスを改善。 - ECSシステムのスクリプトテンプレートが
JobComponentSystem
ではなくSystemBase
を使用するように。 - 複数のハイブリッドコンポーネントをもつエンティティをインスタンス化した際にマネージドストアを破壊してしまう問題の修正。
- インスタンス化の際にハイブリッドコンポーネント内のエンティティフィールドを再マッピングしないように。
- 再帰型内部のエンティティ参照を再マッピングしようとした際に発生するクラッシュの修正。
- 共有コンポーネント内のエンティティ参照や、共有コンポーネントおよびマネージドコンポーネント内のBlobアセット参照のシリアライズが可能に。
ToComponentDataArray
のような挙動となっていたEntityQuery.CopyFromComponentDataArray
のバグを修正。- UnloadAllAssetsが共有あるいはマネージドコンポーネントによって参照されているアセットをアンロードしないように。