User Guide
A complete guide to using Quick Notes Pro effectively in your Unity workflow.
Getting Started
Opening Quick Notes
Navigate to Tools → A2K → Quick Notes (UI Toolkit) in the Unity menu bar.
Quick Notes Pro
A2K Quick Notes Pro v3.0 — A professional note-taking system for the Unity Editor, built with UI Toolkit.
Organize your development thoughts, track bugs, document features, and keep your project knowledge centralized — all without leaving the Unity Editor.
Features
Note Management
- Create, edit, and delete notes with rich formatting
- Quick-add notes from the header bar
- Full-text search across titles, content, and tags
- Pin important notes to the top
- Archive completed or inactive notes
- Drag-to-reorder with animated transitions
Organization
- Categories — Group notes by Development, Art, Audio, Design, QA, or custom categories
- Tags — Add multiple tags per note for flexible cross-referencing
- Icons — 27 emoji icons for visual identification (bugs, ideas, warnings, etc.)
- Attachments — Link Unity assets directly to notes via drag-and-drop
Styling System
- 12 preset accent colors
- Custom color picker for unlimited options
- Theme System — 5 built-in themes with full customization
- Per-Note Styling — Override theme with custom colors, fonts, and spacing
- Live preview while editing themes
Productivity
- Multi-select with Ctrl/Cmd+Click and Shift+Click
- Bulk operations (pin, archive, delete)
- Keyboard shortcuts for common actions
- Undo/Redo support
- Import/Export to JSON
- Automatic save and session restoration
Installation
- Copy the following files to your Unity project's
Editor folder:
```
Assets/
└── Editor/
└── QuickNotes/
├── Quicknotes_UIToolkit.cs
├── Quicknotes_UIToolkit.uxml
├── Quicknotes_UIToolkit.uss
└── Quicknotes_NoteCard.uxml
```
- Open Unity and wait for compilation.
- Access via menu: Tools → A2K → Quick Notes (UI Toolkit)
Quick Start
Creating Your First Note
- Open Quick Notes from Tools → A2K → Quick Notes (UI Toolkit)
- Click the + button or press Ctrl+N
- Enter a title and content
- Select an accent color from the palette
Using Quick Add
Type in the quick-add field at the top of the notes list and press Enter to instantly create a note with that title.
Organizing Notes
- Pin — Click the star icon to pin notes to the top
- Category — Assign from the dropdown in the editor
- Tags — Expand the tags section and add keywords
- Archive — Hide completed notes without deleting them
Applying Themes
- Click the palette icon in the header to open Theme Manager
- Select a built-in theme or create your own
- In the Style Sidebar, choose "Theme" and select your preferred theme
- Or choose "Custom" for per-note styling
Keyboard Shortcuts
| Shortcut | Action |
|---|
| Ctrl/Cmd + N | Create new note |
| Ctrl/Cmd + A | Select all notes |
| Ctrl/Cmd + S | Force save |
| Delete | Delete selected notes |
| Escape | Clear selection |
Data Storage
Notes are stored in your project's ProjectSettings folder:
| File | Purpose |
|---|
A2K_Notes.json | Notes data |
A2K_NotesCategories.json | Category definitions |
A2K_NotesThemes.json | Custom themes |
These files are automatically created on first use and saved whenever changes occur.
Requirements
- Unity 2021.3 or later
- UI Toolkit (included with Unity)
Architecture
Quick Notes Pro follows a strict separation of concerns:
| File | Responsibility |
|---|
.uxml | Structure only — element hierarchy and names |
.uss | Styling only — colors, layout, animations |
.cs | Logic only — data binding, events, persistence |
This architecture enables:
- Easy theming without code changes
- Clean, maintainable codebase
- Optimal runtime performance
See ARCHITECTURE.md for technical details.
License
© 2024 A2K. All rights reserved.
Support
For issues, feature requests, or contributions, please contact the A2K development team.
The window can be docked alongside other Unity panels or floated independently. Minimum size is 750×500 pixels.
Interface Overview
┌─────────────────────────────────────────────────────────────────┐
│ [🎨] [☆] [▼ Category] [🔍 Search...] [+ Quick Add] │
├──────────────────────┬──────────────────────────────────────────┤
│ │ [📝] [Color Palette] [🎨] [★] [⋮] │
│ ┌────────────────┐ ├──────────────────────────────────────────┤
│ │ 📝 Note Title │ │ ┌──────────────────────────────────┐ │
│ │ Preview text...│ │ │ Title │ │
│ │ Category 2h │ │ └──────────────────────────────────┘ │
│ └────────────────┘ │ ┌──────────────────────────────────┐ │
│ │ │ │ │
│ ┌────────────────┐ │ │ Content area... │ │
│ │ 💡 Another │ │ │ │ │
│ │ More text... │ │ └──────────────────────────────────┘ │
│ └────────────────┘ │ │
│ │ Category: [▼ Development] │
│ │ Tags: [tag1] [tag2] [+ Add] │
│ │ Attachments: [📄 Script.cs] │
├──────────────────────┴──────────────────────────────────────────┤
│ 12 notes (2 archived) [☐ Show Archived] │
└─────────────────────────────────────────────────────────────────┘
Managing Notes
Creating Notes
Method 1: New Note Button
- Click the + button in the notes list header
- Press Ctrl/Cmd + N
Method 2: Quick Add
- Type in the quick-add field at the top
- Press Enter to create instantly
- The note inherits the current category filter
Editing Notes
Select a note from the list to open it in the editor panel:
- Title — Click to edit, auto-saves on change
- Content — Multi-line text area with scroll
- Icon — Click the emoji button to choose from 27 icons
- Color — Select from 12 presets or use the color picker
- Pin — Click the star to pin/unpin
Deleting Notes
- Select a note and click the trash icon
- Right-click a note and choose "Delete"
- Select multiple notes and use bulk delete
All deletions can be undone with Ctrl/Cmd + Z.
Organization
Categories
Categories provide primary organization for your notes.
Default Categories:
- General
- Development
- Art
- Audio
- Design
- QA
Managing Categories:
- Click the options menu (⋮) in the header
- Select "Manage Categories..."
- Add new categories or delete existing ones
Filtering by Category:
Use the dropdown in the header to show only notes from a specific category.
Tags
Tags allow flexible cross-referencing across categories.
Adding Tags:
- Expand the Tags section in the note editor
- Type a tag name and click "Add" or press Enter
Removing Tags:
Click the × on any tag to remove it.
Searching Tags:
The search field matches against tag content.
Pinning
Pinned notes always appear at the top of the list, regardless of sort order.
Toggle Pin:
- Click the star icon in the editor toolbar
- Right-click a note and select "Pin"
Filter Pinned:
Click the star button in the header to show only pinned notes.
Archiving
Archive notes you want to keep but hide from the main list.
Toggle Archive:
- Right-click a note and select "Archive"
- Use bulk archive for multiple notes
View Archived:
Check "Show Archived" in the footer to include archived notes.
Attachments
Link Unity assets directly to notes for quick reference.
Adding Attachments
Drag and Drop:
- Select a note
- Drag any asset from the Project window
- Drop it on the attachments area
From Selection:
- Select an asset in the Project window
- Click "Add Attachment" in the note
- Choose "Link Selected Asset"
Using Attachments
- Select — Click to ping the asset in the Project window
- Remove — Click the × to unlink (doesn't delete the asset)
Supported Types
All Unity asset types are supported:
- Scripts (📜)
- Textures (🖼)
- Audio (🔊)
- Prefabs (📦)
- Other (📄)
Themes and Styling
Style Modes
Each note can use one of three style modes:
| Mode | Description |
|---|
| Default | Uses USS base styles |
| Theme | Applies a selected theme |
| Custom | Per-note color overrides |
Using Themes
- Click the style button (🎨) in the editor toolbar
- Open the Style Sidebar
- Select "Theme" mode
- Choose a theme from the dropdown
Built-in Themes
| Theme | Description |
|---|
| Default Dark | Yellow accent, dark gray background |
| Ocean | Cyan accent, deep blue tones |
| Forest | Green accent, natural earth tones |
| Sunset | Orange accent, warm browns |
| Lavender | Purple accent, soft violets |
Creating Custom Themes
- Click the palette icon in the header
- Open Theme Manager
- Click "New Theme"
- Configure colors and typography
- Use the live preview to verify
- Click "Save"
Theme Properties
| Property | Description |
|---|
| Accent Color | Left border color |
| Card Background | Note card fill color |
| Title Color | Title text color |
| Content Background | Editor area color |
| Content Color | Body text color |
| Title Size | Title font size (px) |
| Content Size | Body font size (px) |
| Accent Width | Left border width (px) |
| Padding | Internal spacing (px) |
Per-Note Custom Styling
- Open the Style Sidebar
- Select "Custom" mode
- Adjust individual properties
- Click "Save as Theme" to reuse later
Multi-Select Operations
Selecting Multiple Notes
| Action | Result |
|---|
| Ctrl/Cmd + Click | Toggle individual selection |
| Shift + Click | Select range from last clicked |
| Ctrl/Cmd + A | Select all visible notes |
| Escape | Clear selection |
Bulk Operations
When multiple notes are selected, a toolbar appears:
- Pin — Toggle pin on all selected
- Archive — Archive all selected
- Delete — Delete all selected
Right-click for context menu options.
Import and Export
Exporting Notes
- Click the options menu (⋮)
- Select "Export Notes..."
- Choose a location and filename
- All notes export to JSON format
Importing Notes
- Click the options menu (⋮)
- Select "Import Notes..."
- Choose a JSON file
- Select import mode:
- Merge — Add to existing notes
- Replace — Clear and import
- Cancel — Abort import
Keyboard Shortcuts
| Shortcut | Action |
|---|
| Ctrl/Cmd + N | Create new note |
| Ctrl/Cmd + A | Select all notes |
| Ctrl/Cmd + S | Force save all data |
| Ctrl/Cmd + Z | Undo last action |
| Ctrl/Cmd + Y | Redo |
| Delete | Delete selected notes |
| Escape | Clear selection |
| Enter (in quick-add) | Create note from text |
Tips and Best Practices
Workflow Recommendations
- Use Categories for Scope — Development, Art, Audio maps to team roles
- Use Tags for Topics — "multiplayer", "bug", "polish" work across categories
- Pin Active Work — Keep current tasks pinned
- Archive Completed — Don't delete, archive for reference
Performance Tips
- Archive old notes rather than keeping hundreds visible
- Use specific search terms rather than browsing
- Keep attachment count reasonable per note
Data Safety
- Notes auto-save on every change
- Use Export regularly for backups
- JSON files can be version-controlled
- Files are stored in ProjectSettings (project-specific)
Troubleshooting
Notes Not Saving
- Check that
ProjectSettings folder exists - Verify write permissions
- Check Console for error messages
Styling Not Applying
- Ensure USS file is in same folder as UXML
- Check that element names match between UXML and C#
- Verify no syntax errors in USS file
Window Not Opening
- Check Console for compilation errors
- Verify all four files are present
- Ensure files are in an Editor folder
Import Failing
- Verify JSON file is valid
- Check that it was exported from Quick Notes
- Look for special characters in note content
Architecture
Quick Notes Pro is built with Unity's UI Toolkit following a strict Model-View separation pattern. This document details the technical architecture and design decisions.
File Structure
QuickNotes/
├── Quicknotes_UIToolkit.cs # Logic layer (EditorWindow)
├── Quicknotes_UIToolkit.uxml # Main window structure
├── Quicknotes_UIToolkit.uss # Complete stylesheet
└── Quicknotes_NoteCard.uxml # Note card template
Separation of Concerns
UXML — Structure Only
UXML files define what elements exist and their hierarchy. They contain:
- Element types (VisualElement, Button, TextField, etc.)
- Element names for C# queries
- CSS classes for styling
- Hierarchical relationships
UXML files do not contain:
- Inline styles
- Hardcoded colors or dimensions
- Asset GUIDs or paths
- Template references (loaded dynamically)
<!-- Example: Clean UXML structure -->
<VisualElement name="note-card" class="note-card">
<VisualElement name="accent-bar" class="accent-bar"/>
<VisualElement name="card-content" class="card-content">
<Label name="title" class="card-title"/>
</VisualElement>
</VisualElement>
USS — Styling Only
USS files define how elements appear. They contain:
- Colors, backgrounds, borders
- Layout properties (flex, padding, margins)
- Typography (font size, weight, color)
- Transitions and hover states
- CSS variables for theming
USS files do not contain:
- Business logic
- Unsupported pseudo-classes (
:last-child, :nth-child) - Asset references
/* Example: USS with CSS variables */
:root {
--accent: #F5D923;
--bg-dark: #1A1A1C;
}
.note-card {
background-color: var(--bg-dark);
border-radius: 6px;
transition: background-color 0.15s;
}
.note-card:hover {
background-color: #2A2A2C;
}
C# — Logic Only
The C# file handles all runtime behavior:
- Dynamic asset loading via
AssetDatabase.FindAssets() - Element queries and event binding
- Data management and persistence
- Theme application and dynamic styling
- User interaction handling
// Example: Dynamic asset loading (no hardcoded GUIDs)
private string FindAssetPath(string name, string extension)
{
var guids = AssetDatabase.FindAssets($"{name} t:VisualTreeAsset");
foreach (var guid in guids)
{
var path = AssetDatabase.GUIDToAssetPath(guid);
if (path.EndsWith($".{extension}")) return path;
}
return "";
}
Data Architecture
Storage Files
| File | Location | Format |
|---|
| Notes | ProjectSettings/A2K_Notes.json | JSON |
| Categories | ProjectSettings/A2K_NotesCategories.json | JSON |
| Themes | ProjectSettings/A2K_NotesThemes.json | JSON |
Data Classes
NotesData
├── Notes: List<Note>
├── LastOpenedId: string
├── Version: int
└── DefaultThemeId: string
Note
├── Id: string (GUID)
├── Title: string
├── Content: string
├── ColorIndex: int
├── ColorHex: string
├── IconId: string
├── Category: string
├── Tags: List<string>
├── Attachments: List<Attachment>
├── LinkedTaskId: string
├── Created: string (ISO date)
├── Modified: string (ISO date)
├── Pinned: bool
├── Archived: bool
├── SortOrder: int
├── Style: NoteStyle
└── UseCustomStyle: bool
NoteStyle
├── ThemeId: string
├── AccentHex: string
├── CardBgHex: string
├── TitleColorHex: string
├── ContentBgHex: string
├── ContentColorHex: string
├── TitleSize: int
├── ContentSize: int
├── TitleBold: bool
├── TitleItalic: bool
├── AccentWidth: int
└── Padding: int
NoteTheme
├── Id: string
├── Name: string
├── Description: string
├── Author: string
├── Created: string
├── [Same color/style properties as NoteStyle]
└── IsBuiltIn: bool
Attachment
├── Name: string
├── Path: string
├── GUID: string
└── Type: string
Panel System
The content panel uses a mode-based system to switch between views:
private enum PanelMode { NoteEditor, ThemeManager, ThemeEditor, CategoryManager }
Each mode corresponds to a view container in UXML:
note-editor-view — Main note editing interfaceempty-state-view — Shown when no note is selectedtheme-manager-view — Theme list and managementtheme-editor-view — Individual theme editingcategory-manager-view — Category list and management
Only one view is visible at a time via the .hidden class.
Styling Pipeline
Static vs Dynamic Styling
| Type | Source | Applied By |
|---|
| Static | USS | UI Toolkit (automatic) |
| Dynamic | Theme/NoteStyle | C# (programmatic) |
Static styling handles:
- Base colors and layout
- Hover states and transitions
- Typography defaults
- Component structure
Dynamic styling handles:
- Per-note accent colors
- Theme-based backgrounds
- Active/selected states
- Custom style overrides
Style Resolution Order
- Default — USS base styles
- Theme — If
note.Style.ThemeId is set, apply theme colors - Custom — If
note.UseCustomStyle is true, apply note.Style directly - State — Active/selected states override background
private NoteStyle GetNoteStyle(Note note)
{
// Check for theme-based style
if (!string.IsNullOrEmpty(note.Style?.ThemeId))
{
var theme = _themes?.Themes.FirstOrDefault(t => t.Id == note.Style.ThemeId);
if (theme != null) return ThemeToStyle(theme);
}
// Fall back to note's custom style or default
return note.Style ?? new NoteStyle();
}
ListView Implementation
The notes list uses UI Toolkit's ListView with virtualization for performance:
_notesList.makeItem = MakeNoteCard; // Creates reusable card elements
_notesList.bindItem = BindNoteCard; // Binds data to card elements
_notesList.fixedItemHeight = 72; // Enables virtualization
_notesList.selectionType = SelectionType.None; // Custom selection handling
_notesList.reorderable = true; // Drag-to-reorder support
_notesList.reorderMode = ListViewReorderMode.Animated;
Card Template Loading
The note card template is loaded dynamically at runtime:
var cardTemplatePath = FindAssetPath("Quicknotes_NoteCard", "uxml");
_noteCardTemplate = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(cardTemplatePath);
If the template isn't found, cards are created programmatically as a fallback.
Undo System
Quick Notes integrates with Unity's Undo system via a ScriptableObject buffer:
private class NotesUndoState : ScriptableObject { public string JsonState; }
private void RecordUndo(string operationName)
{
Undo.RecordObject(_undoState, operationName);
_undoState.JsonState = JsonUtility.ToJson(_data);
}
private void OnUndoRedo()
{
_data = JsonUtility.FromJson<NotesData>(_undoState.JsonState);
RefreshUI();
}
Performance Considerations
- Virtualized ListView — Only visible cards are rendered
- CSS Variables — Theme colors defined once, referenced everywhere
- Minimal Repaints — Targeted refresh methods update only affected elements
- Lazy Loading — Assets loaded on demand, not at compile time
- Efficient Queries — Elements cached in fields, not re-queried per frame
Extensibility
Adding New Icons
Add entries to the ICONS array:
public static readonly IconInfo[] ICONS = {
new("custom", "🎮", "Gaming"),
// ...
};
Adding Built-in Themes
Add entries in EnsureBuiltInThemes():
new NoteTheme {
Id = "builtin_custom",
Name = "Custom Theme",
IsBuiltIn = true,
AccentHex = "#...",
// ...
}
Adding New Panel Views
- Add UXML structure for the view
- Add enum value to
PanelMode - Query the view element in
QueryElements() - Handle visibility in
RefreshContentPanel() - Create refresh method for the view
Testing Checklist
User Guide
A complete guide to using Quick Notes Pro effectively in your Unity workflow.
Getting Started
Opening Quick Notes
Navigate to Tools → A2K → Quick Notes (UI Toolkit) in the Unity menu bar.
The window can be docked alongside other Unity panels or floated independently. Minimum size is 750×500 pixels.
Interface Overview
┌─────────────────────────────────────────────────────────────────┐
│ [🎨] [☆] [▼ Category] [🔍 Search...] [+ Quick Add] │
├──────────────────────┬──────────────────────────────────────────┤
│ │ [📝] [Color Palette] [🎨] [★] [⋮] │
│ ┌────────────────┐ ├──────────────────────────────────────────┤
│ │ 📝 Note Title │ │ ┌──────────────────────────────────┐ │
│ │ Preview text...│ │ │ Title │ │
│ │ Category 2h │ │ └──────────────────────────────────┘ │
│ └────────────────┘ │ ┌──────────────────────────────────┐ │
│ │ │ │ │
│ ┌────────────────┐ │ │ Content area... │ │
│ │ 💡 Another │ │ │ │ │
│ │ More text... │ │ └──────────────────────────────────┘ │
│ └────────────────┘ │ │
│ │ Category: [▼ Development] │
│ │ Tags: [tag1] [tag2] [+ Add] │
│ │ Attachments: [📄 Script.cs] │
├──────────────────────┴──────────────────────────────────────────┤
│ 12 notes (2 archived) [☐ Show Archived] │
└─────────────────────────────────────────────────────────────────┘
Managing Notes
Creating Notes
Method 1: New Note Button
- Click the + button in the notes list header
- Press Ctrl/Cmd + N
Method 2: Quick Add
- Type in the quick-add field at the top
- Press Enter to create instantly
- The note inherits the current category filter
Editing Notes
Select a note from the list to open it in the editor panel:
- Title — Click to edit, auto-saves on change
- Content — Multi-line text area with scroll
- Icon — Click the emoji button to choose from 27 icons
- Color — Select from 12 presets or use the color picker
- Pin — Click the star to pin/unpin
Deleting Notes
- Select a note and click the trash icon
- Right-click a note and choose "Delete"
- Select multiple notes and use bulk delete
All deletions can be undone with Ctrl/Cmd + Z.
Organization
Categories
Categories provide primary organization for your notes.
Default Categories:
- General
- Development
- Art
- Audio
- Design
- QA
Managing Categories:
- Click the options menu (⋮) in the header
- Select "Manage Categories..."
- Add new categories or delete existing ones
Filtering by Category:
Use the dropdown in the header to show only notes from a specific category.
Tags
Tags allow flexible cross-referencing across categories.
Adding Tags:
- Expand the Tags section in the note editor
- Type a tag name and click "Add" or press Enter
Removing Tags:
Click the × on any tag to remove it.
Searching Tags:
The search field matches against tag content.
Pinning
Pinned notes always appear at the top of the list, regardless of sort order.
Toggle Pin:
- Click the star icon in the editor toolbar
- Right-click a note and select "Pin"
Filter Pinned:
Click the star button in the header to show only pinned notes.
Archiving
Archive notes you want to keep but hide from the main list.
Toggle Archive:
- Right-click a note and select "Archive"
- Use bulk archive for multiple notes
View Archived:
Check "Show Archived" in the footer to include archived notes.
Attachments
Link Unity assets directly to notes for quick reference.
Adding Attachments
Drag and Drop:
- Select a note
- Drag any asset from the Project window
- Drop it on the attachments area
From Selection:
- Select an asset in the Project window
- Click "Add Attachment" in the note
- Choose "Link Selected Asset"
Using Attachments
- Select — Click to ping the asset in the Project window
- Remove — Click the × to unlink (doesn't delete the asset)
Supported Types
All Unity asset types are supported:
- Scripts (📜)
- Textures (🖼️)
- Audio (🔊)
- Prefabs (📦)
- Other (📄)
Themes and Styling
Style Modes
Each note can use one of three style modes:
| Mode | Description |
|---|
| Default | Uses USS base styles |
| Theme | Applies a selected theme |
| Custom | Per-note color overrides |
Using Themes
- Click the style button (🎨) in the editor toolbar
- Open the Style Sidebar
- Select "Theme" mode
- Choose a theme from the dropdown
Built-in Themes
| Theme | Description |
|---|
| Default Dark | Yellow accent, dark gray background |
| Ocean | Cyan accent, deep blue tones |
| Forest | Green accent, natural earth tones |
| Sunset | Orange accent, warm browns |
| Lavender | Purple accent, soft violets |
Creating Custom Themes
- Click the palette icon in the header
- Open Theme Manager
- Click "New Theme"
- Configure colors and typography
- Use the live preview to verify
- Click "Save"
Theme Properties
| Property | Description |
|---|
| Accent Color | Left border color |
| Card Background | Note card fill color |
| Title Color | Title text color |
| Content Background | Editor area color |
| Content Color | Body text color |
| Title Size | Title font size (px) |
| Content Size | Body font size (px) |
| Accent Width | Left border width (px) |
| Padding | Internal spacing (px) |
Per-Note Custom Styling
- Open the Style Sidebar
- Select "Custom" mode
- Adjust individual properties
- Click "Save as Theme" to reuse later
Multi-Select Operations
Selecting Multiple Notes
| Action | Result |
|---|
| Ctrl/Cmd + Click | Toggle individual selection |
| Shift + Click | Select range from last clicked |
| Ctrl/Cmd + A | Select all visible notes |
| Escape | Clear selection |
Bulk Operations
When multiple notes are selected, a toolbar appears:
- Pin — Toggle pin on all selected
- Archive — Archive all selected
- Delete — Delete all selected
Right-click for context menu options.
Import and Export
Exporting Notes
- Click the options menu (⋮)
- Select "Export Notes..."
- Choose a location and filename
- All notes export to JSON format
Importing Notes
- Click the options menu (⋮)
- Select "Import Notes..."
- Choose a JSON file
- Select import mode:
- Merge — Add to existing notes
- Replace — Clear and import
- Cancel — Abort import
Keyboard Shortcuts
| Shortcut | Action |
|---|
| Ctrl/Cmd + N | Create new note |
| Ctrl/Cmd + A | Select all notes |
| Ctrl/Cmd + S | Force save all data |
| Ctrl/Cmd + Z | Undo last action |
| Ctrl/Cmd + Y | Redo |
| Delete | Delete selected notes |
| Escape | Clear selection |
| Enter (in quick-add) | Create note from text |
Tips and Best Practices
Workflow Recommendations
- Use Categories for Scope — Development, Art, Audio maps to team roles
- Use Tags for Topics — "multiplayer", "bug", "polish" work across categories
- Pin Active Work — Keep current tasks pinned
- Archive Completed — Don't delete, archive for reference
Performance Tips
- Archive old notes rather than keeping hundreds visible
- Use specific search terms rather than browsing
- Keep attachment count reasonable per note
Data Safety
- Notes auto-save on every change
- Use Export regularly for backups
- JSON files can be version-controlled
- Files are stored in ProjectSettings (project-specific)
Troubleshooting
Notes Not Saving
- Check that
ProjectSettings folder exists - Verify write permissions
- Check Console for error messages
Styling Not Applying
- Ensure USS file is in same folder as UXML
- Check that element names match between UXML and C#
- Verify no syntax errors in USS file
Window Not Opening
- Check Console for compilation errors
- Verify all four files are present
- Ensure files are in an Editor folder
Import Failing
- Verify JSON file is valid
- Check that it was exported from Quick Notes
- Look for special characters in note content
API Reference
Complete reference for Quick Notes Pro data structures, classes, and customization points.
Namespace
namespace A2K.Editor.Tools.Quicknotes.UIToolkit
Main Class
QuickNotesUIToolkit
public class QuickNotesUIToolkit : EditorWindow
The main editor window class. Access via menu Tools → A2K → Quick Notes (UI Toolkit).
Static Method
[MenuItem("Tools/A2K/Quick Notes (UI Toolkit)")]
public static void ShowWindow()
Opens or focuses the Quick Notes window.
Data Classes
Note
Represents a single note entry.
[Serializable]
public class Note
{
public string Id; // Unique GUID identifier
public string Title; // Note title
public string Content; // Note body text
public int ColorIndex; // Preset color index (0-11), -1 for custom
public string ColorHex; // Custom hex color (e.g., "#FF5733")
public string IconId; // Icon identifier (see Icons section)
public string Category; // Category name or empty
public List<string> Tags; // List of tag strings
public List<Attachment> Attachments; // Linked Unity assets
public string LinkedTaskId; // Reserved for task integration
public string Created; // ISO date string (yyyy-MM-dd HH:mm)
public string Modified; // ISO date string (yyyy-MM-dd HH:mm)
public bool Pinned; // Pin to top of list
public bool Archived; // Hidden from main view
public int SortOrder; // Position in list
public NoteStyle Style; // Styling configuration
public bool UseCustomStyle; // True = use Style directly, False = use theme
}
NoteStyle
Per-note styling configuration.
[Serializable]
public class NoteStyle
{
public string ThemeId; // Theme to apply, or empty for custom
public string AccentHex; // Accent/border color
public string CardBgHex; // Card background color
public string TitleColorHex; // Title text color
public string ContentBgHex; // Content area background
public string ContentColorHex; // Content text color
public int TitleSize; // Title font size in pixels (default: 16)
public int ContentSize; // Content font size in pixels (default: 12)
public bool TitleBold; // Bold title text
public bool TitleItalic; // Italic title text
public bool ContentBold; // Bold content text
public bool ContentItalic; // Italic content text
public int AccentWidth; // Left border width in pixels (default: 4)
public int Padding; // Internal padding in pixels (default: 12)
public void Clear(); // Resets all properties to empty/default
}
NoteTheme
Reusable theme definition.
[Serializable]
public class NoteTheme
{
public string Id; // Unique GUID identifier
public string Name; // Display name
public string Description; // Optional description
public string Author; // Theme creator
public string Created; // ISO date string
public string AccentHex; // Accent/border color
public string CardBgHex; // Card background color
public string TitleColorHex; // Title text color
public string ContentBgHex; // Content area background
public string ContentColorHex; // Content text color
public int TitleSize; // Title font size
public int ContentSize; // Content font size
public bool TitleBold; // Bold title
public bool TitleItalic; // Italic title
public bool ContentBold; // Bold content
public bool ContentItalic; // Italic content
public int AccentWidth; // Left border width
public int Padding; // Internal padding
public bool IsBuiltIn; // True = protected from deletion
public NoteTheme DeepCopy(); // Creates independent copy with new ID
}
Attachment
Represents a linked Unity asset.
[Serializable]
public class Attachment
{
public string Name; // Asset name
public string Path; // Asset path (e.g., "Assets/Scripts/Player.cs")
public string GUID; // Unity asset GUID for path recovery
public string Type; // Asset type name (e.g., "MonoScript", "Texture2D")
}
NotesData
Root container for notes storage.
[Serializable]
public class NotesData
{
public List<Note> Notes; // All notes
public string LastOpenedId; // ID of last active note
public int Version; // Data format version (current: 3)
public string DefaultThemeId; // Default theme for new notes
}
ThemesData
Root container for themes storage.
[Serializable]
public class ThemesData
{
public List<NoteTheme> Themes; // All themes
public string DefaultThemeId; // Global default theme
}
CategoriesData
Root container for categories storage.
[Serializable]
public class CategoriesData
{
public List<string> Categories; // Category names
}
Icons
IconInfo
public class IconInfo
{
public string Id; // Unique identifier
public string Emoji; // Display emoji
public string Name; // Human-readable name
}
Available Icons
| ID | Emoji | Name |
|---|
note | 📝 | Note |
idea | 💡 | Idea |
star | ⭐ | Important |
bookmark | 🔖 | Bookmark |
flag | 🚩 | Flag |
bug | 🐛 | Bug |
fix | 🔧 | Fix |
code | 💻 | Code |
gear | ⚙️ | Settings |
rocket | 🚀 | Deploy |
question | ❓ | Question |
check | ✅ | Done |
warning | ⚠️ | Warning |
error | ❌ | Error |
clock | 🕐 | Pending |
link | 🔗 | Link |
file | 📄 | File |
folder | 📁 | Folder |
image | 🖼️ | Image |
audio | 🔊 | Audio |
chat | 💬 | Chat |
email | 📧 | Email |
user | 👤 | Person |
team | 👥 | Team |
high | 🔴 | High Priority |
medium | 🟡 | Medium Priority |
low | 🟢 | Low Priority |
Colors
Preset Colors
12 preset accent colors (index 0-11):
| Index | Color | RGB |
|---|
| 0 | Yellow | (0.95, 0.85, 0.35) |
| 1 | Orange | (0.95, 0.65, 0.25) |
| 2 | Red | (0.95, 0.45, 0.45) |
| 3 | Pink | (0.95, 0.55, 0.75) |
| 4 | Purple | (0.75, 0.55, 0.95) |
| 5 | Indigo | (0.45, 0.55, 0.95) |
| 6 | Cyan | (0.35, 0.75, 0.95) |
| 7 | Teal | (0.35, 0.85, 0.65) |
| 8 | Green | (0.45, 0.85, 0.45) |
| 9 | Lime | (0.65, 0.75, 0.45) |
| 10 | Gray | (0.55, 0.55, 0.60) |
| 11 | White | (0.85, 0.85, 0.85) |
File Paths
Constants
private const string DATA_PATH = "ProjectSettings/A2K_Notes.json";
private const string CATEGORIES_PATH = "ProjectSettings/A2K_NotesCategories.json";
private const string THEMES_PATH = "ProjectSettings/A2K_NotesThemes.json";
private const string PREFS_PREFIX = "A2K_QuickNotes_";
EditorPrefs Keys
| Key | Type | Purpose |
|---|
A2K_QuickNotes_ShowTags | bool | Tags section expanded |
A2K_QuickNotes_ShowArchived | bool | Show archived notes |
CSS Classes
Note Card
| Class | Applied To |
|---|
.note-card | Card container |
.note-card-active | Currently selected card |
.note-card-selected | Multi-selected card |
.accent-bar | Left color bar |
.card-content | Main content area |
.card-top-row | Icon, title, indicators row |
.card-bottom-row | Category, date row |
.card-title | Note title label |
.card-preview | Content preview label |
.card-indicators | Tag/attachment/pin icons |
Editor Panel
| Class | Applied To |
|---|
.editor-toolbar | Top toolbar |
.editor-accent-bar | Left accent bar |
.editor-content-section | Main editor area |
.title-field | Title input |
.content-field | Content textarea |
.style-sidebar | Right style panel |
Buttons
| Class | Applied To |
|---|
.icon-button | Icon-only buttons |
.icon-button-active | Active state |
.small-button | Compact buttons |
.btn-accent | Accent color button |
.btn-green | Green action button |
.btn-yellow | Yellow warning button |
.btn-red | Red danger button |
Utility
| Class | Applied To |
|---|
.hidden | Display: none |
.tag-chip | Tag badges |
.color-swatch | Color picker buttons |
.color-swatch-selected | Selected color |
CSS Variables
Defined in :root for theming:
:root {
--bg-dark: #1A1A1C;
--bg-med: #242426;
--bg-light: #2D2D2F;
--bg-lighter: #353538;
--border: #3A3A3D;
--border-light: #4A4A4D;
--accent: #F5D923;
--accent-hover: #FFE44D;
--green: #4CAF50;
--green-hover: #66BB6A;
--yellow: #FFC107;
--yellow-hover: #FFCA28;
--red: #F44336;
--red-hover: #EF5350;
--text: #E8E8E8;
--text-dim: #AAAAAA;
--text-muted: #666666;
--selection: #3D5A80;
}
Built-in Themes
| ID | Name | Accent | Card BG | Content BG |
|---|
builtin_default | Default Dark | #F5D923 | #2D2D2F | #1A1A1C |
builtin_ocean | Ocean | #00D4FF | #0A2540 | #061830 |
builtin_forest | Forest | #4CAF50 | #1B2E1B | #0D1A0D |
builtin_sunset | Sunset | #FF7043 | #3E2723 | #1A0E0A |
builtin_lavender | Lavender | #9C27B0 | #2A1B2E | #1A0D1E |
JSON Schema
Notes Export Format
{
"Notes": [
{
"Id": "guid-string",
"Title": "Note Title",
"Content": "Note content...",
"ColorIndex": 0,
"ColorHex": "",
"IconId": "note",
"Category": "Development",
"Tags": ["tag1", "tag2"],
"Attachments": [
{
"Name": "Script",
"Path": "Assets/Scripts/Script.cs",
"GUID": "asset-guid",
"Type": "MonoScript"
}
],
"LinkedTaskId": "",
"Created": "2024-01-15 10:30",
"Modified": "2024-01-15 14:22",
"Pinned": false,
"Archived": false,
"SortOrder": 0,
"Style": {
"ThemeId": "",
"AccentHex": "",
"CardBgHex": "",
"TitleColorHex": "",
"ContentBgHex": "",
"ContentColorHex": "",
"TitleSize": 16,
"ContentSize": 12,
"TitleBold": true,
"TitleItalic": false,
"ContentBold": false,
"ContentItalic": false,
"AccentWidth": 4,
"Padding": 12
},
"UseCustomStyle": false
}
],
"LastOpenedId": "guid-string",
"Version": 3,
"DefaultThemeId": ""
}
Quick Reference Card
A single-page reference for Quick Notes Pro.
Keyboard Shortcuts
| Key | Action |
|---|
Ctrl+N | New note |
Ctrl+A | Select all |
Ctrl+S | Save |
Ctrl+Z | Undo |
Delete | Delete selected |
Escape | Clear selection |
Enter | Quick-add note |
Mouse Actions
| Action | Result |
|---|
| Click note | Select and edit |
| Ctrl+Click | Toggle multi-select |
| Shift+Click | Range select |
| Right-click | Context menu |
| Drag note | Reorder |
| Drag asset | Attach to note |
Icons
📝 Note 💡 Idea ⭐ Important 🔖 Bookmark
🚩 Flag 🐛 Bug 🔧 Fix 💻 Code
⚙️ Settings 🚀 Deploy ❓ Question ✅ Done
⚠️ Warning ❌ Error 🕐 Pending 🔗 Link
📄 File 📁 Folder 🖼️ Image 🔊 Audio
💬 Chat 📧 Email 👤 Person 👥 Team
🔴 High 🟡 Medium 🟢 Low
Styling Modes
| Mode | Description |
|---|
| Default | USS base styles |
| Theme | Apply saved theme |
| Custom | Per-note colors |
Built-in Themes
| Theme | Accent |
|---|
| Default Dark | 🟡 Yellow |
| Ocean | 🔵 Cyan |
| Forest | 🟢 Green |
| Sunset | 🟠 Orange |
| Lavender | 🟣 Purple |
Data Files
ProjectSettings/
├── A2K_Notes.json # Notes
├── A2K_NotesCategories.json # Categories
└── A2K_NotesThemes.json # Themes
Menu Path
Tools → A2K → Quick Notes (UI Toolkit)
Default Categories
- General
- Development
- Art
- Audio
- Design
- QA
Color Palette
🟡 Yellow 🟠 Orange 🔴 Red 💗 Pink
🟣 Purple 🔵 Indigo 🔷 Cyan 🩵 Teal
🟢 Green 🫛 Lime ⬜ Gray ⚪ White
Quick Tips
- Quick Add — Type in header field, press Enter
- Pin — Click ★ to keep notes at top
- Archive — Hide without deleting
- Search — Matches title, content, and tags
- Themes — Click 🎨 in header for Theme Manager
- Export — Menu → Options → Export Notes