C# 尝试从资源文件夹加载预置时获取空值
我在Resources文件夹中加载了一个预置,但当我试图从代码中获取它时,它会返回NULL。我怎样才能把它做好?我只想获得Prefable并访问位于Prefable中的UI组件,然后从Prefable对象更改UI值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中的所有资产名称和路径都使用正斜杠,使用反斜杠的路径将不起作用 “预制/警报预制”)你不能那
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这是一个正斜杠:/
,这是一个反斜杠:\
。为什么“预置/警报预置”
会出错?我很遗憾地证实,加布勒鲁是正确的——这个答案是完全错误的。路径使用正斜杠。