Unclaimed Package Is this your package? Claim it to unlock full analytics and manage your listing.
Claim This Package

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

Style
Preview
pkglnk installs badge
## 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
```

[![pkglnk](https://www.pkglnk.dev/badge/ecs-ui.svg?style=pkglnk)](https://www.pkglnk.dev/pkg/ecs-ui)

README

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ uGui Π² LeoECS

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ событий uGui Π² ECS-ΠΌΠΈΡ€.

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π½Π° Unity 2020.3 (зависит ΠΎΡ‚ Unity) ΠΈ содСрТит asmdef-описания для компиляции Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ рСкомпиляции основного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

discord

Установка

Π’ Π²ΠΈΠ΄Π΅ 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, достаточно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² это ΠΏΠΎΠ»Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, Ρ‡ΡŒΡ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ событий.

Comments

No comments yet. Be the first!