World/Udon Bugs & Feature Requests

Post about current World or Udon bugs feature requests. One item per post!
Non-constructive and off-topic posts will be moved or deleted.
Calling .SetAvatarAudioFarRadius(0) in OnPlayerJoined() cannot be restored later
If an avatar of a remote user is muted by calling VRCPlayerApi.SetAvatarAudioFarRadius(0) during OnPlayerJoined(), you cannot restore that avatar audio later by calling VRCPlayerApi.SetAvatarAudioFarRadius(40) under certain conditions. The avatar audio stays muted for you. The remote user can even disable and enable the audio toggle again, but it will still not be audible to you. Contrary to that, if the user joins and you don't call .SetAvatarAudioFarRadius(0) during OnPlayerJoined(), you can always toggle their audio on and off later without any issues. The issue also depends on the avatar setup: if the avatar audio is manually toggled via an animation after joining the world (e.g. a VRCFury toggle), the audio will never play, even if that animation is toggled again after unmuting the avatar. if the avatar audio is always-on, the audio behaves as expected, there is no issue. Avatars for testing: (VRCFury toggle) -> Bug happens https://vrchat.com/home/avatar/avtr_8897aa55-4877-4aac-bac2-1e3280e950f4 (OnLoad audio) -> Works fine https://vrchat.com/home/avatar/avtr_e77f5414-63b3-4d1b-aa7a-4b25cd299d48 World for testing: https://vrchat.com/home/world/wrld_717f7988-3503-4616-90b5-9d492d043b87/info Attached is the only script that is in the world and a screenshot of the decompiled VRCFury toggle. How to replicate: Join the world https://vrchat.com/home/world/wrld_717f7988-3503-4616-90b5-9d492d043b87/info Let a remote user with that avatar join ( https://vrchat.com/home/avatar/avtr_8897aa55-4877-4aac-bac2-1e3280e950f4 ) Let that user toggle their avatar audio on (via the expression menu) confirm that you can toggle their audio on/off with the button in the world toggle their avatar audio off with the button in the world let them rejoin let them toggle their avatar audio on (via the expression menu) confirm that you cannot hear their audio if you click the button in the world confirm that you cannot hear their audio, even if they toggle it off and on again (via the expression menu)
0
·
Bug Reports
UdonSharpBehaviour throws ArgumentNullException during PrefabStage autosave when Unity pseudo-null object is serialized
Environment: Unity version: 2022.3.22f1 VRChat SDK Worlds: 3.10.3 VRChat SDK Base: 3.10.3 UdonSharp included with SDK Project uses Prefab Mode / PrefabStage with UdonSharpBehaviour components YamaPlayer package present: net.kwxxx.yama-stream 1.5.18 Observed: When opening or editing prefabs containing UdonSharpBehaviour components in Prefab Mode, Unity logs repeated ArgumentNullException errors from OdinSerializer UnitySerializationUtility. Error: ArgumentNullException: Value cannot be null. Parameter name: unityObject VRC.Udon.Serialization.OdinSerializer.UnitySerializationUtility.SerializeUnityObject(...) UdonSharp.UdonSharpBehaviour.UnityEngine.ISerializationCallbackReceiver.OnBeforeSerialize() and similarly: UnitySerializationUtility.DeserializeUnityObject(...) UdonSharp.UdonSharpBehaviour.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize() Trigger: Open a prefab containing UdonSharpBehaviour in Prefab Mode Move a child object or let PrefabStage autosave run Errors repeat, sometimes dozens/hundreds per save Expected: PrefabStage autosave should not throw if a Unity pseudo-null UdonSharpBehaviour or serialized target is encountered. It should skip invalid objects or handle UnityEngine.Object pseudo-null safely. Additional finding: For diagnosis only, I temporarily tested a local guard around the SDK serialization path. The test indicated that the affected object was not a normal C# null reference, but behaved as null through Unity's overloaded UnityEngine.Object null comparison. With that guard in place, the exception stopped. I am not using this as a permanent workaround and do not intend to publish content with a modified SDK. This observation is included only to help identify the likely failure path. Additional observation: I have encountered this issue twice. In both cases, once the issue started occurring in the project, checking out older repository commits did not reliably make the issue disappear. This suggests that the trigger may involve Unity Library/cache/generated SDK state or some project-local serialized state, not only the currently checked out asset files.
2
·
Bug Reports
·
tracked
Vector "Scale" Has No Effect
The Scale method on Vector classes is intended to scale each component of a vector by the respective component of another vector, and apply the result to the vector whose method was called. This method does not seem to be functioning in Udon. This issue affects all Vector types. Below is a code snippet demonstrating the issue, along with the expected and actual log outputs. Version info: Unity 2022.3.22f1 VRChat SDK - Base 3.10.3 VRChat SDK - Worlds 3.10.3 Vector3Scale.cs: void Start() { var v2ScaleTest = new Vector2(1, 2); v2ScaleTest.Scale(new Vector2(10, 20)); Debug.Log($"Vector2(1, 2, 3).Scale(10, 20, 30) = {v2ScaleTest}"); var v2IntScaleTest = new Vector2Int(1, 2); v2IntScaleTest.Scale(new Vector2Int(10, 20)); Debug.Log($"Vector2Int(1, 2, 3).Scale(10, 20, 30) = {v2IntScaleTest}"); var v3ScaleTest = new Vector3(1, 2, 3); v3ScaleTest.Scale(new Vector3(10, 20, 30)); Debug.Log($"Vector3(1, 2, 3).Scale(10, 20, 30) = {v3ScaleTest}"); var v3IntScaleTest = new Vector3Int(1, 2, 3); v3IntScaleTest.Scale(new Vector3Int(10, 20, 30)); Debug.Log($"Vector3Int(1, 2, 3).Scale(10, 20, 30) = {v3IntScaleTest}"); var v4ScaleTest = new Vector4(1, 2, 3, 4); v4ScaleTest.Scale(new Vector4(10, 20, 30, 40)); Debug.Log($"Vector4(1, 2, 3, 4).Scale(10, 20, 30, 40) = {v4ScaleTest}"); } Output when executed as C#: Vector2(1, 2, 3).Scale(10, 20, 30) = (10.00, 40.00) Vector2Int(1, 2, 3).Scale(10, 20, 30) = (10, 40) Vector3(1, 2, 3).Scale(10, 20, 30) = (10.00, 40.00, 90.00) Vector3Int(1, 2, 3).Scale(10, 20, 30) = (10, 40, 90) Vector4(1, 2, 3, 4).Scale(10, 20, 30, 40) = (10.00, 40.00, 90.00, 160.00) Output when executed as U#: Vector2(1, 2, 3).Scale(10, 20, 30) = (1.00, 2.00) Vector2Int(1, 2, 3).Scale(10, 20, 30) = (1, 2) Vector3(1, 2, 3).Scale(10, 20, 30) = (1.00, 2.00, 3.00) Vector3Int(1, 2, 3).Scale(10, 20, 30) = (1, 2, 3) Vector3Int(1, 2, 3).Scale(10, 20, 30) = (1, 2, 3) Vector4(1, 2, 3, 4).Scale(10, 20, 30, 40) = (1.00, 2.00, 3.00, 4.00)
1
·
Bug Reports
·
tracked
Load More