首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法访问使用FindWithTag找到的对象中的方法

无法访问使用FindWithTag找到的对象中的方法
EN

Stack Overflow用户
提问于 2015-05-10 01:54:56
回答 1查看 199关注 0票数 1

我在“统一”中设置对象时遇到了问题,但我认为以下最能说明我的问题。

我有一个羊类型的对象,它是动物类型的子类。我也有一个类蛇,我可能需要在未来,也是一个子类的动物。绵羊或蛇一次可能在游戏中,它们被标记为PlayerAnimal。它足够简单,以获得访问谁是在发挥作用。例如,我实例化了一只绵羊,并使用以下方法获取它:

代码语言:javascript
复制
var player = (GameObject.FindWithTag ("PlayerAnimal"));

我可以用player.transform来移动羊。但我的问题是,玩家的行为不像GameObject,动物,或羊/蛇。我想使播放器闪光灯白色或透明,但我不能访问它的材料/网格/等等,因为它显然不是一个GameObject。我不能访问动物或羊/蛇的任何功能,因为它也不是那样的。

如果我想把玩家换成羊或者动物..。

代码语言:javascript
复制
Sheep newSheep = player;

我得到:

不能隐式地将类型UnityEngine.GameObject转换为动物

如果我想把它演成羊或动物..。

代码语言:javascript
复制
Sheep newSheep = player as Sheep;

我得到了

无法通过内置转换将“UnityEngine.GameObject”转换为“绵羊”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 02:00:59

使用GetComponent()

代码语言:javascript
复制
var sheep = GameObject.FindWithTag("PlayerAnimal").GetComponent<Sheep>();

如果您的所有动物都继承了基类Animal,并且不需要访问除Animal类中可用的属性之外的任何特定属性,请使用以下方法:

代码语言:javascript
复制
var animal = GameObject.FindWithTag("PlayerAnimal").GetComponent<Animal>();

如果您需要某种特定的动物的东西,我想您将不得不测试这种类型:

代码语言:javascript
复制
if (animal is Sheep)
{
    // access some sheepy property like wool color
}
else if (animal is Snake)
{
    // access some snakey property like slitherinessability
}
else if (...)
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30146897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档