---
title: "Pre-assessment for VR Development"
content_type: quiz
url: "https://learn.unity.com/quiz/pre-assessment-for-vr-development?language=en"
language: en
difficulty: intermediate
duration_minutes: 15
question_count: 8
correct_answers_to_pass: 6
unity_version:
  - "2021.3"
  - "2022.3"
  - "6.1"
  - "6.2"
  - "6.3"
supported_unity_versions:
  - name: "2021.3"
    url: "https://learn.unity.com/quiz/pre-assessment-for-vr-development.md?language=en&version=2021.3"
  - name: "2022.3"
    url: "https://learn.unity.com/quiz/pre-assessment-for-vr-development.md?language=en&version=2022.3"
  - name: "6.1"
    url: "https://learn.unity.com/quiz/pre-assessment-for-vr-development.md?language=en&version=6.1"
  - name: "6.2"
    url: "https://learn.unity.com/quiz/pre-assessment-for-vr-development.md?language=en&version=6.2"
  - name: "6.3"
    url: "https://learn.unity.com/quiz/pre-assessment-for-vr-development.md?language=en&version=6.3"
last_updated: "2026-08-04T14:25:14.000Z"
---

# Pre-assessment for VR Development

Use this pre-assessment to confirm your Custom VR Development readiness and get targeted resources for any gaps.

The purpose of this pre-assessment is to make sure that you don’t have any knowledge gaps before moving on with the **Custom VR Development** mission.

If you pass the pre-assessment, you should have no problem completing the rest of this pathway.

If you don’t pass the pre-assessment, we’ll provide some resources in the question feedback for each specific knowledge area. Try to spend a good amount of time improving your skills in these areas, then return here and try again!

## Question 1

Which of the following statements are true about virtual methods?

Select all correct answers.

_Select all correct answers_

- You can override virtual methods in a child class.
- Virtual methods cannot be private.
- A virtual method is only implemented if it is overridden by a child class.
- A virtual method declared in a child class can be accessed by its parent class.

## Question 2

Read the documentation from the [Unity Scripting API about Random.Range](https://docs.unity3d.com/ScriptReference/Random.Range.html) and then read the code  below.

```csharp
float randomFloat = Random.Range(0f, 100f);
int randomInt = Random.Range(0, 100);
```

Which of the following are possible values for the randomFloat and randomInt variables?

_Select only one_

- randomFloat = 100.0f;

  randomInt = 0;
- randomFloat = 100.0f;

  randomInt = 100;
- randomFloat = 50.5f;

  randomInt = 100;
- randomFloat = 0.0f;

  randomInt = 50.5;

## Question 3

Which of the following statements are true about parent (base) and child (derived) classes?

Select all correct answers.

_Select all correct answers_

- In a class declaration, a derived class can only define a single base class.
- Protected variables and methods can be accessed from any child class.
- Private variables and methods can be accessed from any child class.
- If Class C derives from Class B, which derives from Class A, Class C only inherits behaviors from Class B.
- None of the above.

## Question 4

The code below uses the **static** modifier:

```csharp
public class Enemy : MonoBehaviour {
   public static int EnemyHealth = 100;
}
```

What is the effect of using the static modifier here?

Select all correct answers.

_Select all correct answers_

- It prevents the value of this variable from changing after the first time it is set.
- Only a single copy of this variable can exist, which means that if you had multiple enemies, they could not have different EnemyHealth values.
- It allows you to access the EnemyHealth variable from another class using only Enemy.EnemyHealth. You do not need a reference to the class.
- It means that this variable cannot be modified from any other class.

## Question 5

You are trying to create a new method that takes a number and multiplies it by two. Which method would do that?

Method 1

```csharp
private float DoubleNumber() { 
  return number *= 2;
}
```

Method 2

```csharp
private float DoubleNumber(float number) { 
  return number *= 2;
}
```

Method 3

```csharp
private void DoubleNumber(float number) {
  return number *= 2;
}
```

Method 4

```csharp
private void DoubleNumber() {
  return number *= 2;
}
```

_Select only one_

- Method 1
- Method 2
- Method 3
- Method 4

## Question 6

The following message was displayed in the console: “Monica has 20 dollars”.

```csharp
string[] names = new string[] { "Steve", "Monica", "Eric" };
int money = 5;

void Start() {
  money *= 2;
  PrintNames();
}

void PrintNames () {
  Debug.Log("Monica has " + money/2 + " dollars"); // Line 1
  Debug.Log(names[1] + " has " + money*2 + " dollars"); // Line 2
  Debug.Log(names[2] + " has " + money*2 + " dollars"); // Line 3
  Debug.Log(names[Monica] + " has " + money/2 + " dollars"); // Line 4
}
```

Which of the line options in the PrintNames function produced it?

_Select only one_

- Line 1
- Line 2
- Line 3
- Line 4

## Question 7

Which of the following statements about methods are correct?

Select all correct answers.

_Select only one_

- If there was a Method declared as “private void RenameObject(string newName)”, you could call that method with “RenameObject(“Charlie”);”
- Methods must be passed at least one parameter.
- Methods with a “void” return type cannot be passed parameters.
- A method with an “int” return type could include the code “return true;”.

## Question 8

The code below shows the manual implementation of a property in C#.

```csharp
private string _playerName;
public string PlayerName
{
   get { return _playerName; }
   set { _playerName = value; }
}
```

There is a more concise “auto-implemented” version of this code that accomplishes the same thing. What is it?

_Select only one_

- ```csharp
  public string _playerName { get PlayerName; set _playerName; }
  ```
- ```csharp
  public string PlayerName { get; set; }
  ```
- ```csharp
  private string PlayerName { get; private set; }
  ```
- ```csharp
  public string PlayerName { get(); set(_playerName); }
  ```
