Unity 3D Developer Practical Test
Task 1: Basic Scripting
- Fork this repository.
- Create a new Unity 3D project.
- Create a cube GameObject in the scene.
- Write a C# script that makes the cube rotate continuously around its Y-axis when the game starts.
- Attach the script to the cube.
- Make sure the cube rotates at a reasonable speed.
- Provide comments in the script to explain your code.
- Create a UI text element that displays the current rotation speed of the cube in real-time.
- When the player clicks on the cube, double the rotation speed.
- Implement a reset button that resets the rotation speed to its original value when clicked.
Task 2: Physics and Collision
- Create a new scene.
- Add a ground plane and a sphere GameObject to the scene.
- Write a C# script that applies a force to the sphere when the game starts, making it roll forward as if it's affected by gravity.
- Implement collision detection between the sphere and the ground so that the sphere bounces realistically when it hits the ground.
- Create a UI text element that displays the current velocity of the sphere in real-time.
- Implement a button that allows the player to reset the sphere's position and velocity.
Task 3: User Interface (UI)
- Create a main menu screen with options for "Start Game" and "Quit."
- Implement functionality so that clicking "Start Game" loads the scene created in Task 2.
- Create an in-game UI that displays the player's score.
- Write a C# script that increments the score by one every second while the game is running.
- Implement a game over screen that shows the player's final score when the sphere falls off the ground.
- Provide transitions between the main menu, in-game, and game over screens with smooth fade-ins and fade-outs.
Task 4: Optimization and Performance
- Profile and identify any performance bottlenecks in your project using Unity Profiler.
- Optimize the code or project settings to improve performance.
- Provide a brief explanation of the optimizations you made and their impact on performance.
Bonus Task (optional)
- Add audio effects to the project, such as background music and sound effects for interactions.
- Implement a settings menu where players can adjust audio volume and other game settings.
Submission:
- Make PR pointing to master to this repo.