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.
VRCObjectSync Respawn does not work
I tried this both with udon graph and udon sharp. Both times, when calling the Respawn function, the udon script throws an error and halts. It says that the reference is not set to an instance of an object, even though every time, I check, and there is an object with a VRCObjectSync attached to it that Respawn() is called from. And Respawn() is called from the VRCObjectSync, and not the GameObject. This is the error I get from udon graph: [UdonBehaviour] An exception occurred during Udon execution, this UdonBehaviour will be halted. VRC.Udon.VM.UdonVMException: The VM encountered an error! Exception Message: An exception occurred during EXTERN to 'VRCSDK3ComponentsVRCObjectSync.__Respawn__SystemVoid'. Parameter Addresses: 0x00000000 Object reference not set to an instance of an object ---------------------- Program Counter was at: 28 ---------------------- Stack Dump: ---------------------- Heap Dump: 0x00000000: Microphone (VRC.SDK3.Components.VRCObjectSync) 0x00000001: Microphone (VRC.SDK3.Components.VRCObjectSync) 0x00000002: VRCSDK3ComponentsVRCObjectSync.__Respawn__SystemVoid ---------------------- Inner Exception: ---> VRC.Udon.VM.UdonVMException: An exception occurred during EXTERN to 'VRCSDK3ComponentsVRCObjectSync.__Respawn__SystemVoid'. Parameter Addresses: 0x00000000 ---> System.NullReferenceException: Object reference not set to an instance of an object at VRC.SDK3.ClientSim.ClientSimObjectSyncHelper.RespawnObject (VRC.SDK3.Components.VRCObjectSync sync) [0x00000] in .\Packages\com.vrchat.worlds\Integrations\ClientSim\Runtime\Helpers\ClientSimObjectSyncHelper.cs:18 at VRC.SDK3.Components.VRCObjectSync.Respawn () [0x00009] in <6ff4ff48394b436282bb70dc0ff277c2>:0 at VRC.Udon.Wrapper.Modules.ExternVRCSDK3ComponentsVRCObjectSync.__Respawn__SystemVoid (VRC.Udon.Common.Interfaces.IUdonHeap heap, System.Span`1[T] parameterAddresses) [0x0001d] in <b001fa9908f1453c979dae8b67f4c4f7>:0 at VRC.Udon.VM.UdonVM.Interpret () [0x00273] in <62e4a0d35446446b8fa1f8e5755bcfaa>:0 --- End of inner exception stack trace --- at VRC.Udon.VM.UdonVM.Interpret () [0x0033c] in <62e4a0d35446446b8fa1f8e5755bcfaa>:0 --- End of inner exception stack trace --- at VRC.Udon.VM.UdonVM.Interpret () [0x00436] in <62e4a0d35446446b8fa1f8e5755bcfaa>:0 at VRC.Udon.UdonBehaviour.RunProgram (System.UInt32 entryPoint) [0x00063] in .\Packages\com.vrchat.worlds\Runtime\Udon\UdonBehaviour.cs:1098 UnityEngine.Debug:LogError (object,UnityEngine.Object) VRC.Core.Logger:LogError (string,string,UnityEngine.Object) VRC.Udon.UdonBehaviour:RunProgram (uint) (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonBehaviour.cs:1112) VRC.Udon.UdonBehaviour:RunEvent (string) (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonBehaviour.cs:1306) VRC.Udon.UdonBehaviour:ManagedUpdate () (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonBehaviour.cs:551) VRC.Udon.UdonManager:Update () (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonManager.cs:354)
12
·
tracked
Can't render over the screen with more than 1 camera on Quest
What I'm going to describe is a very niche bug, that won't bother a lot of people, but it's been preventing me from porting some cool worlds like "Thad Recursive Room" to Quest, because it relies on some render tricks with multiple cameras. If you have a camera without a render target, it will render on screen. And if you set the "depth" parameter greater than 0, it will render after the main camera, effectivly acting like an overlay camera. So far, everything works. But doing that with more than 1 camera does not work. So if you use a second camera with an even higher depth value, it's content won't show up on the screen as long as the first overlay camera is still on (That is, if the content of the second overlay camera is actually performing a z test). But it gets stranger from here: if I open and close the menu a few times and also click on some of the menu tabs like the world menu. Every now and then it causes a glitch that will make the content of the second overlay camera sort of appear from there on out. What I can see then, is that when I move my head, it moves away an invisible shape that was blocking the content of the second overlay camera. And that shape fits perfectly the object it is supposed to render. It is as if the z values of the second overlay camera are already written to the depth buffer before the actual rendering of the second overlay camera begins and then the z test fails against its own values. But after the menu glitch, the occluding depth image seems to be frozen in place and I can partly move it out of the way by changing my view. Also: one time I tried something similar with cameras rendering before the main camera (depth parameter is set to a negative value, and main camera is set to clear nothing). Results were similar, and after I managed to get something visible with the menu glitch, it appeared as if the cameras that render earlier than the main camera were very pixelated, which was also surprising. I've been also experimenting with manually calling render() on multiple cameras that are supposed to render on screen during several render related events (for example in OnPostRender of the first overlay camera), but no luck getting their content to show in any way.
0
"System.ArgumentException: Type provided must be an Enum" when using user-defined enum as a default parameter value in UdonSharp
Defining a method parameter of a user-defined enum type with a default value causes the UdonSharp compiler to throw during binding. The same method compiles successfully when the default value is removed. This issue does not reproduce with Unity/SDK-defined enums (e.g., UnityEngine.HumanBodyBones , VRC_Pickup.PickupHand). Reproduction using UdonSharp; public class EnumTest : UdonSharpBehaviour { // Compile error public void TestMethod(TestEnum testEnum = TestEnum.ValueB) { } } public enum TestEnum { ValueA, ValueB, ValueC } Actual Behavior Compile fails with Assets/Main/Misc/Enum/EnumTest.cs(6,0): System.ArgumentException: Type provided must be an Enum. Parameter name: enumType at System.Enum.ToObject (System.Type enumType, System.Int32 value) at System.Enum.ToObject (System.Type enumType, System.Object value) at UdonSharp.Compiler.Symbols.ParameterSymbol..ctor (...) at UdonSharp.Compiler.Symbols.UdonSharpBehaviourTypeSymbol.CreateSymbol (...) ... (Full message attached below) The exception is thrown inside ParameterSymbol when UdonSharp tries to evaluate a parameter’s default value using Enum.ToObject(enumType, value) during compilation. For user-defined enums, this call receives an argument that is not recognized as a valid enum type for some reason, which causes System.ArgumentException: Type provided must be an Enum . Workarounds Avoid using default parameter values for enums and provide an overload as a pseudo-default instead public void TestMethod(TestEnum testEnum) { } public void TestMethod() => TestMethod(TestEnum.ValueA);
1
·
tracked
Load More