unity-vrc-udon-sharp

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

UdonSharp Skill

UdonSharp技能

Why This Skill Matters

本技能的重要性

UdonSharp looks like regular Unity C# scripting — until you hit its hidden walls. Many standard C# features (
List<T>
,
async/await
,
try/catch
, LINQ, generics) silently fail or refuse to compile in Udon. Networking is even more treacherous: modifying a synced variable without ownership produces no error — it just does nothing. Forgetting
RequestSerialization
means your state changes never leave your machine. Standard single-player local testing gives zero signal about these networking bugs because there is only one player.
Every rule in this skill exists because UdonSharp's default behavior is to fail silently. Read the Rules before generating any code.
UdonSharp看起来和常规Unity C#脚本完全一样——直到你撞上它的隐藏限制。许多标准C#特性(
List<T>
async/await
try/catch
、LINQ、泛型)在Udon中会静默失败或拒绝编译。网络部分则更加棘手:在没有所有权的情况下修改同步变量不会产生任何错误——只是完全不起作用。忘记调用
RequestSerialization
意味着你的状态变更永远不会同步到其他玩家的设备。标准的单人本地测试无法发现这些网络bug,因为测试环境中只有一个玩家。
本技能中的每一条规则都源于UdonSharp的默认行为是静默失败。在生成任何代码之前,请先阅读这些规则。

Core Principles

核心原则

  1. Constraints First — Assume standard C# features are blocked until verified. Check
    udonsharp-constraints.md
    before using any API.
  2. Ownership Before Mutation — Only the owner of an object can modify its synced variables. Always
    SetOwner
    → modify →
    RequestSerialization
    .
  3. Late Joiner Correctness — State must be correct for players who join after events have occurred. Design for re-serialization, not just live updates.
  4. Sync Minimization — Every synced variable costs bandwidth (see data budget in
    udonsharp-sync-selection.md
    ). Derive what you can locally; sync only the source of truth.
  5. Event-Driven, Not Polling — Use
    OnDeserialization
    ,
    [FieldChangeCallback]
    , and
    SendCustomEvent
    instead of checking state in
    Update()
    .
  1. 优先考虑限制——默认假设标准C#特性被禁用,直到验证可用。使用任何API前请查看
    udonsharp-constraints.md
  2. 先获取所有权再修改——只有对象的所有者才能修改其同步变量。请遵循
    SetOwner
    → 修改 →
    RequestSerialization
    的流程。
  3. 迟加入玩家兼容性——对于在事件发生后加入的玩家,状态必须保持正确。设计时要考虑重新序列化,而不仅仅是实时更新。
  4. 最小化同步——每个同步变量都会消耗带宽(详见
    udonsharp-sync-selection.md
    中的数据预算)。尽可能在本地推导数据;仅同步真相源。
  5. 事件驱动而非轮询——使用
    OnDeserialization
    [FieldChangeCallback]
    SendCustomEvent
    ,而非在
    Update()
    中检查状态。

Overview

概述

SDK Coverage: 3.7.1 - 3.10.2 (as of March 2026)
SDK支持范围:3.7.1 - 3.10.2(截至2026年3月)

Rules (Constraints & Networking)

规则(限制与网络)

Compile constraints and networking rules are defined in always-loaded Rules:
Rule FileContents
rules/udonsharp-constraints.md
Blocked features, code generation rules, attributes, syncable types
rules/udonsharp-networking.md
Ownership, sync modes, RequestSerialization, NetworkCallable
rules/udonsharp-sync-selection.md
Sync pattern selection, data budget, minimization principles
After installation, place these in the agent's rules directory for automatic loading.
编译限制和网络规则定义在始终加载的规则中:
规则文件内容
rules/udonsharp-constraints.md
禁用特性、代码生成规则、属性、可同步类型
rules/udonsharp-networking.md
所有权、同步模式、RequestSerialization、NetworkCallable
rules/udonsharp-sync-selection.md
同步模式选择、数据预算、最小化原则
安装完成后,请将这些文件放置在Agent的规则目录中以实现自动加载。

SDK Versions

SDK版本

SDK VersionKey Features
3.7.1Added
StringBuilder
,
RegularExpressions
,
System.Random
3.7.4Added Persistence API (PlayerData/PlayerObject)
3.7.6Multi-platform Build & Publish (PC + Android simultaneously)
3.8.0PhysBone dependency sorting, Drone API (VRCDroneInteractable)
3.8.1
[NetworkCallable]
attribute, parameterized network events,
NetworkEventTarget.Others
/
.Self
3.9.0Camera Dolly API, Auto Hold pickup simplification
3.10.0VRChat Dynamics for Worlds (PhysBones, Contacts, VRC Constraints)
3.10.1Bug fixes and stability improvements
3.10.2EventTiming extensions, PhysBones fixes, shader time globals
Note: SDK versions below 3.9.0 are deprecated as of December 2, 2025. New world uploads are no longer possible.
SDK版本关键特性
3.7.1新增
StringBuilder
RegularExpressions
System.Random
3.7.4新增持久化API(PlayerData/PlayerObject)
3.7.6多平台构建与发布(同时支持PC和Android)
3.8.0PhysBone依赖排序、Drone API(VRCDroneInteractable)
3.8.1新增**
[NetworkCallable]
**属性、带参数的网络事件、
NetworkEventTarget.Others
/
.Self
3.9.0相机轨道API、自动拾取简化
3.10.0面向VRChat世界的动力学系统(PhysBones、Contacts、VRC Constraints)
3.10.1Bug修复与稳定性提升
3.10.2EventTiming扩展、PhysBones修复、着色器时间全局变量
注意:截至2025年12月2日,3.9.0以下的SDK版本已被弃用。不再支持上传新的世界。

Web Search

网页搜索

When to Search

何时搜索

ScenarioAction
New SDK version supportCheck official docs for latest API
"Is this possible?" questionsVerify feasibility in official docs
Unknown errorsRefer to official troubleshooting
New feature usageRetrieve latest code examples
场景操作
新SDK版本支持查看官方文档获取最新API
“这是否可行?”类问题在官方文档中验证可行性
未知错误参考官方故障排除指南
新特性使用获取最新代码示例

Search Strategy

搜索策略

undefined
undefined

Official documentation search

官方文档搜索

WebSearch: "feature or API name site:creators.vrchat.com"
WebSearch: "feature or API name site:creators.vrchat.com"

UdonSharp API reference

UdonSharp API参考

WebSearch: "API name site:udonsharp.docs.vrchat.com"
WebSearch: "API name site:udonsharp.docs.vrchat.com"

Error investigation: VRChat official forums

错误排查:VRChat官方论坛

WebSearch: "error message site:ask.vrchat.com"
WebSearch: "error message site:ask.vrchat.com"

Error investigation: Canny (bug reports / known issues)

错误排查:Canny(bug报告/已知问题)

WebSearch: "error message site:feedback.vrchat.com"
WebSearch: "error message site:feedback.vrchat.com"

Error investigation: GitHub Issues

错误排查:GitHub Issues

WebSearch: "error message UdonSharp site:github.com"
undefined
WebSearch: "error message UdonSharp site:github.com"
undefined

Official Resources

官方资源

ResourceURLContents
VRChat Creatorscreators.vrchat.com/worlds/udon/Official Udon / SDK documentation
UdonSharp Docsudonsharp.docs.vrchat.comUdonSharp API reference
VRChat Forumsask.vrchat.comQ&A, solutions
VRChat Cannyfeedback.vrchat.comBug reports, known issues
GitHubgithub.com/vrchat-communitySamples and libraries
资源URL内容
VRChat创作者平台creators.vrchat.com/worlds/udon/官方Udon/SDK文档
UdonSharp文档udonsharp.docs.vrchat.comUdonSharp API参考
VRChat论坛ask.vrchat.com问答、解决方案
VRChat Cannyfeedback.vrchat.comBug报告、已知问题
GitHubgithub.com/vrchat-community示例与库

References

参考资料

FileContentsSearch Hints
constraints.md
C# feature availability in UdonSharp; blocked features; syncable types; attributesList, async, try/catch, LINQ, generics, DataList, DataDictionary
networking.md
Ownership model, sync modes, RequestSerialization, NetworkCallable, network events, data limitsUdonSynced, SetOwner, BehaviourSyncMode, FieldChangeCallback, OnDeserialization, master leave, ownership cascade
networking-bandwidth.md
Bandwidth throttling, bit packing, synced data size examples, debugging, owner-centric architectureIsClogged, bandwidth, throttle, bit packing, data budget, IsMaster
networking-antipatterns.md
6 anti-patterns to avoid; 5 advanced sync patterns with template linksanti-pattern, race condition, ownership fight, late-joiner, PackedStateSync, BatchedSync
persistence.md
PlayerData/PlayerObject API (SDK 3.7.4+); per-player save dataPlayerData, PlayerObject, OnPlayerRestored, SetInt, TryGetInt
dynamics.md
PhysBones, Contacts, VRC Constraints (SDK 3.10.0+)PhysBone, ContactReceiver, ContactSender, VRCConstraint, OnContactEnter
patterns-core.md
Initialization, interaction, player detection, timer, audio, pickup, animation, UI, teleportation, lazy init guardInteract, OnEnable, Initialize, AudioSource, VRCPickup, Animator, UI, TeleportTo
patterns-networking.md
Object pooling, NetworkCallable patterns, persistence integration, dynamics integration, synced game state, delayed event debouncepool, MasterManagedPlayerPool, NetworkCallable, DamageReceiver, game state, debounce, state machine
patterns-performance.md
Partial class pattern, update handler, PostLateUpdate, spatial query, platform optimizationUpdate, PostLateUpdate, Bounds, AnimatorHash, performance, mobile, PC
patterns-utilities.md
Array helpers (List alternatives), event bus, GameObject relay communicationArrayUtils, EventBus, relay, subscriber, FindIndex, ShuffleArray
web-loading.md
String/Image downloading, VRCJson, Trusted URLsVRCStringDownloader, VRCImageDownloader, VRCJson, DataDictionary, VRCUrl
api.md
VRCPlayerApi, Networking, enums referenceGetPlayers, playerId, isMaster, isLocal, GetPosition, SetVelocity, Drone, VRCDroneApi
events.md
All Udon events (including OnPlayerRestored, OnContactEnter)OnPlayerJoined, OnPlayerLeft, OnPlayerTriggerEnter, OnOwnershipTransferred
editor-scripting.md
Editor scripting and proxy systemUdonSharpEditor, UdonSharpBehaviourProxy, SerializedObject
sync-examples.md
Sync pattern examples (Local/Events/SyncedVars)Continuous, Manual, NoVariableSync, sync example
troubleshooting.md
Common errors and solutionsNullReference, compile error, sync not working, FieldChangeCallback
sdk-migration.md
SDK migration guide (3.7 to 3.10), version-by-version changes and checklistsmigration, deprecated, upgrade, 3.7, 3.8, 3.9, 3.10
文件内容搜索提示
constraints.md
UdonSharp中C#特性的可用性;禁用特性;可同步类型;属性List, async, try/catch, LINQ, 泛型, DataList, DataDictionary
networking.md
所有权模型、同步模式、RequestSerialization、NetworkCallable、网络事件、数据限制UdonSynced, SetOwner, BehaviourSyncMode, FieldChangeCallback, OnDeserialization, 主机离开, 所有权传递
networking-bandwidth.md
带宽限制、位打包、同步数据大小示例、调试、以所有者为中心的架构IsClogged, bandwidth, throttle, bit packing, data budget, IsMaster
networking-antipatterns.md
需避免的6种反模式;5种高级同步模式及模板链接anti-pattern, 竞态条件, 所有权争夺, 迟加入玩家, PackedStateSync, BatchedSync
persistence.md
PlayerData/PlayerObject API(SDK 3.7.4+);每个玩家的保存数据PlayerData, PlayerObject, OnPlayerRestored, SetInt, TryGetInt
dynamics.md
PhysBones、Contacts、VRC Constraints(SDK 3.10.0+)PhysBone, ContactReceiver, ContactSender, VRCConstraint, OnContactEnter
patterns-core.md
初始化、交互、玩家检测、计时器、音频、拾取、动画、UI、传送、延迟初始化守卫Interact, OnEnable, Initialize, AudioSource, VRCPickup, Animator, UI, TeleportTo
patterns-networking.md
对象池、NetworkCallable模式、持久化集成、动力学集成、同步游戏状态、延迟事件防抖pool, MasterManagedPlayerPool, NetworkCallable, DamageReceiver, game state, debounce, state machine
patterns-performance.md
分部类模式、更新处理器、PostLateUpdate、空间查询、平台优化Update, PostLateUpdate, Bounds, AnimatorHash, performance, mobile, PC
patterns-utilities.md
数组助手(List<T>替代方案)、事件总线、GameObject中继通信ArrayUtils, EventBus, relay, subscriber, FindIndex, ShuffleArray
web-loading.md
字符串/图片下载、VRCJson、可信URLVRCStringDownloader, VRCImageDownloader, VRCJson, DataDictionary, VRCUrl
api.md
VRCPlayerApi、Networking、枚举参考GetPlayers, playerId, isMaster, isLocal, GetPosition, SetVelocity, Drone, VRCDroneApi
events.md
所有Udon事件(包括OnPlayerRestored、OnContactEnter)OnPlayerJoined, OnPlayerLeft, OnPlayerTriggerEnter, OnOwnershipTransferred
editor-scripting.md
编辑器脚本与代理系统UdonSharpEditor, UdonSharpBehaviourProxy, SerializedObject
sync-examples.md
同步模式示例(本地/事件/同步变量)Continuous, Manual, NoVariableSync, sync example
troubleshooting.md
常见错误与解决方案NullReference, compile error, sync not working, FieldChangeCallback
sdk-migration.md
SDK迁移指南(3.7至3.10);版本间变更与检查清单migration, deprecated, upgrade, 3.7, 3.8, 3.9, 3.10

Templates (
assets/templates/
)

模板(
assets/templates/

TemplatePurpose
BasicInteraction.cs
Interactive object with
Interact()
handler
SyncedObject.cs
Network-synced object (Manual sync, ownership guard, late-joiner init flag)
PlayerSettings.cs
Per-player movement settings (walk/run/jump speed)
StateMachine.cs
State machine with synced state and transitions
DataPersistence.cs
PlayerData save/load with OnPlayerRestored (SDK 3.7.4+)
ContactReceiver.cs
Contact receiver for world-side collision detection (SDK 3.10.0+)
CustomInspector.cs
Custom editor inspector with UdonSharpEditor
MasterManagedPlayerPool.cs
Master-managed player object pool; FIFO ring buffer; OnPlayerJoined/Left; VerifyAssignments after master handoff
EventBus.cs
Subscriber list event bus (max 32 listeners); RegisterListener/UnregisterListener/RaiseEvent; in-place compaction
ArrayUtils.cs
List<T> alternatives: Add, Contains, AddUnique, Remove, RemoveAt, Insert for GameObject[]; FindIndex/ShuffleArray for int[]
UndoableGameManager.cs
History/undo sync with byte[] state history; NetworkCallable OwnerProcessMove/OwnerUndo/OwnerReset
PackedStateSync.cs
Pack 3 ints into one Vector3 UdonSynced field; OnPreSerialization/OnDeserialization
RateLimitedSync.cs
0.15s sync cooldown with _syncLocked/_changeCounter; _OnSyncUnlock callback
DualCopySync.cs
Local + synced copy with _dirty flag; strict OnPreSerialization/OnDeserialization separation
BatchedSync.cs
Idempotent ScheduleBatchedSync with 0.2s BatchDelay; _FlushBatch delayed callback
CloggedRetrySync.cs
Networking.IsClogged check; linear back-off (RetryDelay * retryCount); MaxRetries=5
模板用途
BasicInteraction.cs
带有
Interact()
处理器的交互对象
SyncedObject.cs
网络同步对象(手动同步、所有权守卫、迟加入玩家初始化标记)
PlayerSettings.cs
每个玩家的移动设置(行走/奔跑/跳跃速度)
StateMachine.cs
带有同步状态与转换的状态机
DataPersistence.cs
基于OnPlayerRestored的PlayerData保存/加载(SDK 3.7.4+)
ContactReceiver.cs
用于世界端碰撞检测的Contact接收器(SDK 3.10.0+)
CustomInspector.cs
带有UdonSharpEditor的自定义编辑器检视面板
MasterManagedPlayerPool.cs
主机管理的玩家对象池;FIFO环形缓冲区;OnPlayerJoined/Left;主机切换后验证分配
EventBus.cs
订阅者列表事件总线(最多32个监听器);RegisterListener/UnregisterListener/RaiseEvent;原地压缩
ArrayUtils.cs
List<T>替代方案:GameObject[]的Add、Contains、AddUnique、Remove、RemoveAt、Insert;int[]的FindIndex/ShuffleArray
UndoableGameManager.cs
基于byte[]状态历史的历史记录/撤销同步;NetworkCallable的OwnerProcessMove/OwnerUndo/OwnerReset
PackedStateSync.cs
将3个整数打包到一个Vector3类型的UdonSynced字段中;OnPreSerialization/OnDeserialization
RateLimitedSync.cs
0.15秒同步冷却,带有_syncLocked/_changeCounter;_OnSyncUnlock回调
DualCopySync.cs
本地+同步副本,带有_dirty标记;严格分离OnPreSerialization/OnDeserialization
BatchedSync.cs
幂等的ScheduleBatchedSync,带有0.2秒BatchDelay;_FlushBatch延迟回调
CloggedRetrySync.cs
Networking.IsClogged检查;线性退避(RetryDelay * retryCount);MaxRetries=5

Hooks

钩子

HookPlatformPurpose
validate-udonsharp.ps1
Windows (PowerShell)PostToolUse constraint validation
validate-udonsharp.sh
Linux/macOS (Bash)PostToolUse constraint validation
钩子平台用途
validate-udonsharp.ps1
Windows(PowerShell)工具使用后的约束验证
validate-udonsharp.sh
Linux/macOS(Bash)工具使用后的约束验证

Quick Reference

快速参考

  • CHEATSHEET.md
    - One-page quick reference
  • CHEATSHEET.md
    - 单页快速参考手册