Skip to content

Code that uses Color32 does not compile unless specifically using byte variables as arguments #69

Open
@poi-vrc

Description

@poi-vrc

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions