# Programmering 1 - Instuderingsfrågor prov Unity
1. Förklara när följande unity-metoder körs:
* `Start`
* `Update`
* `OnTriggerStay`
2. Förklara vad skillnaden är på metoderna `Update` och `FixedUpdate`. Förklara när du vill använda vilken av metoderna.
3. Förklara vad ordet "public" gör framför en variabel i ett C#-skript.
4. Förklara vad följande kod gör:
```csharp
Rigidbody rb;
void Start(){
rb = GetComponent<Rigidbody>();
}
```
5. Vad gör "Instantiate()" funktionen i Unity? Vilka argument kan du skicka till Insantiate-funktionen?
6. Förklara vad en lista är och ge ett exempel på vad de kan användas till i Unity/spelprogrammering.
7. Givet att du har en variabel av typen `GameObject` som heter `ball`, skriv några rader kod som sätter det objektets position till en slumpad plats. Tips: använd `Random.Range(min,max)` för att skapa en slumpgenerad siffra.
8. Förklara vad följande kod gör:
```csharp
float timer = 0f;
void Update(){
timer += Time.deltaTime;
if(timer > 5f){
print("hej!");
}
}
```
9. Förklara vad följande kod gör:
```csharp
public TextMeshProUGUI textbox;
void Update(){
if(Input.GetKey(KeyCode.Space)){
textbox.text = "A";
}else{
textbox.text = "B";
}
}
```
10. Förklara vad följande kod gör:
```csharp
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Player")
{
Destroy(gameObject);
}
}
```
11. Förklara vad följande kod gör:
```csharp
void Update()
{
transform.position += new Vector3(2,0,0) * Time.deltaTime;
}
```
12. Förklara vad följande kod gör:
```csharp
public GameObject cube;
void Start()
{
for(int i = 0; i < 5; i++){
Instantiate(cube, new Vector3(i,0,0), Quaternion.identity);
}
}
```
13. Vad kommer följande kod skriva ut till konsolen?
```csharp
void Start()
{
List<string> namnLista = new List<string>();
namnLista.Add("Alice");
namnLista.Add("Bob");
namnLista.Add("Charlie");
print(namnLista[2]);
}
```
14. Förklara vad följande kod gör:
```csharp
public List<GameObject> objects;
int index = 0;
void Update(){
if(Input.GetKeyDown(KeyCode.Tab)){
MeshRenderer meshRend = objects[index].GetComponent<MeshRenderer>();
meshRend.material.color = Color.White;
index += 1;
if(index == objects.Count){
index = 0;
}
MeshRenderer nextMeshRend = objects[index].GetComponent<MeshRenderer>();
nextMeshRend.material.color = Color.Red;
}
}
```