要实例化的Object为null

时间:2017-02-08 11:53:43

标签: c# unity3d unity5

我正在尝试使用位于我的资源文件夹中的文本文件中的名称来实例化资源文件夹中的预制件。预制件也位于我的资源文件夹中。但是,我收到一条错误消息“我要实例化的对象为空”。

当我直接给出预制件的名称时,它有效。我似乎无法理解这个问题。

我的代码是:

public void Loadd() 
{
    TextAsset txtasset = (TextAsset)Resources.Load (txtfile);
    txtcontents = txtasset.text;
    string[] linesinfile = txtasset.text.Split ('\n');
    for(int i= 0; i<1; i++)
    {
        for (int x = 0; x < buttonholder.Length; x++)
        {
            //GameObject Instance = Instantiate (Resources.Load ("F260001", typeof(GameObject))) as GameObject;   // works
            string name = linesinfile [x];
            Debug.Log (name);
            GameObject Instance = Instantiate (Resources.Load (name, typeof(GameObject))) as GameObject;
         }
     }
 }

2 个答案:

答案 0 :(得分:2)

Split操作可能会导致linesinfile数组末尾出现空字符串。

尝试检查name是否有效,例如使用if (!string.IsNullOrEmpty(name))

答案 1 :(得分:1)

我还在Unity答案论坛上寻求帮助,@ corpsinheretoo来救援。问题在于我如何拆分字符串。我正在使用&#39; \ n&#39;但是一些文本编辑器在按下返回时添加\ r \ n。所以字符串我认为是这样的:F26001 \ nF26002 \ nF26003真的是这样的:F26001 \ r \ nF26002 \ r \ nF26003。

所以我只是将分裂切换为&#39;;&#39;并编辑了我的代码和文本文件,这样就可以了。 :http://i.imgur.com/MnlFvnd.png和文本文件:http://i.imgur.com/nsWtG9G.png ..