我在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()'工作嗎?或者您是否還需要訪問每種動物的特定屬性? –