Unity代码设置天空盒子skybox 及定时切换

这篇具有很好参考价值的文章主要介绍了Unity代码设置天空盒子skybox 及定时切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言:并非自创,看的是同行的博文——在此向前人致谢

一、代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeSkyBox : MonoBehaviour
{
    public Material[] mats;
    private int index=0;
    public int changeTime;//更换天空盒子的秒数
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(System.DateTime.Now.Hour);
        InvokeRepeating("ChangeBox",0,changeTime);
    }

    // Update is called once per frame
    void Update()
    {
        
        //if(System.DateTime.Now.Hour>6&& System.DateTime.Now.Hour<18)
        //{
        //    RenderSettings.skybox = mats[0];
        //}
        //else
        //{
        //    RenderSettings.skybox = mats[1];
        //}
    }
    public void ChangeBox()
    {
    
        RenderSettings.skybox = mats[index];
        index++;
        index %= mats.Length;
    }
}

二、解析

1、天空盒子 代码设置 函数
RenderSettings.skybox = 天空盒子材质球;

2、切换原理

public void ChangeBox()
    {
    
        RenderSettings.skybox = mats[index];
        index++;
        index %= mats.Length;
    }

假设有两个天空盒子,放在材质数组中
定义整形变量index,表示要使用材质球的索引
每切换一次索引 index 加1(index++),每次切换要用到的材质球是mats[index]
依次用到的材质球分别是:
mats[0]
mats[1]
mats[2] 2%2=0 即mats[0]
mats[3] 3%2=1 即mats[1]
mats[4] 4%2=0 即mats[0]

3、定时调用
用InvokeRepeating函数,每隔一段时间,调用一下2、的切换函数

 public int changeTime;//更换天空盒子的秒数
  
    void Start()
    {
        Debug.Log(System.DateTime.Now.Hour);
        InvokeRepeating("ChangeBox",0,changeTime);
    }

三、核心

循环算法:
索引加出“数组范围”时,整除“数组长度”,会重新循环——如:索引范围0、1,
当索引加成2时,出了数组范围,整除“数组长度”,得到0,开始循环。文章来源地址https://www.toymoban.com/news/detail-424374.html

到了这里,关于Unity代码设置天空盒子skybox 及定时切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity HDRP怎么设置天空盒

    一、 在Unity HDRP中,设置天空盒需要执行以下步骤: 1、创建一个新的天空系统: 在Unity编辑器中,选择\\\"Window\\\"(窗口)菜单,然后选择\\\"Rendering\\\"(渲染)子菜单。 在下拉菜单中选择\\\"Lighting Settings\\\"(照明设置)。 在Inspector(检视器)窗口中,找到\\\"Sky\\\"(天空)部分。 点击\\\"New

    2024年02月13日
    浏览(33)
  • 【unity设置】导入hdr图并设置为天空盒

    在IBL笔记前,我们都知道IBL是通过环境来作为间接全局光赋予irradiance。 那么首先我们需要导入一张hdr图并将其设置为环境贴图(天空盒)。 这种图片多的小tips放在正文中过于臃肿,这边还是单独拿出来一篇小笔记。 首先我们得找到合适的hdr贴图,这里推荐从这个网站下载

    2024年02月08日
    浏览(29)
  • Unity 场景烘培 ——unity灯光和设置天空盒(二)

    提示:文章有错误的地方,还望诸位大神指出。 接着前面一章继续: link 学习必须一步一步来,不要着急忙慌,拿起就开干。 下面我们先学习了解unity的灯光(light),学习了解了灯光,才能使用多种灯光相互配合才能达到我们想要的效果。 (摘录:大佬链接: link unity中的灯

    2024年02月03日
    浏览(31)
  • unity主场景设置、场景切换、全屏设置、背景音乐设置(场景一加载就开始播放)

    一般情况下我们的场景会有挺多的,这时候我们进入游戏就会有问题了,unity应该先加载哪一个呢? unity给了我们几种方案,其中一种是在 文件——生成设置 里面更改游戏场景的优先级,其中0是最高优先级(当然,必须得先把场景全都加进build中,要不如果你在外部跳转没有

    2024年02月10日
    浏览(40)
  • Unity通过代码切换材质

    「你提需求,我来做」征集活动开始啦!我们正在寻找那些有想法、有创意的小伙伴,为我们带来新的挑战和灵感。 无论是一个小小的功能调整,还是一个全新的创意想法,我们都欢迎你向我们留言并提出你的需求。我们会认真考虑每一个想法,并在可能的情况下尽快实现它

    2024年02月13日
    浏览(34)
  • Unity 天空盒

    在 Unity 中,天空盒是使用天空盒着色器的一种材质。 创建天空盒材质 1.从菜单栏中,单击 Assets Create Material。 2.在 Shader 下拉选单中,单击 Skybox,然后单击要使用的天空盒着色器。 有Skybox/6 Sided、Skybox/Cubemap。第一种是选6张图组成,第二种是单个图拆分六个部分。(这里Text

    2024年02月16日
    浏览(29)
  • 【Unity】自定义Untiy天空

    3、需求:更改默认天空盒,360°显示所需的内容。 实施: 准备材料:一张8K图(更清晰) 步骤: 1、更改Camera为天空盒; 2、制作图片,怎么制作不说了,分辨率8192*4096(可以自己决定哦,但是不能太短) 图片图层结构如下(没有结构):  3、放入Unity 4、更改图片纹理形状

    2023年04月08日
    浏览(29)
  • python,如何设置定时执行python代码-windows本地

    最近写了一个python小程序,希望能每天定时执行,但是又不想用jenkins这样的工具,后来发现windows本地就可以设置,而且很好用,具体步骤如下: 首先,需确保本地python代码已编写好,环境变量已配置好,能运行成功; 1)依次进入:控制面板-大图标-管理工具-任务计划程序

    2024年02月10日
    浏览(31)
  • Unity简单操作:设置触发条件 切换Animator动画控制器 里面播放的Animation动画

    确保animator里面有多个animation动画剪辑,点击Animator里面[Parameters]添加触发条件   添加连线箭头并且 给箭头连线绑定触发事件  添加连线箭头并且 给箭头连线绑定触发事件  

    2024年02月04日
    浏览(47)
  • 【Unity天空盒的制作及使用】使用HDR图或六面图制作天空盒及天空盒的几种使用方式

    前言 Unity工程中每次打开工程映入眼帘的蓝灰过渡的画面就是Unity默认的 天空盒

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包