Unity Skybox 之 代码动态修改天空盒子的俩方式
1、打开Unity,新建一个空工程,具体如下图

2、然后向工程中导入一些天空盒子材质,具体如下图

3、第一种方式代码动态设置天空盒子:
在 MainCamera 中添加组件 Skybox(注意一定要把Skybox添加到camera上,不然好像 Skybox 无效),具体如下图

4、在工程中新建脚本 FirstChangeSkybox,然后双击或者右键进行脚本编辑,具体如下图

5、FirstChangeSkybox 脚本设置材质数组,和 Skybox 参数,获得Skybox组件,在 Update 中监听按下 Space 动态设置天空盒子,具体如下图

6、FirstChangeSkybox 脚本具体内容如下:
using UnityEngine;
public class FirstChangeSkybox : MonoBehaviour
{
// 天空盒子的材质
public Material[] mat;
// 天空盒子组件
public Skybox sky;
void Start()
{
// 获得天空盒子组件
sky = GetComponent<Skybox>();
}
void Update()
{
// 按下空格键随机改变天空盒子材质
if (Input.GetKeyDown(KeyCode.Space))
{
sky.material = mat[Random.Range(0, mat.Length)];
}
}
}
7、脚本编译正确,回到Unity中,把 FirstChangeSkybox 挂载到 MainCamera上,并且天空盒子材质赋值,具体如下图

8、运行场景,按下 Space ,即可看到天空盒子,动态设置了,具体如下图

9、第二种方式代码动态设置天空盒子:
新建一个场景,新建脚本 SecondChangeSkybox,使用地位种方式动态设置天空盒子,通过 RenderSettings.skybox 设置天空盒子,具体如下图


10、SecondChangeSkybox 脚本具体内容如下:
using UnityEngine;
public class SecondChangeSkybox : MonoBehaviour
{
// 天空盒子的材质
public Material[] mat;
void Update()
{
// 按下A键随机改变天空盒子材质
if (Input.GetKeyDown(KeyCode.A))
{
ChangeSkybox(mat[Random.Range(0, mat.Length)]);
}
}
/// <summary>
/// 把材质付给
/// </summary>
/// <param name="newSkybox"></param>
private void ChangeSkybox(Material newSkybox)
{
RenderSettings.skybox = newSkybox;
}
}
11、脚本编译正确,回到Unity中,把 FirstChangeSkybox 挂载到 MainCamera上,并且天空盒子材质赋值,具体如下图

12、运行场景,按下 A ,即可看到天空盒子,动态设置了,具体如下图
