我有一个名为MeleeWeapon
的类,它继承自类Item
和接口Usable
。我有一个类型Item的数组,其中包含一些类型为MeleeWeapon的对象,我想知道如何检查它们是否可用。我尝试了以下方法,但都导致错误记录。有什么建议?
(此索引处的项目是武器类型,我确定了这一点)
我已经搜索了这个答案,这是我得到这些方法的地方,所以我为重复道歉,它只是不适合我。
Debug.Log ( itemType.IsAssignableFrom(typeof(Usable)));
Debug.Log (inv.items[inv.selectedHotbarSlot].item is Usable);
答案 0 :(得分:0)
你可能正在寻找这个:
if (obj.IsInstanceOfType(Usable))
答案 1 :(得分:0)
这是我检查对象是否属于某种类型的方式。
public interface A
{
}
public class B : MonoBehaviour, A
{
void Start ()
{
Debug.Log(this is A); // Will print True.
}
}
在这种情况下,请记住this
是脚本B
的实例。
您可以在if
if(obj is A)
// Do something.
答案 2 :(得分:0)
您似乎向后使用IsAssignableFrom
(这是一个相当常见的错误)。
IsAssignableFrom
将返回true,如果以下情况" work" (假设MyItemType
扩展可用):
Usable usable = new Usable(); //Pretend this constructor exists
MyItemType itemType = usable;
换句话说,它正在检查MyItemType
类型的对象是否可以从 Usable
类型的对象分配。
看起来你想测试的是,这是否有用:
MyItemType itemType = new MyItemType();
Usable usable = itemType;
要做到这一点,请切换类型的位置:
Debug.Log(typeof(Usable).IsAssignableFrom(itemType));