首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在游戏环境发生变化时交换cubemap

如何在游戏环境发生变化时交换cubemap
EN

Stack Overflow用户
提问于 2015-11-30 01:05:58
回答 1查看 135关注 0票数 0

我是个团结的新手需要一点帮助..。

我有两个不同的环境,用户可以选择。我为每个环境生成了一个cubemap。当用户切换环境时,我需要交换被反射到场景中的cubemap。以下是一些想法:

  1. 为所有资产创建2个材料,当场景发生变化时,在运行时分配该材料。我的问题是,这些都是有大量资产的大型场景。我怎样才能做到这一点,而不必去检查现场的每一个物体。
  2. 找到一种在用户切换环境时动态重新分配cubemaps的方法。也许循环遍历所有的场景材料,寻找一个立方体地图,然后用另一个替换它。

这似乎是我唯一能想到的,我倾向于第二,只是好奇它是否会导致一个性能的成功。有人有更好的建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 04:03:43

使用上面的概念2..。

代码语言:javascript
复制
// 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);
        }
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33990058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档