我正在做一场“把球投进垃圾桶”的游戏。我正在尝试获取一个prefab对象(通过检查器),然后实例化它,但是当检查器没有显示一个预置选项来输入预置GameObject时,我偶然发现了这个问题,尽管如下代码:
[System.Serializable]
public class Obj
{
public GameObject prefab;
}就应该这么做。
完整代码:
public class MouseLook : MonoBehaviour
{
[System.Serializable]
public class Obj
{
public GameObject prefab; // Get Prefab from Inspector
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Obj obj = new Obj();
Instantiate(obj.prefab, playerBody); // playerbody is a Transform
}
}
}如果有人有解决这个问题的办法,请告诉我。
这将非常有帮助:)
发布于 2021-06-20 03:30:33
我很确定这不是Full code ..。否则它甚至不会编译;)
照现在的样子
您定义了一个类,是的,,但是--我没有看到您的类中有任何字段使用您的类型!
可能应该是。
public class MouseLook : MonoBehaviour
{
[System.Serializable]
public class Obj
{
public GameObject prefab;
}
public Obj obj;
// Or also
//[SerializeField] private Obj obj;
// Wherever you get this from
Transform playerBody;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Instantiate(obj.prefab, playerBody);
}
}
}特别要注意的是如果你这么做
Obj obj = new Obj();在这个刚刚创建的Obj实例中,prefab当然是未分配的。
不过,我的问题是:这真的是您的Obj类所做的吗?因为在这种情况下,为什么不干脆
public class MouseLook : MonoBehaviour
{
public GameObject prefab;
// Or also
//[SerializeField] private GameObject prefab;
// Wherever you get this from
Transform playerBody;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Instantiate(prefab, playerBody);
}
}
}https://stackoverflow.com/questions/68052390
复制相似问题