【问题标题】:Resources.Load<Sprite> returns null only for certain filesResources.Load<Sprite> 仅对某些文件返回 null
【发布时间】:2016-08-04 15:18:39
【问题描述】:

我有许多 png 文件,我正在使用 C#(在 Unity 5.3.5 中)导入它们并将它们设置为图像的精灵。但是,仅对于其中一些文件,在执行此代码时,Resources.Load 会给我“null”。

Resources.Load&lt;Sprite&gt;(@"Instruction_Files/1");

作为一个具体的例子,当我调用时,我将上传的第一张图片(7.png)给了我 Sprite

Resources.Load&lt;Sprite&gt;(@"Instruction_Files/7");

相比之下,我将上传的第二张图片 (10.png) 在我调用时显示为 null

Resources.Load&lt;Sprite&gt;(@"Instruction_Files/10");

将 10.png 重命名为 7.png 等(反之亦然)不会改变任何事情(原来的 10.png 将为空,而原来的 7.png 不会)。

是否存在 Sprite 文件需要采用特定格式(例如正方形、一定数量的 kB)才能使 Resources.Load 工作?任何潜在的方法来解决这个问题?谢谢。

更新:重要的是,如果我复制 7.png.meta 文件中的所有信息并将其粘贴到 10.png.meta 文件中,那么 10 将注册为精灵

【问题讨论】:

  • 你能调整你的图片大小吗?
  • 你能粘贴一些调试日志吗?还是错误消息?
  • 没有自然发生的错误/调试消息。当我执行Debug.Log(Resources.Load&lt;Sprite&gt;(@"Instruction_Files/10")) 时,我得到 10.png 的“null”或 7.png 的 Sprite(....)。

标签: c# unity3d


【解决方案1】:

需要在Sprite/UI 上设置导入设置,例如here(参见精灵/UI 部分)。这些也是保存在元文件中的设置。

这就是为什么当您在 Unity 中将文件从“10”重命名为“7”时它不会加载的原因,因为元文件也被重命名并且导入数据被保留。但是,当您从元数据复制数据时,您实际上是在更改导入设置。

【讨论】:

  • 完美。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
相关资源
最近更新 更多