RegisterCallback not working for ObjectField

Hi,

I did what UIElments Sample did but the callback can’t be registered. Here is my code:

private void OnEnable()
    {
        root = rootVisualElement;
        root.Clear();
        var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/ruiming_wip/Chart.uxml");
        chart = visualTree.CloneTree();
        chartHolder = chart.Q(name: "ChartHolder");
        chartHolder.generateVisualContent += LineGenVisualContent;
       
        lineTextureField= chart.Q<ObjectField>("LineTexture");
        lineTextureField.objectType = typeof(Texture2D);
        lineTexture = (Texture2D)lineTextureField.value;
        lineTextureField.SetEnabled(true);
        lineTextureField.RegisterCallback<ChangeEvent<Object>>((evt) => {
            Debug.Log(lineTexture);
            lineTexture = (Texture2D)evt.newValue;
            chartHolder.MarkDirtyRepaint();
        });
       
        lineColorField = chart.Q<ColorField>("LineColor");
        lineColor = lineColorField.value;
        lineColorField.RegisterCallback<ChangeEvent<Color>>((evt) => { lineColor = evt.newValue; lineTexture = (Texture2D)lineTextureField.value;chartHolder.MarkDirtyRepaint();});
        root.Add(chart);
    }

The line for ColorField do works for me, so is this a bug I’m looking at?
I also tried, but no luck :

lineTextureField.RegisterCallback<ChangeEvent<Texture2D>>((evt) => {
            Debug.Log(lineTexture);
            lineTexture = evt.newValue;
            chartHolder.MarkDirtyRepaint();
        });

Mystery solved, I’m using

System.Object;

instead of

UnityEngine.Object;

4 Likes