SDK2 Migrator V0.2
Added 2022-10-20 01:00:07 +0000 UTCSupporters at $10 and above can download the updated migrator now.
With the original release of the SDK2 Migrator, the focus was mainly to convert VRC_Triggers. While this was enough for some worlds, anything that used other items allowed in SDK2 would not properly convert. With the V0.2 update to the migrator, almost ALL worlds should migrate! The migrator was tested and verified using my more complicated worlds, such as What a Legend, Climbing Trials The Depths, and even The Devouring! For a full list of what the migrator is capable of, check out the migration wiki page.
Migration Settings

A new settings window is now shown before migrating a project. In this window, you can change different migration settings as well as select which directories specifically you want to migrate. Selecting directories in the previous version required editing external text files, and was not user friendly at all. Along with migrating a project, there is now a button to remove all migration scripts from prefabs and scenes. This makes it easy to remove the migrator from the project, preventing "missing script" issues.
Standard Assets
Nearly all Standard Assets scripts will now be converted with the migrator. This means prefabs and complex systems using these scripts will now work in SDK3! For a full list of the specific scripts that will migrate, check the migration wiki.
- Cameras
- RollerBall
- ThirdPersonCharacter
- ParticleSystems
- Utility
- Aircraft
- Car

Unity Events
In the previous version of the migrator, Unity Events or UI events were ignored completely. SDK3 introduced a whitelist for these events, which meant most converted projects would need to manually remake UI menus and systems entirely. With this update, a new component is introduced called UIBehaviourProxy, which allows you to add to any object with a UIBehaviour and auto convert all UnityEvents to CyanTrigger. This will happen automatically during migration, but you can also use this manually with general UI menus.
Most UnityEvents will convert to CyanTrigger actions directly. Some will be handled specially to ensure proper behavior:
- StandardAssets Methods
- Button.Press
- SendMessage, SendMessageUpwards, and BroadcastMessage will only send the event to UdonBehaviours
- Animation.Sample will be converted to AnimationClip.SampleAnimation and will ignore the Animator or Animation component during runtime.

Animation Events
With Standard Assets now being properly migrated, Animation Events that call into them are also now migrated. Most cases are handled, but there are some limitations on what can be migrated properly. See the migration wiki for more details.
Legacy Animations (Experimental)
SDK3 does not support Legacy Animations at all. The Animation Component will be removed in any uploaded world. To help convert these, any Animation Component found will duplicate the legacy AnimationClip to non legacy, create an AnimatorController for this clip, and add an Animator component to the object. This does not work in all cases, for example when an object already had both Animation and Animator components.
VRC Components
Here are the VRChat SDK2 components that were not converted before but will now be converted in this update:
- VRC_AudioBank
- VRC_CombatSystem
- VRC_CustomRenderBehaviour
- VRC_PlayerAudioOverride
- VRC_SceneSmoothShift
- VRC_Station enter/exit trigger actions
VRC_Trigger Events and Action changes
- Support for actions with empty object list targeting itself
- OnCollision events looking for players properly split with OnPlayerCollision
- OnKeyUp and OnKeyDown now use CustomAction rather than creating update event
- SetComponentActive with Toggle now uses specific action instead of manually toggling for each object.
- Random now uses the new CyanTrigger.RandomEvent action and is easier to modify
- OnTimer is now one event instead of 4
- OnAvatarHit is now OnPlayerCollisionEnter and will no longer throw errors
- Spawned prefabs will now create a duplicate version in the scene, fixing issues where spawned objects don't work at all due to CyanTrigger not compiling. All Event broadcasts will be set to local due to limitations of Udon's SyncMode None. Previously scene spawned objects will still have the issue due to not being duplicated.
Other changes and fixes
- Support for either VCC or Unity package SDK
- No longer tries to migrate fbx files
- Script recompiling will abort migration instead of locking Unity
- Avatars will be ignored instead of locking Unity and breaking migration
- Invalid characters in event names will generate unique event names
- Fixed Animation Enabled state for proxy behaviors
- Fixed SendRPC for Avatar Pedestals breaking migration
- Fixed bug where broadcasts would fail for remote players if object was disabled