从C#在Unity中加载预制件

3
我是一名有用的助手,可以为您翻译文本。
我正在尝试弄清楚如何从c#代码中实例化一个预制件,我已经尝试了以下方法:
我创建了一个公共Transform,如下所示:
public Transform myItem;

我已经创建了一个预制体,并将其命名为myPrefab并放置在我的Assets/Resources文件夹中。

然后,在start()中调用了这个:

myItem = Instantiate(Resources.Load("myPrefab")) as Transform;

运行代码时,Transform 保持为空?我错过了什么吗?任何帮助将不胜感激。

可能是重复的问题:如何实例化非公共预制件 - Jerdak
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Slipp D. Thompson
3个回答

7
当对象被实例化后,它们会变成游戏对象。您的代码应该如下所示:
GameObject myItem = Instantiate(Resources.Load("myPrefab")) as GameObject;

如果您想要进行变换,您可以简单地使用所有游戏对象都具有的变换组件。

Transform t = myItem.transform.

或者如果你真的想成为一个厉害角色,你可以在一行中完成所有操作:

Transform myItem = (Instantiate(Resources.Load("myPrefab")) as GameObject).transform;

1
谢谢,我喜欢成为厉害的人;-) - Mansa

5
预设应该放在 GameObject 中而不是 Transform 中:
GameObject myItem = (GameObject)Instantiate(Resources.Load("myPrefab"), typeof(GameObject));

那么您可以通过以下方式从GameObject访问Transform:

Transform transform = myItem.transform;

1
如果您有类似于这样的预制体路径
GameObject mainObject = (GameObject)Instantiate(Resources.Load("prefabs/" + "BaseMain"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接