Book Image

Extending Unity with Editor Scripting

By : Angelo R Tadres Bustamante
Book Image

Extending Unity with Editor Scripting

By: Angelo R Tadres Bustamante

Overview of this book

One of Unity's most powerful features is the extensible editor it has. With editor scripting, it is possible to extend or create functionalities to make video game development easier. For a Unity developer, this is an important topic to know and understand because adapting Unity editor scripting to video games saves a great deal of time and resources. This book is designed to cover all the basic concepts of Unity editor scripting using a functional platformer video game that requires workflow improvement. You will commence with the basics of editor scripting, exploring its implementation with the help of an example project, a level editor, before moving on to the usage of visual cues for debugging with Gizmos in the scene view. Next, you will learn how to create custom inspectors and editor windows and implement custom GUI. Furthermore, you will discover how to change the look and feel of the editor using editor GUIStyles and editor GUISkins. You will then explore the usage of editor scripting in order to improve the development pipeline of a video game in Unity by designing ad hoc editor tools, customizing the way the editor imports assets, and getting control over the build creation process. Step by step, you will use and learn all the key concepts while creating and developing a pipeline for a simple platform video game. As a bonus, the final chapter will help you to understand how to share content in the Asset Store that shows the creation of custom tools as a possible new business. By the end of the book, you will easily be able to extend all the concepts to other projects.
Table of Contents (12 chapters)
11
Index

Implementing a Scriptable Object


In this section, we will create a ScriptableObject class and then reallocate the gravity, bgm, and background variables there.

Creating the data class

The ScriptableObject class is part of the UnityEngine namespace. You derive from this class if you want to create objects that don't need to be attached to a game object, but more often, if you are looking for objects meant to save data.

Let's create a script called LevelSettings.cs inside the folder Scripts/Levels and add the following code:

using UnityEngine;
using System;

namespace RunAndJump {

  [Serializable]
  public class LevelSettings : ScriptableObject {

    public float gravity = -30;
    public AudioClip bgm;
    public Sprite background;
  }
}

The first step was to make the class extend from the ScriptableObject class. Then, we added the public variables to represent each variable we want to save in this class.

We added the namespace System to use the attribute Serializable. Using this attribute, we...