在Unity中制作游戏时,我逐渐熟悉了OOP的多态性。
我尝试使用一个接口,将参加一个损害系统.
下面是接口代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IDamageable
{
int Health { get; set;}
void Damage();
}
下面是一个骷髅敌人的代码,它继承自父类Enemy
,并且必须实现IDamageable
接口:
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()
{
}
}
因此,Unity中的控制台不会显示任何有关接口的错误消息。
但是VS代码将IDamageable
保留为下划线,并显示错误CS 0246:
未能找到类型或命名空间名称“”IDamageable "“(是否缺少using指令或程序集引用?”“
看起来VS代码甚至没有看到接口-也不能在智能感知中找到接口。
我试着为其他一些敌人实现接口,但情况是一样的:Unity控制台中没有错误,并且该接口也由VS代码标记。
抱歉,这个问题很蠢!
2条答案
按热度按时间atmip9wb1#
你必须重新编译脚本,看看有什么问题。如果问题仍然存在,删除脚本,重新编写它。最有可能的是有一些BS与汇编
jecbmhm32#
好吧,这花了时间,但我找到了这个问题的解决方案。
问题是在这种情况下命名空间不是必需的。我确实读过关于命名空间的书,但还不确定如何使用它们。而且我所学习的课程也不使用命名空间。
所以关于这个问题。由于错误的出现-它只出现在VS代码中,我决定做以下事情:
1.在Unity中输入首选项-〉外部工具
1.在字段中看到外部脚本编辑器我有按文件扩展名打开
1.已将该字段更改为Visual Studio代码
1.按下重新生成项目文件
VS代码中的错误CS 0246消失,接口实现成功。