Learn Unity – Beginner’s Game Development Tutorial

Wordpress sites

Learn to develop games using the Unity game engine in this complete course for beginners. This course will get you up and running with Unity. Free game assets included!

✏️ Course developed by Fahir from Awesome Tuts. Check out his channel:

⭐️ Resources ⭐️
(To download assets you may have to right click the link, copy it, and then paste it into a new tab.)
🔗 Unity Introduction Project Assets:
🔗 Unity Introduction Project:
🔗 Monster Chase Game Assets:
🔗 Complete Monster Chase Game:

⭐️ Course Contents ⭐️
⌨️ (0:00:00)​ Introduction
⌨️ (0:00:48)​ Downloading Unity And Unity Hub
⌨️ (0:05:20)​ About Unity Versions And Creating A New Project
⌨️ (0:09:07)​ Introduction To Unity's Interface
⌨️ (0:22:10)​ Starting With Unity's Basics
⌨️ (0:29:47)​ Rigid Bodies And Colliders
⌨️ (0:38:19)​ Audio Source And UI Elements
⌨️ (0:45:47)​ Moving Our Character With Code
⌨️ (0:54:22)​ Introduction To Variables
⌨️ (1:06:14)​ Operations With Variables
⌨️ (1:19:01)​ Functions
⌨️ (1:34:22)​ Conditional Statements
⌨️ (1:49:29)​ Loops
⌨️ (1:58:41)​ Coroutines
⌨️ (2:04:39)​ Classes
⌨️ (2:16:46)​ Accessibility Modifiers(Data Encapsulation)
⌨️ (2:26:54)​ Inheritance
⌨️ (2:43:35)​ Getting Components
⌨️ (2:52:32)​ Monster Chase Game Intro
⌨️ (2:53:55)​ Importing Assets
⌨️ (3:02:22)​ Creating Player Animations
⌨️ (3:17:36)​ Sorting Layers And Order In Layer
⌨️ (3:24:04)​ Creating The Game Background
⌨️ (3:33:03)​ Player Movement
⌨️ (3:50:26)​ Animating The Player Via Code
⌨️ (4:03:34)​ Player Jumping
⌨️ (4:19:03)​ Camera Follow Player
⌨️ (4:30:42)​ Enemy Animations
⌨️ (4:39:40)​ Enemy Script
⌨️ (4:51:15)​ Enemy Spawner
⌨️ (5:15:15)​ Enemy Collision
⌨️ (5:31:55)​ The Collector Script
⌨️ (5:40:32)​ Unity's UI System
⌨️ (5:53:06)​ Creating Main Menu
⌨️ (6:02:34)​ Navigating Between Scenes
⌨️ (6:13:04)​ Selecting A Character
⌨️ (6:20:50)​ Static Variables
⌨️ (6:30:23)​ Singleton Pattern
⌨️ (6:41:35)​ Events And Delegates
⌨️ (7:13:11)​ Instantiating The Selected Character
⌨️ (7:17:59)​ Finishing Our Game

🎉 Thanks to our Champion supporters:
👾 Otis Morgan
👾 DeezMaster
👾 Katia Moran

Learn to code for free and get a developer job:

Read hundreds of articles on programming:

And subscribe for new videos on technology every day:

45 thoughts on “Learn Unity – Beginner’s Game Development Tutorial”

  1. Sheldon Cooper

    You guys should get a world wide credit for any improvements in the field of CSE in upcoming years. Thank you for giving us these things for free.

    1. he makes a bunch of mistakes and bad practices so dont be overly excited. ofcorse its jobe well done but hes still an indie and not an actual teacher.

    2. @Sho Jin overall not the best coding practices, as far as i remember, its been 2 weeks and i dont feel rewatching 8h video.

  2. I know it’s corona times but look at all the resources that are available for free. what a time to be alive love it

    1. @Kasper369 “I know it’s corona times but look at all the resources that are available for free. what a time to be alive love it”

      imagine writing this comment while lots of other people dying because of corona… double standard privileges smh

  3. 7 hours plus of free training. You’ve outdone yourselves. Fell off my chair but I’m OK now.

  4. Elazar Halperin

    Hi everyone.
    For everyone who having the issue, the character doesn’t always jump when you press space.
    to solve it call the function on void update, not fixedUpdte , because You can’t put any *Down or *Up input in FixedUpdate, since FixedUpdate is only for physics, does not run every frame, and will miss events if they don’t coincide with the physics update. Input like that must be checked every frame.

    1. I have another problem
      I wrote the functions OnCollision.Enter2D
      but none of the code inside this function is executed.
      that means that isGrounded is always false because of PlayerJump function

      and I can’t declare OnCollision.Enter2D function, I tried to call it but it doesn’t work
      how can the OnCollision.Enter2D get executed ?

    2. Thanks I had run into this issue too! On an Xbox controller is ‘Y’ the default button for jump for you guys too? I assumed it would be ‘A’.

    3. Yes putting it in the update() function helped. But why are we putting it in the FixedUpdate function in the first place?

  5. Great tutorial, thank you.
    A question about the “Delegates and Events”:

    In the “event and delegate” video, the delegate variable and event variable are both being defined at the beginning of the code using “public delegate” and “public static event” which I can understand that a static variable (event) can be called from another code using Sender.[event_name] and it can subscribe with the functions.

    However, in game development, the GameManager.cs doesn’t define the event “sceneLoaded” nor a delegate. I have a little hard time understanding how is the “SceneManager.sceneLoaded” an event? Could you explain a little further, much appreciated!

    1. I know it’s late but in case anyone else is wondering, you can see if you inspect the code for SceneManager that it declares an event for SceneLoaded, and the delegate for this is called UnityAction in UnityEngine.Events, so it’s exactly the same as the example, it’s just that this is a predefined Event/Delegate within Unity. You could write your own version of this, hooking into Scene and LoadSceneMode, this is just a shortcut.

  6. FYI : Not to downplay the tutorial, great stuff!

    @1:02:30 you are talking about the difference of a char and a string, pointing out the brackets and such but you are overlooking the one main point that makes them different and powerful in there own right! Strings are arrays/collections of characters, so they are not a value type like a char or even like the other examples float, double, int or bool!

    So if you were taking a test with the question, what value type you listed is not a value type? The answer would be the string!

    Lets also consider another example, int vs string, lets say you have 12345 as a value for both the int and string, the int will only hold the value 12345 as a whole number, you can not find the 3 position of the number with ease as it is stored as a full number and you would have to convert it to a string or mathematically separate the number to process the position number, where as the string is already an array of chars, so to find position 3 in the string is as simple as calling the 2 position in its array!

    Just mentioning it as the string is more then what you presented!

  7. He’s a teacher that can put tough understandable content inside your brain in a very friendly and funny manner- he has all his concepts very crystal clear!

  8. this just shows how good youtube can be for teaching, several one hour long lessons compressed into a single video for everyone to watch for free no matter where you are

  9. I wanted to thank you so much for this tutorial! I’m a total beginner and everything is explained so well and in a pleasant pace. Also I’m very thankful for the nice structuring of the video, which really helps going back and finding the topics that you need easily. Thanks a lot for your effort, it really is helpful!

    1. Hay man,how is your things going on,imean are you still working in games or left it,im begginer plz reply

  10. On your segment about corountines: It’s more efficient (in my experience) to cache the corountine as an Object like this: “Coroutine function = StartCoroutine(MyFunctionCo())” and then terminate using “StopCoroutine(function);” -> because performing a string lookup can often be a very expensive operation. By caching the coroutine into a variable, it often tends to allow the CPU to access data faster and more efficiently.

    This is if performance matters. What he showed in the video is usually reasonable in most cases.

    1. I knew there must be a better way because it looked like a javascript setTimeout. You’re much better off not using magic strings whenever you can.

  11. Thank you so much. This teacher is the best teacher from a tutorial I’ve ever had. Clear, entertaining, and easy to follow. Well done.

  12. OMG, you don’t know how thankful I am for this tutorial. I’ve been trying to find a tutorial that explains every single thing in a line of code for me for so long! Thank you so much!

  13. Awesome tutorial! Enjoyed every second and learned a lot, especially key concepts like the events, which you explained perfectly. Also, don’t know where the assets are from, but they look phenomenal. So thank you very much for you’re hard, high-quality work – it is much appreciated.

  14. One of the best tutorials of anything I’ve found on YouTube… amazing teacher, well organised and also hilarious

  15. philippe arcand

    Very good tutorial ! Even if this tutorial is one year old, I’d like to add something. For the inheritance, I think it would’ve been worth mentioning the “Protected” accessibility level for variables. For those that don’t know, a Protected variable is the same as a private one, except that the variable will be treated as if it was public for the child classes. It’s pretty useful in cases like the one shown in this video.

  16. Difference between float and double comes down to storage:

    Float stores fractional numbers till 6-7 decimal digits and is 4 bytes
    Double stores fractional numbers till 15 decimal digits and is 8 bytes

  17. 1:15:00 – If I’m not mistaken, I think that integer division just truncates the decimal to zero decimal places instead of rounding to the nearest whole number. That is why 20/7 would yield 2 instead of 3 when using integer division. Even though it is approximately 2.85, it doesn’t round up to 3. It just drops the .85 part.

  18. CrazyWeirdoRH

    I’m only two hours in and I feel like my brain is swelling and going to burst out of my eye sockets, ears, nose, and mouth from all the pure knowledge you’re giving me. Thank you. This is the tutorial I was looking for. You’re actually teaching me the terms and functions and what they mean, and not just teaching me how to copy text. Thank you.

  19. SUCH a useful tutorial, and such a great teaching style! Thank you so much 😭😭😭

Comments are closed.