LeoECS uGui Bindings
Easy uGui event bindings for LeoECS Entity Component System framework.
com.leopotam.ecs-ui 
Install via UPM
Add to Unity Package Manager using this URL
https://www.pkglnk.dev/ecs-ui.git README Markdown
Copy this to your project's README.md
## Installation
Add **LeoECS uGui Bindings** to your Unity project via Package Manager:
1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/ecs-ui.git
```
[](https://www.pkglnk.dev/pkg/ecs-ui)README
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ uGui Π² LeoECS
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ uGui Π² ECS-ΠΌΠΈΡ.
ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π½Π° Unity 2020.3 (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Unity) ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ asmdef-ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
- Π‘ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
- ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- ΠΠΈΡΠ΅Π½Π·ΠΈΡ
- Π§Π°ΠΠΎ
Π‘ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π Π²ΠΈΠ΄Π΅ unity ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ unity-ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΅ΡΠ΅Π· git-ΡΡΡΠ»ΠΊΡ Π² PackageManager ΠΈΠ»ΠΈ ΠΏΡΡΠΌΠΎΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Packages/manifest.json:
"com.leopotam.ecs": "https://github.com/Leopotam/ecs-ui.git",
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅Π»ΠΈΠ·Π½Π°Ρ Π²Π΅ΡΡΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ "Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅" Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ - ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π²Π΅ΡΠΊΡ develop:
"com.leopotam.ecs": "https://github.com/Leopotam/ecs-ui.git#develop",
Π Π²ΠΈΠ΄Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ²
ΠΠΎΠ΄ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ Π² Π²ΠΈΠ΄Π΅ Π°ΡΡ ΠΈΠ²Π° ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ².
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ
EcsUiEmitter
EcsUiEmitter ΡΠ²Π»ΡΠ΅ΡΡΡ MonoBehaviour-ΠΊΠ»Π°ΡΡΠΎΠΌ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΌ Π·Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ECS-ΡΠΎΠ±ΡΡΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ uGui-ΡΠΎΠ±ΡΡΠΈΠΉ (Π½Π°ΠΆΠ°ΡΠΈΠ΅, ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ.ΠΏ):
public class Startup : MonoBehaviour {
// ΠΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π² ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Unity.
[SerializeField] EcsUiEmitter _uiEmitter;
EcsSystems _systems;
void Start () {
var world = new EcsWorld ();
_systems = new EcsSystems (world)
// ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ...
.Add (new TestSystem ())
.InjectUi (_uiEmitter);
_systems.Init ();
}
}
public class TestSystem : IEcsInitSystem {
// ΠΠΎΠ»Ρ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ.
EcsUiEmitter _ui;
[EcsUiNamed("MyButton")] GameObject _btnGo;
[EcsUiNamed("MyButton")] Transform _btnTransform;
[EcsUiNamed("MyButton")] Button _btn;
public void Init () {
// ΠΡΠ΅ ΠΏΠΎΠ»Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊ ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ:
// _ui - ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ Π½Π° EcsUiEmitter.
// _btnGo - ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ, Π°Π½Π°Π»ΠΎΠ³ Π²ΡΠ·ΠΎΠ²Π° _ui.GetNamedObject ("MyButton");
// _btnTransform = ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ, Π°Π½Π°Π»ΠΎΠ³ Π²ΡΠ·ΠΎΠ²Π° _ui.GetNamedObject ("MyButton").GetComponent<Transform> ();
// _btn = ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ, Π°Π½Π°Π»ΠΎΠ³ Π²ΡΠ·ΠΎΠ²Π° _ui.GetNamedObject ("MyButton").GetComponent<Button> ();
}
}
ΠΠΠΠΠ!
EcsUiEmitterΠ΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌΡGameObject, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΌΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ uGui. ΠΠΠΠΠ! ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ Π΄Π»ΡEcsUiEmitter- Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°EcsSystems.Inject()Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ (ΠΊΠ»Π°ΡΡΡ xxxAction) - ΡΡΠΎ MonoBehaviour-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ uGui Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΈΡΡΡ EcsUiEmitter ΠΏΠΎ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ Π²Π²Π΅ΡΡ
ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠΎΠ±ΡΡΠΈΠΉ Π΄Π»Ρ ECS-ΠΌΠΈΡΠ°.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
ECS-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ: EcsUiClickEvent, EcsUiBeginDragEvent, EcsUiEndDragEvent ΠΈ Ρ.Π΄. - Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ECS-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ EcsFilter:
public class TestUiClickEventSystem : IEcsRunSystem {
EcsWorld _world;
EcsFilter<EcsUiClickEvent> _clickEvents;
public void Run () {
foreach (var idx in _clickEvents) {
ref EcsUiClickEvent data = ref _clickEvents.Get1 (idx);
Debug.Log ("Im clicked!", data.Sender);
}
}
}
ΠΠΈΡΠ΅Π½Π·ΠΈΡ
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ Π΄Π²ΡΠΌΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΡΡ.
Π ΡΠ»ΡΡΠ°ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ MIT-Red Π½Π΅ ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΠΈ.
Π§Π°ΠΠΎ
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠ°ΡΠ½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°Ρ uGui Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ ΡΠ»Π°Π³ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ?
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΠ΅ Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Selectable, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΡΠΎ ΠΏΠΎΠ»Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ.
No comments yet. Be the first!