UdonSharp notes for VRChat world creation. All 21 articles are organized as a learning path you can follow in order, from fundamentals to advanced topics.
A scripting language for adding interactive features to VRChat worlds. An introductory guide covering the relationship with Udon VM, how it works, and what you can achieve.
Step-by-step guide for setting up an UdonSharp project using VRChat Creator Companion (VCC). From Unity installation to creating an interactive object in a practical format.
A comprehensive list of C# features available in UdonSharp development and limitations imposed by the Udon VM. Covering variables, control structures, methods, and unsupported features like generics and interfaces.
The event system that controls script execution timing. Learn the roles and implementation patterns of major lifecycle events including Start, Update, and Interact.
Input detection methods for player interaction with worlds. Learn implementation patterns for Interact events, VRChat Input Events, and keyboard/VR controller input.
The fundamentals of UdonSharp programming: variables and data types. From basic types (int, float, bool, string) to Unity types (Vector3, GameObject, Transform) explained with examples.
A list and usage guide for attributes available in UdonSharp. Synchronization with [UdonSynced], Inspector organization with [Header][Tooltip][Range], and improving development efficiency.
Code reuse and inter-script communication methods. Learn method definitions, SendCustomEvent, SendCustomNetworkEvent, and delayed execution (SendCustomEventDelayedSeconds).
The fundamentals of network synchronization at the core of VRChat multiplayer. Object ownership, [UdonSynced] variables, and the mechanism of data sharing through RequestSerialization.
Events for detecting player state changes in worlds. Implementation methods for OnPlayerJoined/Left, OnPlayerRespawn, OnAvatarChanged, and pickup-related events.
A practical example of automatically returning players who fall through gaps in your world to a safe point. A beginner-friendly guide to a fall-recovery gimmick built with just a VRC Scene Descriptor spawn setup and an out-of-bounds trigger plus TeleportTo.
A collection of button implementation patterns for world creation. How to create local buttons, toggle switches synced across all players, and one-time-only buttons.
Object pooling to prevent performance degradation from frequent object creation/destruction. How to use the VRCObjectPool component and implementation patterns.
Implementing items that players can pick up and manipulate. VRCPickup component, OnPickup/OnDrop/OnPickupUseDown events, and state synchronization methods.
Implementing functionality to seat players at fixed positions. VRCStation component setup, enter/exit events, and application to vehicles.
Implementation methods for doors as fundamental dynamic objects. Automatic doors that open when approached, manual doors that open/close on click, animation integration and network synchronization.
Implementation of teleporters and portals for comfortable world navigation. From basic teleportation using VRCPlayerApi.TeleportTo to portals with synced visuals.
Essential mirror control methods for VRChat worlds. VRCMirrorReflection on/off toggle, Reflect Layers, and quality preset implementation via resolution.
How to use arrays for efficiently managing multiple data. Alternative implementations for List and Dictionary in an environment without generics support, and considerations for [UdonSynced] arrays.
Problem-solving and quality improvement techniques in UdonSharp development. Best practices for utilizing Debug.Log, multiplayer testing with ClientSim, and creating debug UIs.
Optimization techniques for comfortable VRChat worlds. Drawbacks of Update overuse, event-driven design, object pooling, and methods for efficient network synchronization.