This shows you the differences between two versions of the page.
pjv:laboratoare:2020:01 [2021/10/13 12:41] alexandru.gradinaru |
pjv:laboratoare:2020:01 [2021/10/13 16:13] (current) alexandru.gradinaru |
||
---|---|---|---|
Line 3: | Line 3: | ||
==== Documentatie video ===== | ==== Documentatie video ===== | ||
- | video 1 | + | [[https://youtu.be/3FYJD6sXT74|1. Introducere in Editorul Unity]] |
- | video 2 | + | |
+ | [[https://youtu.be/IjfsxhF7mH4|2. Introducere in scriptingul Unity]] | ||
==== Documentatie extinsa text ===== | ==== Documentatie extinsa text ===== | ||
- | [[https://ctipub-my.sharepoint.com/:b:/g/personal/alexandru_gradinaru_upb_ro/EX9JzUQOGiJDljh770eC9ioBESCT7N3_TR4CdKBhidDgOg?e=6GMORk|1. Introducere in Unity]] | + | [[https://ctipub-my.sharepoint.com/:b:/g/personal/alexandru_gradinaru_upb_ro/EX9JzUQOGiJDljh770eC9ioBESCT7N3_TR4CdKBhidDgOg?e=6GMORk|1. Introducere in Editorul Unity]] |
+ | |||
+ | [[https://ctipub-my.sharepoint.com/:b:/g/personal/alexandru_gradinaru_upb_ro/EXdRYNImL8VGryfKsurcUqQBx5af0KLN2pMN-AaicOM6VA?e=eMLA0T|2. Introducere in scriptingul Unity]] | ||
+ | |||
+ | <note important>Aveti documentatie video si text extinsa, dar si un sumar cu elementele principale necesare in rezolvarea laboratorului, pentru cei care au mai lucrat deja cu Unity si sunt familiarizati cu anumite concepte. </note> | ||
- | [[http://example.com|2. Introducere in scriptingul Unity]] | ||
==== Sumar documentatie ===== | ==== Sumar documentatie ===== | ||
Line 177: | Line 181: | ||
=== C# Basics === | === C# Basics === | ||
- | |||
- | > **Classes and Structures** | ||
- | |||
- | One of the basic design decisions every framework designer faces is whether to design a type as a **class (a reference type)** or as a **struct (a value type)**. | ||
- | |||
- | **Similarities:** | ||
- | |||
- | * Both are _container_ types, meaning that they contain other types as members. | ||
- | * Both have members, which can include constructors, methods, properties, fields, constants, enumerations, events, and event handlers. | ||
- | * Members of both can have individualized access levels. For example, one member can be declared `Public` and another `Private`. | ||
- | * Both can implement interfaces. | ||
- | * Both can have shared constructors, with or without parameters. | ||
- | * Both can expose a _default property_, provided that property takes at least one parameter. | ||
- | * Both can declare and raise events, and both can declare delegates. | ||
- | |||
- | **Differences:** | ||
- | |||
- | The Main difference between reference types **(Class)** and value types **(Struct)** we will consider is that reference types are allocated on the heap and garbage-collected, whereas value types are allocated either on the stack or inline in containing types and deallocated when the stack unwinds or when their containing type gets deallocated. | ||
- | |||
- | * Structures are **_value types_**; classes are **_reference types_**. A variable of a structure type contains the structure's data, rather than containing a reference to the data as a class type does. | ||
- | * Structures use stack allocation; classes use heap allocation. | ||
- | * All structure elements are `Public` by default; class variables and constants are by `Private` default, while other class members are by `Public` default. | ||
- | * A structure must have at least one nonshared variable or nonshared, noncustom event element; a class can be completely empty. | ||
- | * Structure elements cannot be declared as `Protected`; class members can. | ||
- | * Structures are not inheritable; classes are. | ||
- | * A structure does not require a constructor; a class does. | ||
> **Static Classes and Singleton** | > **Static Classes and Singleton** | ||
Line 547: | Line 525: | ||
- Configurati scena pentru rulare 2D | - Configurati scena pentru rulare 2D | ||
- | - Adaugati in scena o imagine care reprezinta o tabla de joc (masa) | + | - Adaugati in scena o imagine care reprezinta o tabla/fundalul de joc (masa) |
- | - Adaugati doua imagini in scena: | + | - Adaugati doua imagini suprapuse in scena*: |
- unul care sa reprezinte elementul ascuns | - unul care sa reprezinte elementul ascuns | ||
- unul care sa reprezinte elementul afisat | - unul care sa reprezinte elementul afisat | ||
- | - Scriptati elementul afisat astfel incat la click sa se ascunda si sa se afiseze cel ascuns | + | - Scriptati/programati elementul afisat astfel incat la click pe acesta sa se ascunda si sa se afiseze cel ascuns timp de cateva secunde (2-3 secunde de exemplu, apoi revine la elementul ascuns) |
- | - Colectati inca 3 imagini pentru elementele afisate | + | - Colectati alte imagini si realizati un grid de 4x4 sau 4x2 elemente generat aleator la fiecare rulare controlat de un script (game controller) care sa asigure: |
- | - Realizati un game controller in care sa scriptati urmatoarele | + | - instantierea dinamica a gridului si formarea de perechi (in scena trebuie sa fie perechi de elemente astfel incat utilizatorul trebuie sa selecteze 2 elemente care coincid pentru a castiga punctaj) |
- | - instantierea dinamica a unui grid de 4x4 sau 4x2 elemente (primul este deja instantiat) | + | - amestecarea elementelor la fiecare rulare (elementele afisat trebuie sa fie pozitionat/afisat intr-un slot diferit la fiecare rulare noua) |
- | - pozitionarea random a tipurilor de elemente (in scena trebuie sa fie perechi de elemente - deci vor fi 8 perechi pozitionate random la fiecare rulare) | + | |
- | - schimbarea dinamica a imaginii in functie de tip pentru fiecare element din scena | + | |
- mentinerea elementelor selectate curent (se selecteaza o data maxim 1 pereche) | - mentinerea elementelor selectate curent (se selecteaza o data maxim 1 pereche) | ||
- rularea asincrona a verificarii daca perechea a fost selectata sau nu corect | - rularea asincrona a verificarii daca perechea a fost selectata sau nu corect | ||
- mentinerea si afisarea unui scor. Scorul creste atunci cand descoperiti doua elemente identice. | - mentinerea si afisarea unui scor. Scorul creste atunci cand descoperiti doua elemente identice. | ||
- | - Adaugati un buton de restart game | + | - Adaugati un buton de restart game (acest lucru va regenera gridul cu elemente amestecate) |
{{ :pjv:laboratoare:2020:lab1_example.gif?600 |}} | {{ :pjv:laboratoare:2020:lab1_example.gif?600 |}} | ||
+ | <note tip>* exista mai multe variante de abordare a rezolvarii: de exemplu folosind elemente de canvas sau folosind elemente de scena pe care se ataseaza collidere (aveti grija la conditiile de activare a evenimentelor de mouse)</note> | ||