如果你只是想动态改变天空盒:建议查看这篇文章unity 天空盒动态变化,了解如何在Unity - Meteor and Butterfly - 博客园中用代码动态修改天空盒
新建一个shader材质材料,将shader的shader属性改为
在着色器中查找图像的名称
4.通过上一步发现Cubmap的名字叫_Tex游戏素材下载 免费,写一个脚本,sky_tex[]是一个天空盒图片数组
动态天空盒切换可以通过脚本实现。这种方法对模型材质中的反射天空盒没有影响(效果如下),它的反射只会停留在第一个天空盒中,即使你怎么改变天空盒也不会改变。
假设我们的第一个天空盒是这样的,镜面反射是这样的
当我们通过脚本动态改变天空盒的时候,我们会发现只有背景发生了变化,镜头的反射效果依然会停留在第一个天空盒中。
一般如何修改天空盒
这里修改后,我要点击下面生成的光照。我搜索了一下,似乎没有找到动态点击这个按钮的方法。
随着天空盒的变换,对应模型的反射也随之改变方法一
新建一个反射检测器,然后将模型放在这个发射检测器中,反射效果也会达到。
调整参数,
这样设置上面的脚本后unity 天空盒动态变化,就可以实时改变镜头的反射效果了(这个方法可能比较耗时,推荐更好的方法)。
方法二
这样,我们只需要修改里面的cubemap,在新脚本中加入如下代码
//天空盒文件夹的名字
private string sky_texture = "sky_texture";
//找到名为:ReflectionProbe 的游戏对象
GameObject fs = GameObject.Find("ReflectionProbe");
//获取对应的组件(可以获取"ReflectionProbe"对象里面的任何组件,只需要修改<>中的名字)
refProbe = fs.GetComponent();
//指定自定义反射纹理
refProbe.customBakedTexture = Resources.Load(sky_texture + "/Sky" + sky_i) as Texture;