How do I call an enum from another script?

I have different states of a 2D character controller in a public enum (C#) and I’m wondering how I can call them in a seperate script so I can set them to play the appropriate Mecanim animations.

public enum PlayerState
    {
        Grounded,
        Jumping,
        Falling,
        Crouching
    }

Then in another script, do something like:

if(PlayerState == Jumping)
{
anim.SetBool(isJumping, true);
}

I’ve been having a hard time trying to set that up, I’ve never worked with enums in this context before.

Hey, if you place your enum in Global space, this means outside of classpace and make sure you make it public, you can see it cross classes.

using UnityEngine;
using System.Collections;

public enum TestEnum { Test1, Test2, Test3 } <-- This is where to place it

public class Test : MonoBehaviour
{
    TestEnum myEnum;

    void Start()
    {

    }

    void Update()
    {
        if (myEnum == TestEnum.Test1)
        {
           // do something cool
        }

    }
}

Hope it helps!

Well you have to prefix the name of the enum with the name of the class (i.e., the script) it’s defined in. If you want to avoid this, you can always define the enum before class declaration.

In any case, the code will look something like this:

 if(playerState == ClassName.PlayerState.Jumping)
 {
    anim.SetBool(isJumping, true);
 }

Where playerState is a variable of type PlayerState, and ClassName is the class in which you define Playerstate.

enums are by default static type so you can access the by ClassName.enumName => Manager.Players

public class Manager : MonoBehaviour
{
   
    public  enum Players
    {
        player1 = 1,
        player2 = 2
    }
}