UdonSharp Guide
UdonSharp is one of the most practical ways to add custom logic to a VRChat world. This page is the overview guide for understanding what UdonSharp is, what kinds of problems it solves well, and where to start inside the current VRCreators catalog.
Start UdonSharp with small world interactions before building complex synced systems.
- Confirm the world project opens cleanly through Creator Companion.
- Build one local interaction before adding networking or ownership logic.
- Use prefab examples to learn patterns, then adapt them to your world.
UdonSharp runs inside VRChat's world scripting environment. Treat networking, ownership, and synced variables as platform behavior, not just normal Unity C#.
SDK, Udon, And UdonSharp In Plain English
If you are new, the naming can feel like three doors with the same handle. Use this simple split:
| Term | What it means for a world creator |
|---|---|
| VRChat SDK | The VRChat package layer that lets a Unity project create avatars and worlds for VRChat. Creator Companion is the usual way to install and manage it. |
| Udon | VRChat's scripting system for worlds. Udon scripts can work with scene objects, players, synced variables, and world interactions. |
| Udon Graph | The visual node-and-wire way to build Udon logic inside the VRChat SDK. It is useful for very small scripts or for creators who prefer a visual workflow. |
| UdonSharp | The C# authoring path for Udon. UdonSharp is included in the VRChat Worlds SDK and compiles C# scripts into Udon code. |
For this guide, the important part is simple: use Creator Companion to manage the project, use the Worlds SDK to make the world VRChat-ready, and use UdonSharp when the world needs custom interaction logic.
Playlist Companion
This page now also points to the matching beginner-world videos for the moment when a built scene needs actual logic instead of only layout and materials.
Starting with world scripting and interactions
Practical interaction follow-up: Pickupables and Physics - Create Your First VRChat World
What UdonSharp is
UdonSharp lets creators write VRChat world logic in a C#-style workflow that compiles into Udon behavior. In practice, that means you can build interactions, toggles, counters, doors, teleport systems, local utilities, and shared synced world features with a more approachable scripting model than raw node graphs alone.
What creators usually use it for
Common UdonSharp use cases include:
- simple buttons and toggles
- teleport and movement helpers
- synced doors, lights, and stateful world objects
- UI and player feedback systems
- mini-games and world interactions
- utility systems such as spawners, reset tools, and admin helpers
Best starting path
If you are new to UdonSharp, do not start with the biggest systems in the catalog. Start with a few small interactions that teach the fundamentals clearly.
- Read the UdonSharp Starter Examples Index.
- Build your first interactive button so
Interact()and inspector references make sense. - Build one local interaction such as Basic Teleport Pad.
- Add one shared interaction such as Global Toggle Switch (Synced).
- Move into a practical helper such as Object Reset Button or Pickup Respawn Zone.
If the next step involves shared state, read Udon Networking Decision Guide before adding synced variables. If the value should survive after a player leaves, read VRChat Persistence, PlayerData, And PlayerObjects before building the save system.
Suggested prefab routes
Use these routes as the clearest first paths through the current catalog:
Interaction systems
Networking systems
UI and feedback
When to use UdonSharp
UdonSharp is a strong fit when:
- your world needs repeatable interaction logic
- players need clear shared state
- you want reusable world utilities
- you need more control than static scene setup can provide
It is usually not the first thing to optimize if your world layout, lighting, or core workflow are still unstable.
Help! Should I start with a big synced system?
No. Start with a small local interaction, then add one synced example once you understand how the behavior works without networking.
Help! My UdonSharp script compiles but does not work in VRChat.
Check the Unity Console, object references, ownership assumptions, and whether the behavior depends on editor-only Unity features that do not run in VRChat.
Help! When do I need synced variables?
Use synced variables for state that players need to share and keep over time. Use local-only logic for visual feedback or effects that do not need shared state.
Related learning path
- VRChat World Creation Guide
- Add Your First Interactive Button
- VRChat Prefab Hub
- Udon Documentation
- Optimization Guide