Unity天空盒SkyBox的简单使用

本文介绍了如何在Unity中使用自带的SkyBoxShader,包括6-sided、Cubemap和Panoramics效果的实现,以及通过脚本动态切换天空盒材质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,Unity自带的SkyBox Shader

(1)创建一个材质

(2)点击创建好的材质在inspector面板查看Unity自带的Shader

(3)点击Skybox可以看到4种shader

2,在unity store商场添加免费的资源来练习使用这几种shader

我选择的是图中圈中的

(1)更改shader为第一种shader,6 sided(6边的意思,天空可以说就是6张图片组成,上下左右前后),将资源中的图片一对一导入,例如up就放到Up的图片槽中即可。

随后将创建好的materal拖到scene场景中即可,我这边改名为6side

随后在点击下图的lighting

可以看到默认的材质已改为6Side

(2)练习使用第二种Cubemap

重新创建一个材质,改名为Cubemap,改shader为cubemap

创建好后可以看到cubemap缺少

在资源中找到cubemap需要的资源

点击select选择这个到刚才创建好的cubemap上

之后拖拽到scene中可以看到,天空盒材质已改为我们自己创建的Cubemap

(3)练习使用Panoramics

基本步骤一样,只不过刚才的Texture shape是Cube,这个是2D

但是我们将刚才的这张图的Cube改为2D后看到

这个就是6张图片,而不是一张全景图。同理我们查看资源中带有的Panoramics资源是一张全景图。

而将全景图改为Cube类性。

(4)第四种Procedural(程序化)暂不研究

3,使用简单脚本完成天空盒的更换

using UnityEngine;

public class SkyBox : MonoBehaviour
{
    //1,需要一个天空盒的材质数组;
    public Material[] skyBox;
    //2,需要一个索引值来控制材质数组的循环
    private int index = 0;
   /*
    void InvokeRepeating(string methodName, float time, float repeatRate);
    methodName:要调用的方法的名称,作为字符串传递。
    time:首次调用 methodName 方法之前的延迟时间(以秒为单位)。
    repeatRate:之后每次调用 methodName 方法之间的时间间隔(以秒为单位)
   */
    void Start()
    {
        //3秒后开始调用changeSkyBox方法,每隔3秒调用一次
        InvokeRepeating("changeSkyBox", 3f, 3f);
    }

    private void changeSkyBox()
    {
        RenderSettings.skybox = skyBox[index];
        index++;
        index %= skyBox.Length;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值