首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassVar.prefab在统一检查人员中未显示

ClassVar.prefab在统一检查人员中未显示
EN

Stack Overflow用户
提问于 2021-06-20 03:24:07
回答 1查看 111关注 0票数 1

我正在做一场“把球投进垃圾桶”的游戏。我正在尝试获取一个prefab对象(通过检查器),然后实例化它,但是当检查器没有显示一个预置选项来输入预置GameObject时,我偶然发现了这个问题,尽管如下代码:

代码语言:javascript
复制
[System.Serializable]
public class Obj
{
    public GameObject prefab;
}

就应该这么做。

完整代码:

代码语言:javascript
复制
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
        }
    }
}

如果有人有解决这个问题的办法,请告诉我。

这将非常有帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-20 03:30:33

我很确定这不是Full code ..。否则它甚至不会编译;)

照现在的样子

您定义了一个类,是的,,但是--我没有看到您的类中有任何字段使用您的类型!

可能应该是。

代码语言:javascript
复制
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);
        }
    }
}

特别要注意的是如果你这么做

代码语言:javascript
复制
Obj obj = new Obj();

在这个刚刚创建的Obj实例中,prefab当然是未分配的。

不过,我的问题是:这真的是您的Obj类所做的吗?因为在这种情况下,为什么不干脆

代码语言:javascript
复制
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);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68052390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档