CS0266 C#无法隐式转换类型' UnityEngine.Object'到了'。存在显式转换(您是否错过了演员?)

时间:2015-10-08 19:37:40

标签: c#

我遇到编译器错误,编译器无法将类型" UnityEngine.Object转换为Gun。我不认为这些是不同的文件类型,但无论如何,这是我的代码。我已经对此感到难过,而且我还没有专业的C#,所以请原谅我,如果这是一个n00b的错误。 Idk如何使用代码插入,这让我很困惑,所以这里是一个版画屏幕。

using UnityEngine;
using System.Collections;

public class GunController : MonoBehaviour {

    public Transform WeaponHold;
    public Gun startingGun;
    Gun equippedGun;

    void Start()
    {
        if (startingGun != null)
        {
            EquipGun(startingGun);
        }
    }

    public void EquipGun(Gun gunToEquip)
    {
        if(equippedGun != null)
        {
            Destroy(equippedGun.gameObject);
        }
        equippedGun = Instantiate(gunToEquip, WeaponHold.position,WeaponHold.rotation);
        equippedGun.transform.parent = WeaponHold;
    }
}

2 个答案:

答案 0 :(得分:1)

Instantiate方法返回object,您可以将其转换为必要的类型。

将其投放到Gun并停止抱怨:

equippedGun = (Gun)Instantiate(gunToEquip, WeaponHold.position, WeaponHold.rotation);

答案 1 :(得分:0)

确保您的类继承自MonoBehaviour。

public class MyClass : MonoBehaviour{

}