Access c# enum from gdscript

Godot Version

4.6

Question

using Godot;
using System;


[GlobalClass]
public partial class CardInstance : Resource {
    public enum CardModifier {
        None,
        One,
        Two,
    }


    [Export]
    public Card card;
    [Export]
    public CardModifier modifier;


    public override string ToString() {
        return card.ToString() + $" (Modifier: {modifier})";
    }
}


extends Node2D


@onready var data_loader = %DataLoader
# Called when the node enters the scene tree for the first time.
func _ready() -> void:

	var card_instance_class = preload("res://csharp/CardInstance.cs")
	var card_instance = card_instance_class.new()
	card_instance.card = card_database.cards[0]
	card_instance.modifier = card_instance_class.CardModifier.One 
	print(card_instance)
	data_loader.player_data.AddCard(card_instance)
	

I can’t seem to access the CardModifier enum from GDscript.

It gives me

SCRIPT ERROR: Parse Error: Cannot find member "CardModifier" in base "res://csharp/CardInstance.cs"

Thanks in advance!

You can’t. Just remake it in GDScript.

Is this due a naming of class or fact the enum but be standalone ?

1 Like

I stand corrected. Is the class instantiated in GDScript?

1 Like

Yup!


var card_instance = card_instance_class.new()

This works fine, but


card_instance.modifier = card_instance_class.CardModifier.One 

Accessing the enum doesn’t work.

Have you tried ?


card_instance.modifier = card_instance_class.MODIFIER_ONE