This repo demonstrates an approach to Unity ECS in 2D that answers these questions:
- How to author and bake entity prefab for 2D character?
- How to store and use information of spritesheets globally?
- How to implement spritesheet animation logic in ECS?
- How to synchronize sprite renderers with entities?
- How to react to UI events in ECS?
- How to implement object-pool for sprite presenters?
- How to utilize TransformAccessArray to update the transform of sprite presenters in parallel?
- How to use Companion GameObject from Entities Hybrid?
Add more functionality
- Spawn multiple characters
- Randomly set the animation for each character
- Automatically move characters
- Can change global move speed for all characters in real-time
- Destroy entities
- Refactor some code
- Teleport characters to the opposite side of the screen if they went out of bounds
- Upgrade to Unity 6000.0.27
- Fix a compilation error caused by missing TMPro
- Add Entities Graphics and URP
- Add a "Version 2" button that switch to Companion GameObject powered by Entities Hybrid
- Make some changes to subscene and authoring to accomodate the Companion GameObject approach
As in the video below, when "Version 1" is still active, the entities will use GameObjects provided by the GameObjectPool. Thus in the Hierarchy window, GameObjects represent entities will be active too.
When "Version 2" is activated, entities from version 1 will be destroyed and entities for version 2 will be spawned. This time, they will use Compnanion GameObjects provided by Entities Hybrid instead. Thus GameObjects on the Hierarchy window stay inactive.
Note: As of now, Companion GameObjects generally stay invisible. We don't have any possible mean to directly inspect them.
- Correct subscene
- Remove the code to add
Prefab
tag to prefab entities at runtime
- Remove
[BurstCompile]
on someISystem
methods and document the reason.
- GandalfHardcore - Pixel Art Character Pack: https://gandalfhardcore.itch.io/free-pixel-art