c# - 如何通过单击按钮更改多个对象的纹理?
问题描述
将不胜感激的建议。
- 我正在 Unity 中处理一个简单的 3D 场景。
- 我有一个带有滚动视图的画布,里面装满了按钮。
- 我有几架 3D 飞机悬在空中。
- 当用户点击一个按钮时,平面上的纹理应该会改变。因此,例如,如果我单击“水果”按钮,我应该在飞机上看到不同的水果图像,如果我单击“蔬菜”——如果是蔬菜等,则会看到不同的图像。
实施它的最佳方法是什么?我可以使用一堆公共纹理变量创建一个脚本,将所有图像拖到那里,然后硬编码哪个纹理进入哪个平面上的哪个按钮单击。但是有没有更好(但不太复杂)的解决方案?
解决方案
我猜你想要做的是, 当按下某个按钮时,它将运行一个脚本,将其中一个平面更改为某种材料
这里有一些示例代码给你一个例子。
public Material[] textures;
public GameObject[] planes;
public void ChangeTexturetosomefruit()
{
planes[0].GetComponent<MeshRenderer>().material = textures[0];
}
public void ChangeTexturetosomeotherfruit()
{
planes[1].GetComponent<MeshRenderer>().material = textures[1];
}
然后在编辑器中,您可以将相应索引中的材料拖入。
注意:您应该记住将哪个纹理和哪个平面放在哪个索引上。这应该变得非常简单。
我从索引 0 开始的原因是因为那是第一个索引,我将第一个 游戏对象的 材质设置为纹理数组中的第一个 材质
推荐阅读
- macos - 在 Mac 上运行 Fortran 时出错
- google-bigquery - Bigquery/标准 SQL:如何使用 sum() 聚合所有列(大约 100 列)?
- forms - NetSuite:在线客户表格
- php - php-sql where 选择日期范围的选项
- vba - VBA Selenium Sendkeys 修改键
- java - 类名在 ORM 过程中是否重要?
- jquery - 从表中删除行
- python - 错误:从 tensorflow.examples.tutorials.mnist 导入 input_data
- database - 按天数,所有天数
- javascript - 当您将 html 文件链接到 js 文件时,您是否必须向 js 文件添加一些(链接)代码?