【发布时间】:2020-09-26 11:12:26
【问题描述】:
我有一个编译器错误,编译器无法将类型“UnityEngine.Object 转换为 Gun。我不认为这些是不同的文件类型,但无论如何,这是我的代码。我对此感到困惑,我”我还没有 C# 方面的专业人士,所以如果这是一个 n00b 错误,请原谅我。我知道如何使用插入的代码,这让我感到困惑,所以这里是一个打印屏幕。
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;
}
}
【问题讨论】:
-
请直接在您的问题中发布代码,而不是截图。
-
"Idk how to use the code insert on this, it confuses me"-- 复制粘贴。没有特别的“秘密”。 -
当我第一次尝试时它并没有真正为我工作,但现在它可以了。当然。
-
使用实例化代码,我尝试了两个装备Gun = Instantiate(gunToEquip, WeaponHold.position,WeaponHold.rotation) as GameObject;和装备枪 = (GameObject)Instantiate(gunToEquip, WeaponHold.position,WeaponHold.rotation);并且还用 Gun 替换了 GameObject,没有运气。
-
Instantiate 正在返回 UnityEngine.Object 并且您正在尝试将其分配给 Gun。您可以做的是铸造或创建枪的新实例,并将参数从对象一一分配到枪。或者使用构造函数。或者定义隐式转换。
标签: c#