I have a Parsing error on line 4 of the script. Whenever i fix the parsing error, multiple other errors appear.

using UnityEngine;
using System.Collections;

public class BaseCharecterClass;

	private string charecterClassName;
	private string charecterClassDescription;
	//stats
	private int stamina;
	private int endurance;
	private int strength;
	private int intellect;

	public string charecterClassName;{
		get{return charecterClassName;}
		set{charecterClassName = value;}
                                  }
	public string charecterClassDescription;{
		get{return charecterClassDescription;}
		set{charecterClassDescription = value;}
                                         }
	public int stamina;{
		get{return stamina;}
		set{stamina = value;}
                                         }
	public int endurance;{
		get{return endurance};
		set{endurance = value};
}
	public int strength;{
		get{return strength};
		set{intillect = value};
}
	public int intillect;{
		get{return intillect};
		set{intellect = value};
}
	}

You have several problems here.

As richyrich mentions in a comment, line 4’s error is that you have a semi-colon instead of an open bracket. Semi-colons terminate expressions, so you are basically defining a class with no contents; eg.

 public class BaseCharecterClass
 {}

 private string charecterClassName;
 ....

which is clearly not what you want.

The errors you get when you make it a legitimate class are probably due to the fact that you’re doing basically the same thing for your properties. They don’t need semi-colons before the brackets:

You have this: (WRONG)

 public int stamina;{
     get{return stamina;}
     set{stamina = value;}
 }

You should have this:

 public int stamina {
     get{return stamina;}
     set{stamina = value;}
 }

However, although that is better, you have yet another problem. You can’t have properties and member variables with the same name. (eg. stamina & stamina)

If you require to actually define both sets of variables (possible, but rare… if you’re using Reflection, this might be necessary) my personal preference is to prefix the member variable (the one without getters and setters) with an underscore, eg. _stamina

public class BaseCharecterClass
{     
     private string _charecterClassName;
 
     public string charecterClassName
     {
      get {return _charecterClassName;}
      set {_charecterClassName = value;}
     }

I suspect, however, that you don’t actually need this, and you’re just trying to have some access control. In that case, I recommend this approach instead:

public class BaseCharecterClass
{    
 
     public string charecterClassName
     {get; private set;}
                                   
     public string charecterClassDescription
     {get; private set;}

     ....

Finally, although this doesn’t matter at all as far as compiling or syntax goes, you have many, many spelling errors. It’s “character”, not “charecter” and “intellect”, not “intillect”. Although, as I say, this doesn’t actually matter, going back later you’ll find that it makes it easier to modify, as you may no longer spell things in the same, incorrect, way. I note, in fact, that you’ve already shown this exact problem in the last line of your example code, where you use the correct spelling AND the incorrect for intellect.

Because I was bored. This class will do exactly the same job. There is no need to implement properties if they do nothing. Add the properties later when they are required. You main errors were

  • Not opening with a curly brace

  • Putting a ; at the end of a variable when declaring properties

  • Using the same name for a property and the backing variable

    using UnityEngine;
    using System.Collections;

    public class BaseCharecterClass {

      public string charecterClassName;
      public string charecterClassDescription;
      //stats
      public int stamina;
      public int endurance;
      public int strength;
      public int intellect;
    

    }