一度に複数のEntityを生成するSystem

IBufferElementData について

参考 【Unity】 ECS まとめ(前編) - エフアンダーバー 【Unity】ECSで配列を格納する Dynamic Buffers - テラシュールブログ Interface IBufferElementData | Package Manager UI website

ISharedComponentData について

保存と復元を可能にするためにシリアライズ可能である必要があるので必ず[Serializable]をつける。 共有のために同一性判定が必要なため、 参照型を含む場合にはSystem.IEquatable<T>の実装とGetHashCodeのオーバーライドが必須 (現在のバージョンEntities0.8.0</t>…

MessagePack for C#とEntitiesを両方入れた時にエラーが出る

環境 Unity 2019.3.6f1 MessaePack for C# v2.1.90 Entities v0.8.0 エラーの内容 MessagePack for C# とEntitiesをInstallすると次のようにエラーが出ます。 PrecompiledAssemblyException: Multiple precompiled assemblies with the same name System. Ru…

Unity DOTSで衝突時に何らかの処理を行う時のテンプレ

環境 Unity Entities 0.5.1 Unity Physics 0.2.5 コード

Authoring コンポーネントのテンプレ

using Unity.Entities; using UnityEngine; public class AnyAuthoring : MonoBehaviour, IConvertGameObjectToEntity { public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { dstManager.AddComp…

ただのMonoBehaviorでEntityをいじる方法

using Unity.Collections; using Unity.Entities; using UnityEngine; public class TestBehavior : MonoBehaviour { private EntityManager _entityManager; private EntityQuery _entityQuery; private void Awake() { _entityManager = World.DefaultGame…

World.DefaultGameObjectInjectionWorld とは

バージョン Entities 0.6.0 Worldとは 必要な部分だけ抜き出すとこんな感じ public partial class World : IDisposable { public static World DefaultGameObjectInjectionWorld { get; set; } private EntityManager m_EntityManager; public string Name {…

Unity DOTSにおけるUnitTest

Test Runnerを開く Window -> General -> Test Runner でTest Runnerを開く フォルダを作成 EditModeタブでCreate EditMode Test Assembly Folderでテスト用のフォルダを作成 Testスクリプトを作成 Create Test Scripts in current folderでスクリプトを作成…

最初にEntityを1つ作る方法

public static class InitializeAnyEntity { [RuntimeInitializeOnLoadMethod] public static void CreateAnyEntity() { var entityManager = World.DefaultGameObjectInjectionWorld.EntityManager; entityManager.CreateEntity(/*ComponentDataを指定*/); }…

PrefabからEntityを生成する方法メモ(Entities v0.8.0)

はじめに DOTS以前のUnityでは、PrefabからGameObjectを生成したい時、 using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnPrefab : MonoBehaviour { [SerializeField] private GameObject prefab; privat…

DOTSでマスターデータ管理

概要 csvファイル(マスターデータ)を読み込み、ゲームに反映させる、ということをUnity DOTSで行う方法をまとめました。 本記事の執筆の際に、特に次のサイトを参考にさせて頂きました。 www.f-sp.com 環境 Unity 2019.3.0f5 Entities 0.5.0 preview.17 実装…

UnityPhysics高速化についてのメモ

基本的にCommandBufferではなく、CommandBuffer.Concurrentを使う。 CollisionEventsJobやTriggerEventsJobでは、 [NativeSetThreadIndex] private int _threadIndex; のように宣言するとスレッドの番号を入手できるので、これをCommandBuffer.Concurrentの…