Unity开发:ArgumentException: The Object you want to instantiate is null.

本文讲述了在Unity开发中遇到的关于GameObject.Instantiate资源加载失败的问题,重点在于Resources.Load的使用和Prefab放置在Resources文件夹的要求。解决方法涉及正确设置Prefab路径,确保其位于Resources中。
摘要由CSDN通过智能技术生成

在构建Unity 的GUI框架的时候导入资源碰到这个问题,卡了有点时间
部分代码

 public GameObject GetSingleUI(UIType type)
    {
        GameObject parent = GameObject.Find("Canvas");
        if (!parent)
        {
            Debug.LogError("Canvas不存在,请仔细查找有无这个对象!");
            return null;
        }
        if (dicUI.ContainsKey(type))
            return dicUI[type];
        GameObject ui = GameObject.Instantiate(Resources.Load<GameObject>("type.Path"), parent.transform);
        Debug.Log("succeed");
        ui.name = type.Name;
        return ui;
    }

主要的报错就是

GameObject ui = GameObject.Instantiate(Resources.Load<GameObject>("type.Path")
, parent.transform);

type.Path 就是我设置好的一个string类型的路径,但是控制台一直报错ArgumentException: The Object you want to instantiate is null.
解决方法:
首先Resources.Load()是针对Resources文件夹下的内容,预制体要放在Resources文件夹下
例如右键点击预制体的“Copy Path”之后,我这里获得了Assets/Resources/Prefabs/StartPanel.prefab
写在path里就放置Prefabs/StartPane就够了

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值