A fully customizable, dynamic UI tutorial system for Unity that helps guide players by highlighting buttons, displaying tooltips, and managing tutorial sequences. This system is designed to be modular, scalable, and easy to integrate into any game project.
Screen.Recording.2025-03-20.at.7.38.10.PM.mp4
- Dynamic Tutorial Sequences – Easily create and manage multiple tutorial sequences.
- Auto-Generated Enums – Automatically generate
ButtonID
andSequenceID
enums from ScriptableObjects. - Button Highlighting – Focuses on buttons and makes them stand out during tutorials.
- Customizable Tooltips – Position tooltips near buttons dynamically.
- Event-Based System – Hooks into Unity UI buttons with event-driven interactions.
- Editor Integration – Simple tools to manage tutorials from the Unity Editor.
git clone https://github.com/BlackSentryDevXo/UI-Onboarding-Tutorial-Mask-System-Unity.git
- Open your Unity project.
- Drag and drop the
TutorialSystem
folder into yourAssets
directory.
- Create an empty GameObject and name it
UITutorialManager
. - Attach the
UITutorialManager.cs
script. - Assign:
-
Create a
ScriptableObject
for buttons:- Go to
Assets > Create > UI > Buttons DB
- Name it
ButtonsDatabase
. - Add the button names.
- Click
Generate Enum
(or useTools > ButtonID Enum Generator
).
- Go to
-
IMPORTANT!! Add UIButton.cs to every button you want highlighted
-
IMPORTANT!! For every button you want highlighted, Assign
ButtonID
to each UI button in the Inspector.
- Go to
Assets > Create > UI > SequenceID DB
. - Add a new
SequenceDatabase
. - List the tutorial sequence names.
- Click
Generate Enum
. - Assign tutorial sequences in
UITutorialManager
.
Your Tutorial manager should look something like this when everything is well setup
To take advantage of enhanced Inspector UI flexibility, install the NaughtyAttributes package:
- Download from GitHub: NaughtyAttributes Repository
- Import into Unity via Package Manager.
- This allows for better Inspector usability in the project.
Call the StartTutorial
function with a SequenceID
:
UITutorialManager tutorialManager = FindObjectOfType<UITutorialManager>();
tutorialManager.StartTutorial(SequenceID.seq_shop);
tutorialManager.FocusOnButton(ButtonID.shop, "Click here to open the shop!");
tutorialManager.EndTutorial();
- Edit the TooltipUI Prefab to change text styles, colors, or animations.
- Modify
TooltipUI.cs
to change how tooltips position themselves.
Each step can execute custom logic using the OnStepCompleted
event:
var step = new UITutorialStep {
buttonID = ButtonID.shop,
message = "Click here to open the shop!",
OnStepCompleted = () => Debug.Log("Shop button clicked!")
};


Modify UIButton.cs
to change how buttons are visually highlighted during a tutorial.
We welcome contributions! Feel free to fork the project, submit pull requests, or report issues.
- Fork the repository.
- Create a new branch (
feature/tutorial-improvement
). - Make your changes & commit.
- Push the branch & open a PR.
- 👀 UI Animation System – Add smooth transitions for highlighting buttons.
- 📖 Localization Support – Multi-language support for tutorials.
- 📊 Analytics Integration – Track tutorial completion rates.
This project is licensed under the MIT License. Feel free to use and modify it!
Developed by Black Sentry. Inspired by various UI tutorials in the gaming industry.
If you find this useful, give it a ⭐ on GitHub! 🚀