Open
Description
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