【问题标题】:Unity dynamic texture changingunity动态纹理变化
【发布时间】:2016-01-12 02:04:36
【问题描述】:

我已经在 blender3d 中构建了模型,并将其导入到我在 fbx 中的统一项目中。该模型包含两种材料。之后我试图改变materials[1].mainTexture的纹理:

texs = Resources.LoadAll("", typeof(Texture2D));
photos.GetComponent<Renderer> ().materials[1].mainTexture = (Texture2D)texs[10];

在编辑器模式下一切似乎都很好,但是当我构建应用程序时,模型没有呈现。我已经发现,如果我不改变纹理,一切都会很好。

我该如何解决这个问题?

【问题讨论】:

  • 我可以通过使用字节数组来更改我的旧项目中的纹理。创建一个纹理变量并通过 tex.LoadImage() 方法设置它。

标签: c# unity3d textures mesh unity5


【解决方案1】:

在游戏中加载所有Texture2D 资源,然后将第二个材质的mainTexture 设置为这些加载资源中的第11 个纹理似乎有点冒险。如果您将更多Texture2Ds 添加到项目/该纹理文件夹,则索引可能会更改。此外,Resources.LoadAll 可能无法保证您的预期顺序(在调试模式和发布模式下可能不同)。如果您在该纹理集合中已经有10 的静态索引,您应该将其声明为静态(或者就脚本而言只是public Texture2D 并在检查器中分配它,即固定您想要的纹理申请。

【讨论】:

  • 我不会再添加任何纹理了。问题在于更改 mainTexture。我试图从公共 Texture2D 获取纹理并将其设置为 mainTexture 但它也没有给我任何结果。
  • 如果你设置了photos.GetComponent&lt;Renderer&gt;().materials[1].mainTexture = someTexture; 而脚本中有public Texture2D someTexture; 并且这不会改变纹理,那么你做错了什么。您应该通过记录一些关于您分配给什么材质以及目标纹理是什么的值来开始调试。
  • 可以,但仅限于编辑器模式。构建后一切都出错了
  • 奇怪的错误。这可能不是 Unity 的错,它应该能够加载纹理 (Resources.Load()) 并将其分配给编辑器和构建游戏中的材质。您应该尝试从资源中加载纹理并将其分配为一个小的、独立的项目中的材质纹理,以查看其是否有效。 (即创建一个最小的、完整的、可验证的示例 [stackoverflow.com/help/mcve])。否则,这是其他东西的副作用。
  • 我最好尝试安装更新版本的 unity 并尝试从那里构建我的项目。感谢您的建议
猜你喜欢
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多