我在Unity中投射对象时出现问题,但我认为以下内容最能说明我的问题。无法访问使用FindWithTag找到的对象中的方法
我有一个Sheep类型的对象,它是Animal类型的子类。我还有一个我将来可能需要的蛇类,也是动物的一个子类。一次可以使用绵羊或蛇,并且它们被标记为玩家动物。这很简单,可以访问任何正在使用的游戏。举例来说,我已经实例化的羊,我用下面的抢吧:
var player = (GameObject.FindWithTag ("PlayerAnimal"));
我可以用player.transform四处移动羊。但我的问题是玩家不会像GameObject,Animal或Sheep/Snake一样行事。我想让播放器闪烁白色或透明,但我无法访问其材质/网格/等,因为它显然不是GameObject。我无法访问Animal或Sheep/Snake中的任何函数,因为它们都不是。
如果我试图改变球员的羊或动物......
Sheep newSheep = player;
我得到:
无法隐式转换类型UnityEngine.GameObject到动物
如果我试图将它作为绵羊或动物......
Sheep newSheep = player as Sheep;
我得到
无法通过内置的转换
这样的作品,但我想我的主要问题,那么,我使用的代码是什么,'var player =(GameObject.FindWithTag(“PlayerAnimal”));'被处理为?或者我怎么知道?据我所知,它无法访问GameObject方法。 – greyspace
澄清:如果我事先知道羊将在场,你的代码是完美的。但是我使用“PlayerAnimal”标签的原因是,我不能预先知道它是羊,蛇还是任何数量的无数其他动物。一旦我控制了对象,就没事了,因为它们都继承了Animal并且共享了函数,但是有没有办法找到'FindWithTag'并确定它后面是什么类型的对象呢?那有意义吗? – greyspace
做'GetComponent()'工作吗?或者您是否还需要访问每种动物的特定属性? –