Skip to main content

VRCFury for Worlds

VRCFury for Worlds is included in the normal VRCFury VCC package. There is no separate "worlds edition" to install.

If your project is a VRChat World project with Udon available, VRCFury adds a set of world-specific tools:

UdonDI

UdonDI is a simple dependency injection system for world Udon behaviours.

It uses two VRCFury components:

  • UdonDI - Register Component (VRCFury)
  • UdonDI - Inject Field (VRCFury)

How registration works

Add UdonDI - Register Component to the object that owns the component you want to expose.

When VRCFury processes the scene, it registers every non-editor-only component on that same GameObject under the optional Registered ID.

Notes:

  • The ID is optional if you only expect one matching service.
  • Matching is by both ID and assignable type.
  • GameObject injection is supported as a convenience.
  • Array fields are supported and receive every matching service.

How injection works

Add UdonDI - Inject Field to the object that contains the target field.

VRCFury then:

  • Looks for Udon and U# components on that same object
  • Finds a field with the exact name you entered
  • Injects the matching registered component during play mode setup or build processing

If no matching field exists, no matching service exists, or a non-array field has multiple matches, VRCFury fails the processing step with a clear error.

Example

If you want every video player prefab to receive a reference to one shared access-control behaviour:

  1. Put UdonDI - Register Component on the access-control object.
  2. Put UdonDI - Inject Field on the video player object or prefab.
  3. Set Field on this object to inject into to the field name on the Udon behaviour (probably accessControl)

That field will be filled automatically when VRCFury runs.

InjectUnityAction

This feature lets UdonSharp methods automatically subscribe to UnityEvents on the same GameObject.

Example:

using com.vrcfury.udon.Attributes;
using UnityEngine;
using UdonSharp;

public class MyButtonHandler : UdonSharpBehaviour {
[InjectUnityAction("onClick")]
public void _OnClick() {
Debug.Log("The button on this object was clicked!");
}
}

If that behaviour is on the same GameObject as a Button, VRCFury finds the onClick UnityEvent and adds a persistent call that forwards to the Udon backing behaviour through SendCustomEvent.

Rules:

  • The method must be void and take no arguments.
  • The UnityEvent name must match exactly.
  • The event must exist on another component on the same GameObject.

This is useful for buttons, toggles, sliders, and similar Unity UI or component events where manual wiring would otherwise be repetitive.

SPS for Worlds

World projects can use the normal VRCFury SPS authoring workflow:

  • Tools > VRCFury > SPS > Create Plug
  • Tools > VRCFury > SPS > Create Socket

During processing, VRCFury bakes world SPS components into the build copy of the scene and writes any generated material assets into VRCFury-managed temporary storage automatically.

What is supported:

  • SPS plugs in worlds
  • SPS sockets in worlds
  • Current SPS2 deformation behavior, including tags, guided paths, radius offset, and legacy compatibility settings

What is not currently part of the worlds pipeline:

  • Depth animations
  • Udon event hooks for depth

Udon Cleaner

The Udon Cleaner is OPTIONAL.

Enable it here:

  • Tools > VRCFury > Settings > Enable Udon Cleaner (Alpha)

Before enabling it:

  • Back up the project first
  • Do not enable it in a project you use to distribute Unity packages unless you understand the compatibility tradeoff
  • If you ever want to remove it, disable the menu item first instead of uninstalling VRCFury

What it changes

When enabled, the Udon Cleaner removes most of the generated Udon asset noise that normally leaks into Assets, scenes, prefabs, and prefab overrides.

Specifically, it:

  • Moves UdonSharp .asset program assets out of your normal Assets tree into VRCFury-managed temporary storage
  • Does the same for SerializedUdonPrograms
  • Clears generated programSource and serializedProgramAsset references before scenes and prefabs are saved
  • Removes junk prefab overrides created only by Udon/UdonSharp bookkeeping
  • Clears generated DynamicMaterials and DynamicPrefabs entries from VRC_SceneDescriptor before save
  • Stops several Udon/UdonSharp editor hooks from constantly rewriting the scene just because you opened, saved, or inspected something

The practical result is:

  • Far less random scene churn
  • Far fewer meaningless prefab overrides
  • Cleaner git history
  • A much more usable prefab overrides dropdown

Compatibility warning

Projects exported as Unity packages while the Udon Cleaner is enabled are only safe to import into projects that also use the Udon Cleaner.

If you distribute packages to other people (who may not use Udon Cleaner), the safest workflow is to keep the cleaner disabled.

Removing the cleaner

To remove it:

  1. Turn off Tools > VRCFury > Settings > Enable Udon Cleaner (Alpha).
  2. Let VRCFury reload scripts and run its uninstall/repair step.
  3. Wait for it to restore the normal Udon asset layout and repair prefabs and scenes.

VRCFury's uninstall path explicitly reorganizes program assets back to the vanilla layout and repairs prefabs, open scenes, and unloaded scenes.

Do not remove VRCFury without disabling Udon Cleaner first -- the restore process will not happen and things will be broken.

Automatic Fixes

Just like for Avatar projects, VRCFury patches many World-related editor issues, documented on the Automatic Fixes page.