This is the Complete Unity Developer - one of the most successful e-learning courses on the internet! Completely re-worked from scratch with brand-new projects and our latest teaching techniques. You will benefit from the fact we have already taught over 360,336 students game development, many shipping commercial games as a result.
You're welcome to download, fork or do whatever else legal with all the files! The real value is in our huge, high-quality online tutorials that accompany this repo. You can check out the course here: Complete Unity Developer
- 2D Collisions & destroying objects.
- Triggering SFX and music.
- Responding to mouse input.
- Automated playtesting.
- Build & share your own levels.
- How to use GIMP as an alternative to PhotoShop
- Selecting in Gimp
- Cropping and Scaling
- Adjusting Colour and Exposure
- Saving Your Image
- Researching brick sizes.
- Source an appropriate image.
- Edit our brick sprites.
- Create new project and import.
- Export the menus from Number Wizard UI.
- Import to this project.
- Customise the words & fonts.
- Wire up the buttons.
- How persistent music improves quality.
- Add a Music Player Game Object.
- Add a music track of your choice.
- Use GameObject.DontDestroyOnLoad().
- Test your music plays consistently.
Useful Links
- Sounds - Freesound.org
- How a static can help us here.
- Watch Unity's short video
- Preventing duplicate music players.
Useful Links
Explaining that we don't use the music manager again for a while.
- Introducing Script Execution Order
- Exactly when do scripts get called?
- Debugging & explaining our music glitch
- A simple fix using the Awake() method
Useful Links
- What z-depth means.
- The problem: sprites becoming semi-transparent or invisible for unknown reasons.
- The solution: look at the z-position of sprites relative to the background.
- Add a ball to your space
- Import the ball sprite to Sprites folder.
- Set a sensible “Pixels Per Unit” value.
- Place the ball in the middle of the play space.
- What are colliders
- If colliders overlap during a frame then…
- … messages may be passed by the engine.
- What is message passing?
- Signatures of messages passed
- Types of colliders explained
- Delete Music Player on Level_01 scene.
- Setting Game window to 800 x 600.
- Two handy keyboard shortcuts.
- Remove Canvas and Event System from Level_01.
- Make loose collider load next level.
- Add our brick sprite as a player paddle.
- Choosing our paddle collider type.
- Rigid Body 2D
- CHALLENGE: Add components to our paddle.
- What is a physics material.
- Add a bouncy material.
- Observe funky physics.
- Using Input.MousePosition.x
- Screen.width to get screen width.
- Move the paddle this.transform.position
- Introducing float and Vector3.
- Using Mathf.Clamp to constrain paddle.
- Fix the paddle's “Pixels per unit” to 128.
Useful Links
- Start the ball sitting on the paddle.
- Capture the relative position from the editor.
- Respond to Input.GetMouseButtonDown(0).
- rigidbody2D.velocity to launch the ball.
- Using bool hasStarted to keep track.
- Setup all your play space wall colliders.
- Adjust the initial velocity and gravity.
- Understanding Gravity Scale
- What is a prefab in Unity
- Why prefabs are useful.
- Setting up your prefabs.
- How prefab linking works.
- How Edit > Snap Settings works.
- Snap initially to get on the grid.
- You can do this with multi-select.
- Hold cmd (ctrl) while dragging!
- Build your first level
- Make everything a prefab!
- Set Main Camera background to black.
- Move & group Loose Collider.
- Test by making new level.
- Why linking prefabs programmatically helps.
- Unity doesn't support “nested prefabs”.
- How to use GameObject.FindObjectOfType< >
- Link the ball to the paddle programatically.
- Challenge: do this for LevelManager
- Create Loose Scene, modify LooseCollider.cs
- Add LoadNextLevel() to LevelManager.cs
- Add all our levels to Project > Build Settings
- Modify Block.cs by adding SimulateWin()
- Test that game transitions between levels
- How the Destroy() method works.
- Why we destroy gameObject not this.
- Challenge: only destroy on max hits
Useful Links
- Why a sprite sheet is useful.
- Key features of a sprite sheet.
- Creating sprites for partially broken blocks.
- Importing sprites into Unity.
- The affordance principle
- What is an array?
- Using arrays to store these sprites.
- Loading sprite when hit.
- What are tags?
- Why tags are useful for keeping track.
- Tagging unbreakable bricks.
- Use tags to decide when level is won.
Useful Links
- Why loading levels could be problematic.
- How a static Brick variable can help.
- Keeping track of breakable bricks in the level.
- Creating a simple BrickDestroyed “message”.
- Testing inc. when 2 bricks destroyed at once.
- Using audio.Play() to play “boing” sound;
- Why AudioSource.PlayClipAtPoint useful.
- Using this for playing “crack”.
- Test & demonstrate.
- Create & tidy your levels
- Ensure Hierarchy is tidy in each level.
- Give each level a different 800x600 background.
- Play test all the levels.
- Ensure level order is right in File > Build Order.
- Revising setting your Game window.
- How to tweak sound levels.
- Doing a test web build and playing locally.
- Revising building and sharing to web.
- Looking forward to seeing your levels!
Useful Links
- How to reproduce the problem?
- Debug to find the root cause.
- Make the fix, and re-test.
- Remove debug code.
- Challenge: Fix the bug
- What's a polygon collider.
- Why it can help us improve our game.
- How to manipulate polygon colliders.
- Challenge: Chamfer your paddle.
- The coding trade off triangle.
- Think about your future self on the project.
- Renaming a game object and class.
- Using Debug.LogError().
- Create a simple particle system.
- Make brick look like it goes “up in smoke”.
- Write code to trigger smoke puffs.
- Tweak the smoke prefab while play testing.
Useful Links
OPTIONALLY converting your project to Unity 5, and sharing with Web GL.
- Recap and what's next
- Congratulations, you've learnt a lot.
- Make your own levels.
- Ask a friend to make levels.
- Care with commercial music.
- Share your creation with our fantastic community, or on our Complete Unity Developer Facebook Group.