C# 尝试从资源文件夹加载预置时获取空值

C# 尝试从资源文件夹加载预置时获取空值,c#,user-interface,unity3d,C#,User Interface,Unity3d,我在Resources文件夹中加载了一个预置,但当我试图从代码中获取它时,它会返回NULL。我怎样才能把它做好?我只想获得Prefable并访问位于Prefable中的UI组件,然后从Prefable对象更改UI值 GameObject alertPrefab = (GameObject)Instantiate(Resources.Load("Prefabs/AlertPrefab")); Unity中的所有资产名称和路径都使用正斜杠,使用反斜杠的路径将不起作用 “预制/警报预制”)你不能那

我在Resources文件夹中加载了一个预置,但当我试图从代码中获取它时,它会返回NULL。我怎样才能把它做好?我只想获得Prefable并访问位于Prefable中的UI组件,然后从Prefable对象更改UI值

GameObject alertPrefab = (GameObject)Instantiate(Resources.Load("Prefabs/AlertPrefab"));


Unity中的所有资产名称和路径都使用正斜杠,使用反斜杠的路径将不起作用

“预制/警报预制”)你不能那样做

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
        go.renderer.material.mainTexture = Resources.Load("glass", typeof(Texture2D));
    }
}

您还可以创建类型为
GameObject
public
[SerializeField]
变量,并将要使用的
预置
拖动到
检查器内的
脚本

创建公共var

将预置从预置文件夹拖动到脚本中

private void spawnNewFood () {
    float rand = Random.Range (2, 6);
    int factor = ((int)rand % 2 == 0) ? 1 : -1;
    float x = rand * factor;
    float z = rand * factor;

    Vector3 positionFood = new Vector3 (x, 0, z);
    Instantiate (_food, positionFood, Quaternion.identity);
}

然后从脚本中的公共变量实例化它

private void spawnNewFood () {
    float rand = Random.Range (2, 6);
    int factor = ((int)rand % 2 == 0) ? 1 : -1;
    float x = rand * factor;
    float z = rand * factor;

    Vector3 positionFood = new Vector3 (x, 0, z);
    Instantiate (_food, positionFood, Quaternion.identity);
}

你可以先添加一个公共变量
publicGameObject alertPrefab
然后手动将预置拖到UI中的字段上?检查是否工作正常,没有任何错误。还要确保您的
AlertPrefact
有一个扩展名
。Prefact
认为您应该像Meehow的commnet一样解决并隔离您的空指针与Prefact之间是否存在问题,因为您的实例化似乎是正确的。或者试试(“Assets/prefables/alertprefable”)或者只是(“/prefables/alertprefable”),但我不确定它是否真的有什么区别=p这是一个正斜杠:
/
,这是一个反斜杠:
\
。为什么
“预置/警报预置”
会出错?我很遗憾地证实,加布勒鲁是正确的——这个答案是完全错误的。路径使用正斜杠。