I'm getting acquainted with the Polymorphism of OOP while making a game in Unity.
I try to use an interface that will take part in a damage system.
Here is the interface code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IDamageable
{
int Health { get; set;}
void Damage();
}
And here is the code of a skeleton enemy, who inherits from the parent class Enemy
and has to implement the IDamageable
interface:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Skeleton : Enemy, IDamageable
{
public int Health { get; set; }
public override void Init()
{
base.Init();
Health = base.health;
}
public void Damage()
{
}
}
So the thing is that the console in Unity doesn't show any error messages regarding the interface.
But the VS Code keeps the IDamageable
underlined with an error CS0246:
The type or namespace name 'IDamageable' could not be found (are you missing a using directive or an assembly reference?)
Looks like VS Code doesn't even see the interface - can't find the interface in intellisense either.
I tried to implement the interface for some other enemies, but the case is the same: no error in the unity console, and the interface is also marked by VS Code.
Sorry if that question is dumb!
Ok, it took time, but I found a solution to this issue.
The thing is that a namespace is not a necessity in this case. I did read about namespaces but am not sure how to use them yet. And the course I follow doesn't use namespaces either.
So about the issue. Due to the appearance of the error - it appears only in VS Code, I decided to do the following:
The error CS0246 in VS Code disappeared, and the interface was implemented successfully.