What does "The type or namespace name x could not be found" mean?

hi im am making an hack and slash game from the BurgZergArcade tutorial and im facing an error that said : The type or namespace name `Skill’ could not be found. Are you missing a using directive or an assembly reference? plz help me and explain to me whats wrong so i can improve my skill :slight_smile:

code:

using UnityEngine;
using System.Collections;
using System;		//added to acces the enum class

public class BaseCharacter : MonoBehaviour {
	private string _name;
	private int _level;
	private uint _freeExp;
	
	private Attribute[] _primaryAttribute;
	private Vital[] _vital;
	private Skill[] _skill;
	
	public void Awake () {
		_name = string.Empty;
		_level = 0;
		_freeExp = 0;
		
		_primaryAttribut = new Attribute[Enum.GetValues(typeof(AttributeName)).Length];
		_vital = new Vital [Enum.GetValues(typeof(VitalName)).Length];
		_skill = new Skill [Enum.GetValues(typeof(VitalName)).Length];
		
		SetupPrimaryAttribute();
		SetupVitals();
		SetupSkills();
	}
	
	
	public string Name {
		get{ return _name;}
		set{name = value;}
	}
	
	public int Levvel {
		get{return _level;}
		set{_level = value;}
	}
	
	public uint FreeExp{
		get{return _freeExp;}
		set{_freeExp = value;}
	}
	
	public void AddExp (uint exp){
	 _freeExp += exp;
		
		CalculateLevel();
	}
	
	//take the avg of all the players skill and assign that as the player level
	public void CalculateLevel(){
		
	}
	
	private void SetupPrimaryAttribute() {
		for(int cnt = 0; cnt < _primaryAttribute.Length; cnt++){
			_primaryAttribute[cnt] = new Attribute();
	}
	}
	
	private void SetupVitals(){
		for(int cnt = 0; cnt < _vital.Length; cnt++){
			_vital[cnt] = new Vital();
	}
	}
	
	private void SetupSkills(){
		for(int cnt = 0; cnt < _skill.Length; cnt++){
			_skill[cnt] = new Skill();
	}
	}
		
	public Attribute GetPrimaryAttribute(int index){
		return _primaryAttribute[index];
		
	}

				
	public Vital GetVital(int index){
		return _vital[index];
	}

	public Skill GetSkill(int index){
		return _skill[index];
	}

	private void SetupVitalMofifiers(){
		//healh
		GetVital((int)VitalName.Health).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Constitution), .5f));
		
		//energy mana
		GetVital((int)VitalName.Energy).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Constitution), 1));
		
		//mana
		GetVital((int)VitalName.Mana).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Willpower), 1));
		}

	private void SetupSkillModifiers(){
		//melee Offence
		GetSkill((int)SkillName,Melee_Offence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Might),33f));
		GetSkill((int)SkillName,Melee_Offence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Nimbleness),33f));
		//melee Defence
		GetSkill((int)SkillName,Melee_Defence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Speed),33f));
		GetSkill((int)SkillName,Melee_Defence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Constitution),33f));
		//magic Offence
		GetSkill((int)SkillName,Magic_Offence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Concentration),33f));
		GetSkill((int)SkillName,Magic_Offence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.WillPower),33f));
		//Magic Defence
		GetSkill((int)SkillName,Magic_Defence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Concentration),33f));
		GetSkill((int)SkillName,Magic_Defence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Willpower),33f));
		//Ranged Offence
		GetSkill((int)SkillName,Ranged_Offence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Concentration),33f));
		GetSkill((int)SkillName,Ranged_Offence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Speed),33f));
		//Ranged Defence
		GetSkill((int)SkillName,Ranged_Defence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Speed),33f));
		GetSkill((int)SkillName,Ranged_Defence).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Nimbleness),33f));

	}
	
	public void StatUpdate(){
		for(int cnt = 0; cnt < _vital.Length; cnt++)
			_vital[cnt].Update();
		for(int cnt = 0; cnt < _skill.Length; cnt++)
			_skill[cnt].Update();
	}
}

It seems you’re missing the Skill.cs source file which should contain the Skill class. If you are positive it exists, maybe it is located in another name space which you have to include to your using statements.

The error means that it understands you’re trying to access a type (the Skill class) but it can’t be found in the project, so it doesn’t know what to do with it.

I ran into this when I had a forms app and a dll app in a solution. The forms app was using framework 3.5 and the dll app was using framework 4.5. After I set them both to the same framework the issue disappeared.

This will happen if you use Visual Studio to move the script to another folder.
The reason is that VS doesn’t update the metadata correctly so Unity doesn’t see it.

To solve, go into Unity and move the script to a different folder within the project then move it back to the desired folder. I moved all my scripts to the same folder this way and they see each other now.

Ran into this problem as well. In my case, I was trying to use C# to access a Javascript class. This isn’t possible. (Unity 3.5)

For me “reload all” in Visual Studio did the trick.