Describe the bug in detail:
Consider the following code that is expected to compile correctly:
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
public class TestScript : UdonSharpBehaviour
{
private Color32 color;
void Start()
{
color = new Color32(0xC0, 0xD6, 0xDF, 0xFF);
}
}
UdonSharp throws the following error stating the constructor cannot be found and fails the compilication:
[<color=#FF00FF>UdonSharp</color>] Assets\poiOS\Scripts\TestScript.cs(15,46): System.Exception: Could not find valid method for given parameters!
However, by specifically declaring byte variables and supplying into the constructor, the error no longer exists:
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
public class TestScript : UdonSharpBehaviour
{
private Color32 color;
void Start()
{
byte r = 0xC0;
byte g = 0xD6;
byte b = 0xDF;
byte a = 0xFF;
color = new Color32(r, g, b, a);
}
}
I think C# seems to consider those hard-coded bytes as type Int32 instead of Byte and then auto-cast back to byte while compilication. UdonSharp seems trying to find the constructor Color32(Int32, Int32, Int32, Int32) which does not exist and fails the complication.
Expected behavior:
What was the expected result? To compile
Known issue that will be fixed eventually, but it's complicated. Using an explicit cast in the constructor like new Color32((byte)0xC0, (byte)0xD6, (byte)0xDF, (byte)0xFF) also works as a workaround.
Describe the bug in detail: Consider the following code that is expected to compile correctly:
UdonSharp throws the following error stating the constructor cannot be found and fails the compilication:
However, by specifically declaring byte variables and supplying into the constructor, the error no longer exists:
I think C# seems to consider those hard-coded bytes as type Int32 instead of Byte and then auto-cast back to byte while compilication. UdonSharp seems trying to find the constructor
Color32(Int32, Int32, Int32, Int32)
which does not exist and fails the complication.Expected behavior: What was the expected result? To compile