c# - 如何在运行时实例化不在资源层次结构中的给定文件夹中的预制件?
问题描述
我有一个预制件(MyPrefab.prefab),它位于“Assets/Scripts/MyPrefab.prefab”。
我怎样才能在运行时实例化它?
我尝试了这个代码片段,但它在运行时抛出了异常。
var myGO = Instantiate(Resources.Load ("Assets/Scripts/MyPrefab") as GameObject);
和这个:
var myGO = Instantiate(Resources.Load ("Assets/Scripts/MyPrefab.prefab") as GameObject);
他们都没有为我工作。Unity 抛出异常:
ArgumentNullException: The Object you want to instantiate is null
PS:我不允许将预制件移动到另一个文件夹。
解决方案
一般来说,根本不要使用资源!
如果由于某种原因您仍想使用它,您的资产必须放在一个名为的文件夹中,因为系统Resources
只会跟踪这些资产Resources
可以通过 Resources.Load 函数访问 Assets 文件夹中任何位置名为“Resources”的文件夹中的所有资产。可能存在多个“资源”文件夹,并且在加载对象时将检查每个文件夹。
但正如所说,宁愿有一个
public GameObject prefab;
或者也
[SerializeField] private GameObject prefab;
场地。这现在出现在相应组件的检查器中。只需将您的预制件拖放到此插槽中,然后执行
var myGo = Instantiate(prefab);
尤其是在运行时查看Instantiate Prefabs
推荐阅读
- anylogic - 如何将静态代理群体与行人模型一起使用?
- python - 在 Pandas 中添加几乎重复的内容并删除旧的重复项
- button - 我可以用线连接2个按钮吗?
- css - css 和 scss 的新行上的 VS Code Formatter 大括号
- javascript - 在 woocommerce 单品图片尺寸方面遇到问题。但是当我试图检查元素并改变大小时
- node.js - 如何与 Cloudfront 和 ec2 节点服务器通信?
- azure-devops - 如何停止 PublishPipelineArtifact 忽略 .git 目录
- javascript - 在 Angular 材质中将 mat-expansion-panel 的内容居中
- java - 获取连接的 WiFi SSID(Android API 级别 31)
- python - 如何计算 numpy 二维数组中的重复元素?