Unity Learn home
filter +
DOTS Best Practices
1 Hour55 Mins
If you’re working on a game (or other real-time simulation) that requires the most efficient CPU usage possible, then Unity’s Data Oriented Technology Stack (DOTS) is a great way to get the performance you need. However, to use DOTS successfully, you can’t simply grab the API documentation and dive straight in. Before you begin creating a project with DOTS you must understand the following: The fundamental concepts of data-oriented design Data-oriented design in Unity The best practice advice in this guide Data-oriented design (DOD) is a big change from the object-oriented programming (OOP) that many developers have spent their whole careers working with. This means that the learning curve for DOTS might be steep, and there are a lot of pitfalls that might stop you from getting the performance benefits you hope for. This Best Practice Guide contains advice to help avoid those pitfalls. Sections 1 and 2 of this guide explain the fundamental knowledge you need to understand before starting to build DOTS applications, and the biggest obstacles to achieving good performance. Later sections contain techniques that you can use to squeeze even more performance out of the technology, but you must have a fundamental understanding of the basics to get good use out of them. NOTE: This guide is not intended to be a comprehensive tutorial to all aspects of building a DOTS-based application. The primary focus of this guide is to help you obtain the best possible runtime performance in code written using the DOTS packages, with a particular focus on the Entity Component System. As such, there are many topics which fall outside the scope of this guide and are not covered in detail or mentioned at all. Here is an incomplete list of topics which aren’t covered here: In-depth discussion of features which were primarily used in older, experimental versions of the Entities package, such as SystemBase and Entities.ForEach() How to use the Baking system to author and convert entity data How to create and use BlobAssets to represent memory-ready, read-only data Some newer convenience features such as Aspects. Aspects can help to simplify complex entity queries but come with an additional runtime performance cost. This feature is under active development and may be featured in future versions of this guide. Packages which supplement ECS but which are not a core part of DOTS, such as Entities Graphics, Unity Physics, Havok Physics for Unity, and Netcode For Entities
Introduction to XR: VR, AR, and MR Foundations
11 Hours10 Mins
What is XR? It’s shorthand for a related set of new technologies that are changing the way we interact with the world and with each other: Virtual Reality, Augmented Reality, and Mixed Reality. To understand XR, you need to understand the technologies that enable it. If you understand the available technologies, how they are used, and what their future holds, you’ll be well equipped to deal with XR as it rapidly evolves and converges. In this course, we will present an introduction to XR using a broadly chronological approach, focusing on how all of the underlying technologies came together at key moments in the history of XR to launch the concepts of Virtual Reality and Augmented Reality into the mainstream consciousness. Throughout the course, we’ll give a brief description of each of the supporting technologies, some history about when it first came into use, limitations and future potential for improvement, and how it’s used for AR, VR, and MR. As you learn about the technology, you’ll also develop hands on experience in the field along two tracks. First, you will use Unity to build and run two simple XR applications on your own smartphone: a “VR Museum” app and a handheld Augmented Reality app. Second, you will brainstorm, define, visualize, and iterate your own original concept for an XR application, ending the course with a thorough and peer-reviewed XR Product Brief that you could use as the basis for future development. This is the first of three planned courses in Unity's XR Specialization, which include the Mobile VR App Development with Unity course as well as a future course focused on developing Augmented Reality (AR) applications with Unity.