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. | ||