Unity Development Cookbook, 2nd Edition

Book description

Learn everything you need to know to use the powerful Unity engine to its full potential for 3D and 2D game development, simulation, artificial intelligence, and beyond. From the basics of scripting to techniques for interactivity, AI and behavior, animation, narrative, and networking, this flexible, mind-bogglingly popular engine is useful for anything that needs visuals and real-time simulation.

With this thoroughly updated problem-solving cookbook, beginner and intermediate Unity developers will learn about the Unity engine through brief recipes that teach specific features of the software and scripting systems. You'll apply a collection of snippets of code to address common scenarios such as properly keeping score, accepting input, and sharing state over the network.

This cookbook pinpoints the problem, sets out the solution, and discusses how to solve your problem in the best and most straightforward way possible. You'll find solutions for:

  • 2D and 3D graphics
  • Math, physics, and character control
  • Animation and movement
  • Behavior and AI
  • Sound and music
  • Narrative and dialogue
  • Input and gameplay
  • Scripting and user interface
  • Simulation and synthetic data creation
  • Networking and accessing web content
  • Analytics and telemetry

Publisher resources

View/Submit Errata

Table of contents

  1. Preface
    1. Audience and Approach
    2. Organization of This Book
    3. Conventions Used in This Book
    4. Using Code Examples
    5. O’Reilly Online Learning
    6. How to Contact Us
    7. Acknowledgments
  2. 1. Working in Unity
    1. 1.1. Getting Around in Unity
    2. 1.2. Working with Game Objects
    3. 1.3. Working with Components
    4. 1.4. Working with Prefabs
    5. 1.5. Working with Scenes
    6. 1.6. Managing Assets
    7. 1.7. Building Unity Projects
    8. 1.8. Accessing Preferences
    9. 1.9. Installing Unity Packages
  3. 2. Scripting
    1. 2.1. Adding a Script to an Object in a Unity Scene
    2. 2.2. Running Code at Specific Times in a Script’s (or Game Object’s) Life
    3. 2.3. Creating Frame Rate–Independent Behavior
    4. 2.4. Using the Components of a Game Object
    5. 2.5. Finding Objects Attached to a Game Object
    6. 2.6. Singletons
    7. 2.7. Using Coroutines to Manage When Code Runs
    8. 2.8. Managing Objects Using an Object Pool
    9. 2.9. Storing Data in Assets Using ScriptableObject
  4. 3. Input
    1. 3.1. Getting Simple Keyboard Input
    2. 3.2. Using the Unity Input System
    3. 3.3. Using Input Actions
    4. 3.4. Locking and Hiding the Mouse Cursor
    5. 3.5. Responding to Mouseover and Click Events
  5. 4. Mathematics
    1. 4.1. Storing Coordinates of Varying Dimensions Using Vectors
    2. 4.2. Rotating in 3D Space
    3. 4.3. Performing Transformations in 3D Space with Matrices
    4. 4.4. Working with Angles
    5. 4.5. Finding the Distance to a Target
    6. 4.6. Finding the Angle to a Target
  6. 5. 2D Graphics
    1. 5.1. Importing Images as Sprites
    2. 5.2. Adding a Sprite to the Scene
    3. 5.3. Creating a Sprite Animation
    4. 5.4. Creating a Sprite with 2D Physics
    5. 5.5. Customizing Sprite Collision Shapes
    6. 5.6. Using a Composite Collider
    7. 5.7. Using the Sprite Packer
    8. 5.8. Applying Forces to 2D Objects
    9. 5.9. Creating a Conveyor Belt
    10. 5.10. Using a Custom Material for Sprites
    11. 5.11. Managing Sprite Sorting
    12. 5.12. Using Sorting Groups
    13. 5.13. Creating a 2.5D Scene
  7. 6. 3D Graphics
    1. 6.1. Creating a Simple Material
    2. 6.2. Controlling a Material’s Property Through a Script
    3. 6.3. Creating an Unlit Material
    4. 6.4. Setting Up a Material Using Textures
    5. 6.5. Making a Material Use a Shader
    6. 6.6. Setting Up a Bloom Effect Using Post-Processing with the Built-In Render Pipeline
    7. 6.7. Setting Up a Bloom Effect Using Post-Processing with the Universal Render Pipeline
    8. 6.8. Using High-Dynamic-Range Colors
    9. 6.9. Setting Up a Project to Use a Scriptable Render Pipeline
    10. 6.10. Creating a Shader Using the Shader Graph
    11. 6.11. Creating a Glowing Effect Using the Shader Graph
    12. 6.12. Exposing Properties from a Shader Graph
    13. 6.13. Animating a Shader over Time
    14. 6.14. Controlling the Speed of an Animated Shader
    15. 6.15. Using a Subgraph to Reuse Graph Components
    16. 6.16. Implementing a Dissolve Effect Using a Shader Graph
    17. 6.17. Using Baked Lighting and Real-Time Lighting
    18. 6.18. Using Baked Emission Sources
    19. 6.19. Making Static Objects Cast Shadows on Dynamic Objects
    20. 6.20. Using Light Probes to Influence Lighting
    21. 6.21. Using Reflection Probes
    22. 6.22. Faking a Dynamic Emissive Object
    23. 6.23. Rendering to a Texture
  8. 7. 3D Physics and Character Control
    1. 7.1. Running Code a Specific Number of Times per Second
    2. 7.2. Allowing the Player to Look Around Using the Mouse
    3. 7.3. Controlling a 3D Character
    4. 7.4. Interacting with Switches and Objects
    5. 7.5. Picking Up and Putting Down Objects
    6. 7.6. Detecting When an Object Is Touching Another Object
    7. 7.7. Detecting When an Object Is in a Trigger Area
    8. 7.8. Implementing Moving Platforms
    9. 7.9. Implementing Platform Riding
    10. 7.10. Responding to Being Pushed by Objects
  9. 8. Animation and Movement
    1. 8.1. Animating an Object
    2. 8.2. Basic Character Movement
    3. 8.3. Inverse Kinematics
    4. 8.4. Masked Movement
    5. 8.5. Blended Movement
    6. 8.6. Navigation and Animating in Sync
    7. 8.7. Cinematic Camera Tracking
    8. 8.8. Automatically Switching Cameras
    9. 8.9. Keeping Multiple Objects in View
    10. 8.10. Dollying a Camera
  10. 9. Logic and Gameplay
    1. 9.1. Loading a New Scene File
    2. 9.2. Managing Hit Points
    3. 9.3. Creating a Top-Down Camera
    4. 9.4. Managing Quests
    5. 9.5. Dragging a Box to Select Objects
    6. 9.6. Creating a Menu Structure
    7. 9.7. Creating a Wheeled Vehicle
    8. 9.8. Keeping a Car from Tipping Over
    9. 9.9. Creating Speed Boosts
    10. 9.10. Creating a Camera That Orbits Around Its Target
    11. 9.11. Creating an Orbiting Camera That Won’t Clip Through Walls
    12. 9.12. Detecting When the Player Has Completed a Lap
  11. 10. Behavior, Simulation, and AI
    1. 10.1. Enemies Detecting When They Can See the Player
    2. 10.2. Defining a Path That AI Entities and the Player Can Follow
    3. 10.3. Letting Entities in Your Game Follow a Path
    4. 10.4. Finding a Good Distribution of Random Points (Poisson Disc)
    5. 10.5. Enemies Detecting Where They Can Take Cover
    6. 10.6. Building and Using a State Machine
    7. 10.7. Building a Simulation Environment for Machine Learning
  12. 11. Sound and Music
    1. 11.1. Playing Sounds
    2. 11.2. Setting Up a Mixer
    3. 11.3. Using Audio Effects
    4. 11.4. Using Send and Receive Effects
    5. 11.5. Ducking
    6. 11.6. Using Multiple Audio Zones
    7. 11.7. Playing Audio with Scripts
    8. 11.8. Using a Sound Manager
  13. 12. User Interface
    1. 12.1. Working with UI Controls
    2. 12.2. Theming Controls
    3. 12.3. Animating the UI
    4. 12.4. Creating a List of Items
    5. 12.5. Fading Out List Items
    6. 12.6. Creating Onscreen Position Indicators
    7. 12.7. Custom Editors
    8. 12.8. Property Drawers
    9. 12.9. Attribute Drawers
    10. 12.10. Asset Processing
    11. 12.11. Wizards
  14. 13. Files, Networking, and Screenshots
    1. 13.1. Saving Files
    2. 13.2. Saving an Image File of Your Game to Disk
    3. 13.3. Loading Textures from Disk
    4. 13.4. Saving and Loading a Game’s State
    5. 13.5. Downloading and Parsing JSON from the Web
    6. 13.6. Scripted Importers
  15. Index
  16. About the Authors

Product information

  • Title: Unity Development Cookbook, 2nd Edition
  • Author(s): Paris Buttfield-Addison, Jon Manning, Tim Nugent
  • Release date: August 2023
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098113711