如何在游戏环境发生变化时交换立方体贴图
本文关键字:交换 立方 立方体 体贴 变化 游戏 环境 | 更新日期: 2023-09-27 18:24:56
我是一个团结的新手,需要一些帮助。。。
我有两种不同的环境供用户选择。我为每个环境生成了一个立方体映射。当用户切换环境时,我需要换掉场景中反映的立方体贴图。以下是一些想法:
-
为所有资源创建2种材质,并在场景更改时在运行时指定材质。我遇到的问题是,这些都是大量资产的大型场景。如果不必遍历场景中的每一个对象,我该怎么做呢。
-
当用户切换环境时,找到一种动态重新分配立方体映射的方法。也许循环浏览所有场景材质,寻找一个立方体贴图的存在,然后用另一个替换它。
看来这就是我所能想到的,我倾向于#2。只是好奇它是否会引起表演上的轰动。有人有更好的建议吗?
使用上面的概念#2。。。
// replaces the reflection cubemap for the selected environment (garage or gallery)
public void setReflectionMaps(Cubemap cubeMap)
{
// get all of the mesh renderers
var renderers = truckGO.GetComponentsInChildren<Renderer>();
foreach (Renderer r in renderers) {
// get the material for each renderer
Material mat = r.sharedMaterial;
// check if the material has a cubemap
if (mat.HasProperty("_ReflectionMap")) {
// replace existing cubemap
mat.SetTexture("_ReflectionMap",cubeMap);
}
}
}