Using UnityEngine.Event, making events show in inspector

Im currently trying to get my events to show in the inspector, however I’m not sure what I’m doing wrong.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

[System.Serializable] public class CharcterHitEvent : UnityEvent<int, Vector2> {}
public class CharcterConfigSO : MonoBehaviour
{
    public CharcterHitEvent charcterHit;
    Animator animator;
    
    
    [SerializeField]private bool isAlive = true;
    private bool isInvinciable;
    [SerializeField]private int CharcterMaxHealth;
    [SerializeField]private int health;
    private float timeSinceHit;
    [SerializeField] float invincablityTime;
    
    public string Name;
    public int Strength;
    public int Dexterity;
    public int Constitution;
    public int Intelligence;
    public int Wisdom;
    public int Charisma;


    public int BraveOrCraven;
    public int CalmOrWrafthful;
    public int ChasteOrLustful;
    public int ContentOrAmvitious;
    public int DiligentOrLazy;
    public int ForgivingOrVengeful;
    public int GenerousOrGreedy;
    public int GregariousOrShy;
    public int HonestOrDeceitful;
    public int HumbleOrArrogant;
    public int JustOrArbitrary;
    public int PatientOrImpatient;
    public int TemperateOrGluttonous;
    public int TrustingOrParanoid;

    
    public Vector2 WaitRangeBetweenExplore;

    public float ExploreRadius;

    private void Awake() 
    {
        animator = GetComponent<Animator>();
    }

    public int CharcterCurrentHealth 
    {
        get
            {
                return health;
            }
        set
            {
                health = value;


                if(health <= 0)
                {
                 IsAlive = false;
                 animator.SetBool(AnimationStrings.canMove, false);
                }
                Debug.Log("health " + health );
            }
    }

    public bool IsAlive
    {
        get
        {
            return isAlive;
        }
        set
        {
            isAlive = value;
            animator.SetBool(AnimationStrings.isAlive, value);
            Debug.Log("IsAlive set" + value);
        }
    }
    public void OnDamage(int damage, Vector2 knockBack)
        {
            if(IsAlive && !isInvinciable)
            CharcterCurrentHealth -= damage;
            isInvinciable = true;
            // also handle death and stuff :)
            charcterHit?.Invoke(damage, knockBack);
        }
    private void Update() 
    {
        if(isInvinciable)
        {
            if (timeSinceHit > invincablityTime)
            {
                isInvinciable = false;
                timeSinceHit = 0;
            }

            timeSinceHit += Time.deltaTime;
        }
    }

    public int charcterMaxHealth
    {
        get
        {
            return CharcterMaxHealth;
        }
        set
        {
            CharcterMaxHealth = value;
        }
    }
}

Error started showing after I restarted my engine.
'CharcterHitEvent' is missing the class attribute'ExtensionOfNativeClass'!

Generally if you see that error (ExtensionOfNativeClass), you have a script loading issue, meaning the MonoBehaviour isn’t properly detected.

It could be any number of issues that I detail here, including not naming your file name the same as the MonoBehaviour it contains, other compiler errors, issues with assemblies, or just a bad cache.