This shows you the differences between two versions of the page.
pjv:laboratoare:2020:04 [2020/12/09 16:08] alexandru.gradinaru |
pjv:laboratoare:2020:04 [2020/12/09 17:05] (current) alexandru.gradinaru |
||
---|---|---|---|
Line 83: | Line 83: | ||
</code> | </code> | ||
+ | === GUI === | ||
+ | Pentru afisarea elementelor de interfata relative la spatiul scenei se poate folosi atat un canvas, cat si mai multe instante de canvas. | ||
+ | |||
+ | {{ https://www.stevestreeting.com/images/healthbarsdemo_thumb.png |}} | ||
+ | |||
+ | Astfel, o varianta este sa atasati un canvas de tip WorldSpace la obiectele care au nevoie de elemente de interfata grafica (de exemplu health bar). | ||
+ | |||
+ | |||
+ | {{ https://www.stevestreeting.com/images/healthbarobj.png |}} | ||
+ | {{ :pjv:laboratoare:2020:localcanvas.png?direct&750 |}} | ||
+ | {{ :pjv:laboratoare:2020:localcanvas-wspace.png |}} | ||
+ | |||
+ | O alta varianta este prin scriptarea unui singur element de canvas referentiat si transpunerea lui relativ la obiectul curent (util de exemplu in cazul dialogului sau a elementelor care nu se pot afisa de mai multe ori in acelasi timp) | ||
+ | <code> | ||
+ | var target : Transform; | ||
+ | |||
+ | function Update () | ||
+ | { | ||
+ | var wantedPos = Camera.main.WorldToViewportPoint (target.position); | ||
+ | transform.position = wantedPos; | ||
+ | } | ||
+ | </code> | ||
=== Inventar === | === Inventar === | ||
Line 163: | Line 185: | ||
* o imagine: icon pentru obiectul in inventar | * o imagine: icon pentru obiectul in inventar | ||
* script de gestionare: pentru fiecare slot putem avea un script de gestionare care va actualiza interfata slotului respectiv (nume, icon etc). | * script de gestionare: pentru fiecare slot putem avea un script de gestionare care va actualiza interfata slotului respectiv (nume, icon etc). | ||
+ | |||
+ | {{ :pjv:laboratoare:2020:inventory.png |}} | ||
+ | {{ :pjv:laboratoare:2020:inventory-grid_layout.png |}} | ||
+ | |||
+ | Pentru sloturile de inventar este indicat sa folositi un prefab sau un template. | ||
Interfata grafica a inventarului are nevoie si de un script de gestionare. Astfel vom aveam un script care asculta (subscribe) evenimentul definit (''delegate'') la actualizarea inventarului, si actualizeaza fiecare slot din interfata grafica: | Interfata grafica a inventarului are nevoie si de un script de gestionare. Astfel vom aveam un script care asculta (subscribe) evenimentul definit (''delegate'') la actualizarea inventarului, si actualizeaza fiecare slot din interfata grafica: | ||
Line 199: | Line 226: | ||
if(Inventory.instance.Add(item)) Destroy(gameObject); | if(Inventory.instance.Add(item)) Destroy(gameObject); | ||
</code> | </code> | ||
+ | |||
+ | Similar se poate face si gestiunea altor interfet: de quest pentru player, de echipament / arma, skilltree etc. | ||
=== NPC === | === NPC === | ||
Line 413: | Line 442: | ||
</code> | </code> | ||
- | |||
- | Gestiunea interfetei de quest pentru player, se poate face similar cu cea de inventar. | ||
- | |||
- | Gestiunea interfetei de echipament / arma pentru player, se poate face similar cu cea de inventar. | ||