UnityUnity is a game engine that allows creators to develop on multiple platforms such as PC, WebGL, Android and many more.PC, WebGLC#Unity, Unity CollaborateSep 2019-Jun 2021Teaching Unity 2D and 3D courses to high school students. UN401, UN402, UN501 and UN502 Prepare materials to teach each week on the weekends.Before a semester starts, I would have at least 5 weeks of materials prepped ahead of time. I would read through all the course materials. I would have done the lesson myself first before teaching them to the students. On the first day, if my students are new to Unity, instead of getting them to code, I would tell them to crash Unity. To do this I would show them how to add a gameobject into Unity using a cube or sphere. I would then tell them to add a rigidbody to the gameobject. I would then tell them to duplicate the gameobjects and watch them collide with each other. After that I would tell them to duplicate as many gameobjects as possible and see all the gameobjects crash into each other. They would repeat this until Unity crashes. The purpose of this is for the to used to the inspector,hierarchy and how to press "play" and the difference between game and scene window. Crashing Unity seems to be popular among the students! I would also try to use cartoons to get the students attention. For example, when describing what OnCollisionStay is, not only will I show an example in Unity, I would also show what it may look like in real life such as cartoon characters huggingOr if I am teaching about inheritance. I would use Pokemon a an example. Pokemons have many characters with similar powers. I would explain how we can have one script that implements the same power in the parent class. Then in the child class we can modify or add to the existing function. I would then show a fun gif just to entertain themFor UN401 and UN402, I got to teach a spaceship game and a platform game respectively. Usually students in these classes have never coded, so I would teach them starter items they can implement such as movement. I would show them how to press W to move forward. I would then challenge them to move in the other directions using A, S, DAs time goes on, I would teach them instantiation for shooting bullets, spawning enemies, spawning health and adding explosions using particle systemsFor UN501 and UN502, I got to teach a portal game and capture the flag game respectively. For the portal game, I got to show them how to spawn two portals and teleport their character into the portals. They would use raycast to spawn the portal at the location the raycast points at on the terrain. They will use null checks to see if a portal can be spawned and whether the character can teleport to another portal yet. I would teach them to whitebox the portal, meaning use spheres or cubes as portals. Once the functionalities have been implemented then they can start making the portals look good. This was important for me to show them because this is what lots of gaming companies doIn Capture the flag game. Most students have done enough Unity where I can explain topics like left hand rule in Unity, be more picky about variable and function naming conventions(camelcase, pascalcase). I also got to show the navmesh, which allowed AI enemies to follow the player. This was interesting, because some students had made their terrain very detailed, which sometimes caused the baking to take a while! During this time I would have some multiple questions to do as a class while we wait for baking to be doneAt the end, the students had a choice of making a PC build or a WebGL build to be uploaded to itch io. Seeing the students upload their final product and being proud of themselves brought me a lot of joy. I am so proud of all the students that went all the way to the end. All there work are also on Collaborate so they can continue working on it from home. I would encourage to have good commit messages, following the format what-where-why so they can keep track of their work