Uploaded by Frank Yeh

UBC Course Outline as of 23092021

Extended Learning
XR Development
with Unity
Course Overview
In this 10-week XR Development with Unity course, learn to create AR and VR applications using Unity, C# and
industry-standard tools for developing XR applications. Come away with foundational skills in XR development and
How We Deliver This Program
Participate in two 1.5-hour online live sessions per week.
Take advantage of weekday evening drop-in office hours, offered an hour a day five times a week. Meet with your
instructors to ask questions, work through specific problems or discuss broader questions about the course or
the industry.
Apply your learning in project assignments and quizzes. Basic assignments help demonstrate your
understanding of the material, while more advanced assignments push your creative limits.
Completion Requirements
At a minimum, students must attend at least 70% of the live sessions to be eligible for the Circuit Stream XR
Developer with Unity certification. However, we encourage you to make the most of the course experience by
attending all live sessions, as the instructors provide personalized feedback through intensive mentoring to
ensure students that complete the course have appropriately learned the skills. Other feedback is delivered
through the following
Quizzes - Formative Assessment: After the end of each module, you’ll have access to contextual questions
that help you review what you’ve learned. You can see what you missed and why, which helps you learn from
your mistakes
Problem-based learning challenges: In every lesson, you’ll have access to two different challenges. There are
no right and wrong solutions, hence they are not graded. However, these are great opportunities for you to
develop your skills. The challenges are posted on the Slack channel and you’ll get feedback from your peers
and instructor.
What This Course Offers
By the end of this course, you will be able to:
Create your own VR or AR idea in Unit
Design for different XR platform
Manage production of XR project
Analyze the technical feasibility of XR project
Collaborate in teams working with Unit
Leverage a powerful network in the XR industry
Who is This Course For?
This is a beginner-friendly course, with no previous experience required.
This course is equally applicable to developers as it is to generalists looking to better understand and work with
this technology. It is designed for students or professionals coming from a wide range of backgrounds with an
interest in working with immersive technologies. How to Apply
Get started by choosing a Curriculum bundle option:
XR Development with Unity
$3,950 CAD
Unity Certification Exam
Everything in Starter plus:
C# Scripting Fundamentals
VR Headset: Oculus Quest 2
$4,950 CAD
10 hours 1:1 with expert
Reach out to an Enrolment Advisor to apply or discuss the course in more detail by emailing
ubc-exl@xrcourse.com or by calling 604 670 6071.
Curriculum Overview
Section 1
Introduction to Unity
Welcome to the XR Development with Unity course. We start the course by going over the basics. We
cover navigating the editor for beginner students, and include some helpful tips along the way for more
advanced students. Then we'll move on to manipulating objects in the scene, making them pretty with materials, saving
them with prefabs, modifying them with ProBuilder, and even importing them from the asset store. No
coding: just sound fundamentals of working with assets in the editor that every project needs.
Manage project with the Unity Hu
Identify and make use of essential features of the Unity Edito
Create and make use of GameObjects in a scen
Manipulate coordinates in local and global axe
Create basic material
Create and modify prefab
Prototype with ProBuilde
Get assets from the Asset Stor
Import asset
Configure and use a character controller
Section 2
Programming in Unity with C#
In this section, we create a simulation of a solar system, with orbiting planets and moons around a star.
We’ll learn how to animate these celestial bodies in code, as well as create a physics controlled rocket
ship to explore our little patch of space. We'll learn how to fire laser bolts from our ship to further
explore how to interact with objects using physics.
Understand the key concepts of MonoBehaviour in Unit
Implement basic variables with data types using access modifier
Serialize variables in the inspecto
Implement Functions, Methods, and Propertie
Implement Time Handlin
Implement 3D transformations with the Transform class
Implement Point Light
Implement conditional statement
Implement Input Handling
Find GameObjects and components in a scene
Add Forces and Torque to Rigidbodies
Instantiate GameObjects dynamically
Destroy GameObjects dynamicall
Implement Rigidbody velocitie
Implement Rigidbody impulse
Implement collision detectio
Play sound effects
Section 3
Introduction to AR with Vuforia
In section 3, we learn how to create an Augmented Reality application using Vuforia. We’ll use multiple
Image Targets to build an X-Ray simulator, where we can scan a human body 3D model in AR to see
what's inside. Along the way, you’ll get familiar with the Unity UI System and components.
Import packages with the Unity Package Manage
Identify key aspects that make good image targets
Implement Image Targets with Vufori
Work with simultaneous multiple Image Targets
Implement simple shaders
Version control with Git and Github
Understand the key concepts about World Space and Screen Space
Implement flexible UI element
Implement various UI events within the inspector
Section 4
Introduction to VR in Unity
Let’s create our first VR experience in section 4. We’ll use the advanced Unity physics engine to create
a realistic skills-based game involving throwing various foodstuffs at moving targets (a virtual food
fight!). Along the way, we'll learn how to use the animation system to animate our VR hands and detect
collisions to allow us to pick up our projectiles and throw them realistically at our randomly generated
Convert the camera to an XR Ri
Implement a simulated hand script for V
Implement a State Machine with Animator
Setup VR controllers in the Input Manage
Implement Animation Parameter
Handle triggers
Implement Kinematic grabbin
Implement Fixed Joint grabbin
Grabbing and throwing object
Handling collisions
Write code to handle animation
Calculate random position
Implement Object Tag
Implement audio source
Implementing Worldspace U
Create a timer with Time.deltaTim
Implementing a scoring system 6
Section 5
Implementing VR Locomotion
It's time to get moving! In section 5, we create the classic VR teleport with all the UX bells and whistles
from scratch. We'll go over Layers and LayerMasks, the all-powerful Raycast, Line Renderers, and
Coroutines so we can have our very own VR Locomotion system. There will be a bit of math to cover
with Lerp and Dot products but we'll make sure they're understandable and become powerful tools for
Implement Layers and LayerMask
Implement Physics Raycas
Implement Line Renderer
Implement custom input axis
Implement Coroutine
Understand the key concepts of vector mat
Calculate linear interpolation
Calculate Dot and Cross products
Implement Snap Rotation
Section 6
Implementing VR Interactions
We’re ready to implement VR interactions in this section. We’ll rebuild a simplified version of the
acclaimed Tilt Brush in VR. Now that you’ve mastered the basics, it’s time to use some advanced C#
and Unity techniques to create some sophisticated interactions with buttons, levers and dials. Your
room is your canvas!
Implement abstract classes
Implement inheritance
Implement Polymorphis
Work with collections
Implement iteration statements LESSON 14
Implement Configurable Joints
Implement custom interactions
Implement 3D buttons
Implement 3D dials
Implement 3D levers
Section 7
Introduction to AR Foundation
We learn how to use AR Foundation to create an AR robot that dodges enemies and navigates around
your living room. Our AR robot will navigate using touch controls, and we'll be using image tracking to
spawn enemies.
Understand the key concepts of the XR stack in Unit
Implement Plane Tracking
Implement AR Raycas
Import Mixamo Animations
Implement NavMesh and waypoint navigation
Implement mobile input
Configure the project for mobile targets
Build an app for mobile devices
Section 8
Final Project
It’s time to push your limits of creativity. In this section, you’ll have an opportunity to work with your
peers and instructor on an extended project. We’ll collaboratively design and develop an XR application
from scratch, pulling together the approaches, knowledge and skills you gained in the previous
sections, into a single, custom, and long-form project.
LESSON 17 - 20
The following learning outcomes are covered across the remaining sessions.
Design for Scalability
Analyze the technical feasibility of XR feature
Work collaboratively with a tea
Implement Events and Delegates
Implement Scriptable Objects
Create Visual Effects with Particle Systems
Create Visual Effects with Shader Graph
Add Post Process Effects to a Scen
Save data with PlayerPref
Use JSON files along with PlayerPrefs to save dat
Create code that allows for transitions between scene
Diagnose and fix performance problem
Find performance bottleneck
Understand render pipelines
Extended Learning