保姆式教学-实现天空盒旋转

目录

一、天空盒材质设置

1)在菜单栏window->Rendering->lighting

2)设置天空盒子材质,替换默认材质

3)认识Rotation变量

、代码实现让天空盒转起来


在一个小Unity项目中,需要将天空盒旋转,以便云朵能够简单移动效果,项目是URP项目,现做下记录,unity 编辑器是2020.1.0f1版本。早期的版本天空盒可以通过Camera.main的对象获得。

现在URP项目统一使用RenderSettings 设置直接获得


一、天空盒材质设置

1)在菜单栏window->Rendering->lighting

 

我们看到天空盒子的材质,没错,修改的就是它,当然我是修改好了。下面讲解如何替换天空盒材质。

2)设置天空盒子材质,替换默认材质

创建一个带SkyBox/Panoramic shader的材质,该材质要求天空盒是一张球面的天空图

 该材质天空贴图是一张图

如果是六边形贴图,那么创建的材质选择SkyBox/6 sided这个shader

当然如果你制作了一个cubemap图,那么你创建的材质的shader 选择为skybox/Cubmap

3)认识Rotation变量

但是不管我们选择那个我们发现这三个材质都有propery 面板中都有Rotation选项,在编辑的代码中我们到该面板变量是_Rotation变量

操作步骤如下:打开shader面板,看到我们定义的变量

 

 我们通过代码控制就是_Rotation变量,当天空盒材质创建好了,你应该改在lignting面板中去替换它


二、代码实现让天空盒转起来

材质创建完成后,接下就是代码了,对于_Rotation变量因为是浮点数,所以我们需要SetFloat()函数和来修改其值,天空盒的材质信息通过RenderSettings获得,它是全局的。具体代码如下:

public class USkyRotate : MonoBehaviour
    {
        private float rot = 0;
        //旋转速率
        public float rate = 0.7f;

        public void Start()
        {
            rot = RenderSettings.skybox.GetFloat("_Rotation");
        }

        public void Update()
        {

            if (RenderSettings.skybox == null)
                return;


            rot += rate * Time.deltaTime;
            rot %= 360;
            RenderSettings.skybox.SetFloat("_Rotation", rot);
        }
    }

猜你喜欢

转载自blog.csdn.net/lejian/article/details/129991491