Unity数字可视化学校_昼夜(三)

news2024/10/6 20:40:40

1、删除不需要的

 UI

 

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

public class EnvControl : MonoBehaviour
{
    //UI
    private Button btnTime;
    private Text txtTime; 

    //材质
    public List<Material> matList=new List<Material>();
    private List<float>  matValueList=new List<float>();

    // Start is called before the first frame update
    void Awake()
    {
        btnTime = transform.Find("Canvas/Panel/btnTime").GetComponent<Button>();
        txtTime = transform.Find("Canvas/Panel/btnTime/Text").GetComponent<Text>();
        txtTime.text = "白天";

        btnTime.onClick.AddListener(onBtnTimeClick);
    }


    // Update is called once per frame
    void Update()
    {
        
    }

    void onBtnTimeClick()
    {
        txtTime.text = txtTime.text == "白天" ? "晚上" : "白天";
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.UI;

public class EnvControl : MonoBehaviour
{
    //UI
    private Button btnTime;
    private Text txtTime; 

    //材质
    public List<Material> matList=new List<Material>();
    private List<float>  matValueList=new List<float>();
    //Post
    private PostProcessVolume postDay;
    private PostProcessVolume PostNight;
    //特效、光照
    private GameObject nightFx;
    private GameObject nightLight;

    // Start is called before the first frame update
    void Awake()
    {
        btnTime = transform.Find("Canvas/Panel/btnTime").GetComponent<Button>();
        txtTime = transform.Find("Canvas/Panel/btnTime/Text").GetComponent<Text>();

        for (int i = 0; i < matList.Count; i++)
        {
            matValueList.Add(matList[i].GetFloat("_E"));
        }

        postDay = transform.Find("Light/PostDay").GetComponent<PostProcessVolume>();
        PostNight = transform.Find("Light/PostNight").GetComponent<PostProcessVolume>();
        
        nightFx = transform.Find("Light/FX").gameObject;
        nightLight = transform.Find("Light/Night").gameObject;

        //初始化
        txtTime.text = "夜晚";
        btnTime.onClick.AddListener(onBtnTimeClick);
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void onBtnTimeClick()
    {
        txtTime.text = txtTime.text == "白天" ? "夜晚" : "白天";
        //白天
        if (txtTime.text== "白天")
        {
            nightFx.SetActive(false);
            nightLight.SetActive(false);
            for (int i = 0; i < matList.Count; i++)
            {
                matList[i].SetFloat("_E", 0f);
            }
            postDay.weight = 1.0f;
            PostNight.weight = 0f;
            UniStorm.UniStormManager.Instance.SetTime(10, 0);
        }

        //夜晚
        if (txtTime.text == "夜晚")
        {
            nightFx.SetActive(true);
            nightLight.SetActive(true);
            for (int i = 0; i < matList.Count; i++)
            {
                //matList[i].SetFloat("_E", 1.0f);
                matList[i].SetFloat("_E", matValueList[i]);
            }
            postDay.weight = 0.0f;
            PostNight.weight = 11.0f;
            UniStorm.UniStormManager.Instance.SetTime(22, 0);

        }
    }

    private void onDestroy()
    {
        for (int i = 0; i < matList.Count; i++)
        {
            matList[i].SetFloat("_E", matValueList[i]);
        }
    }
}

注意:

 

 2、DOTween

DOTween (HOTween v2) | Animation Tools | Unity Asset Store

导入

下载完成后直接导入Unity,如果是新项目第一次导入Unity,会弹出提示框提示DoTween需要初始化,如下图所示:
 

dotween utilitypanel


点击Setup DOTween按钮即可完成配置,当然如果需要自定义一些参数,可以点击Preferences选项卡来进行设置,该选项卡如下图所示:

dotween utilitypanel preferences

初始化完成后,在需要使用DoTween的地方需要引入命名空间DG.Tweening; 这里是一些官方的链接:
快速开始: http://dotween.demigiant.com/getstarted.php
官方文档: http://dotween.demigiant.com/documentation.php

3、属性变化

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.UI;
using DG.Tweening;

public class EnvControl : MonoBehaviour
{
    //UI
    private Button btnTime;
    private Text txtTime; 

    //材质
    public List<Material> matList=new List<Material>();
    private List<float>  matValueList=new List<float>();
    //Post
    private PostProcessVolume postDay;
    private PostProcessVolume PostNight;
    //特效、光照
    private GameObject nightFx;
    private GameObject nightLight;

    // Start is called before the first frame update
    void Awake()
    {
        btnTime = transform.Find("Canvas/Panel/btnTime").GetComponent<Button>();
        txtTime = transform.Find("Canvas/Panel/btnTime/Text").GetComponent<Text>();

        for (int i = 0; i < matList.Count; i++)
        {
            matValueList.Add(matList[i].GetFloat("_E"));
        }

        postDay = transform.Find("Light/PostDay").GetComponent<PostProcessVolume>();
        PostNight = transform.Find("Light/PostNight").GetComponent<PostProcessVolume>();
        
        nightFx = transform.Find("Light/FX").gameObject;
        nightLight = transform.Find("Light/Night").gameObject;

        //初始化
        txtTime.text = "夜晚";
        btnTime.onClick.AddListener(onBtnTimeClick);
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void onBtnTimeClick()
    {
        txtTime.text = txtTime.text == "白天" ? "夜晚" : "白天";
        //白天
        if (txtTime.text== "白天")
        {
            nightFx.SetActive(false);
            nightLight.SetActive(false);
            for (int i = 0; i < matList.Count; i++)
            {
                //matList[i].SetFloat("_E", 0f);
                DoPropertyAnim(matList[i],"_E",0f,1f);
            }
            float weightDay = 0f;
            float weightNeight = 1f;
            DOTween.To(() => weightDay, (x) => { weightDay = x; postDay.weight = x; }, 1f, 1f);
            DOTween.To(() => weightNeight, (x) => { weightNeight = x; PostNight.weight = x; }, 0f, 1f);

            //postDay.weight = 1.0f;
            //PostNight.weight = 0f;
            UniStorm.UniStormManager.Instance.SetTime(10, 0);
        }

        //夜晚
        if (txtTime.text == "夜晚")
        {
            nightFx.SetActive(true);
            nightLight.SetActive(true);
            for (int i = 0; i < matList.Count; i++)
            {
                //matList[i].SetFloat("_E", 1.0f);
                //matList[i].SetFloat("_E", matValueList[i]);
                DoPropertyAnim(matList[i], "_E", matValueList[i], 1f);
            }
            float weightDay = 1.0f;
            float weightNeight = 0f;
            DOTween.To(() => weightDay, (x) => { weightDay = x; postDay.weight = x; }, 0f, 1f);
            DOTween.To(() => weightNeight, (x) => { weightNeight = x; PostNight.weight = x; }, 1f, 1f);

            //postDay.weight = 0.0f;
            //PostNight.weight = 1.0f;
            UniStorm.UniStormManager.Instance.SetTime(22, 0);
        }
    }

    private void onDestroy()
    {
        for (int i = 0; i < matList.Count; i++)
        {
            matList[i].SetFloat("_E", matValueList[i]);
        }
    }

    //属性动画
    void DoPropertyAnim(Material mat, string property, float value, float duration)
    {
        float data = mat.GetFloat(property);
        DOTween.To(()=>data, (x) => { data=x;mat.SetFloat(property,x);},value,duration);

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php-cgi.exe - FastCGI 进程超过了配置的请求超时时限

解决方案一&#xff1a; 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题 内容转载&#xff1a; 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题_php技巧_脚本之家 【详细错误】&#xff1a; HTTP 错误 500.0 - Internal Server Error C:…

棒球网络宣传平台建设规划·野球1号位

棒球网络宣传平台建设规划 棒球网络宣传平台简介棒球网络宣传平台是什么&#xff1f; 棒球网络宣传平台的目标是什么&#xff1f; 棒球网络宣传平台的目标是提高公众对棒球的认知度、促进棒球运动的发展。平台致力于提供优质的棒球资讯、赛事直播、教练和球员的个人专访、棒球…

解决 idea maven依赖引入失效,无法正常导入依赖问题

解决 idea maven依赖引入失效&#xff0c;无法正常导入依赖问题_idea无法导入本地maven依赖_普通网友的博客-CSDN博客 解决 idea maven依赖引入失效&#xff0c;无法正常导入依赖问题 idea是真的好用&#xff0c;不过里面的maven依赖问题有时候还真挺让人头疼&#xff0c;不少小…

使用eXosip+ffmpeg、ffplay命令行实现sip客户端

文章目录 前言一、关键实现1、主要流程2、解决端口冲突&#xff08;1&#xff09;、出现原因&#xff08;2&#xff09;、解决方法 3、解析sdp&#xff08;1&#xff09;、定义实体&#xff08;2&#xff09;、解析视频&#xff08;3&#xff09;、解析音频 4、命令行推拉流&am…

Linux 中利用设备树学习Ⅳ

系列文章目录 第一章 Linux 中内核与驱动程序 第二章 Linux 设备驱动编写 &#xff08;misc&#xff09; 第三章 Linux 设备驱动编写及设备节点自动生成 &#xff08;cdev&#xff09; 第四章 Linux 平台总线platform与设备树 第五章 Linux 设备树中pinctrl与gpio&#xff08;…

AEM接插件|插头测试仪获得中国信通院-泰尔实验室认可

AEM矢量网分及其rj45插头、插座获得中国信通院-泰尔实验室认可。并采购了一套原厂全新设备&#xff0c;进行试验研究。 与keysight矢量网分横向和纵向的对比&#xff0c;确定AEM此套测试方案&#xff0c;完全满足接插件测试标准的验证。并月7月份&#xff0c;正式向AEM厂家采购…

django处理分页

当数据库量比较大的时候一定要分页查询的 在django中操作数据库进行分页 queryset models.PrettyNum.objects.all() #查询所有 queryset models.PrettyNum.objects.all()[0:10] #查询出1-10列 queryset models.PrettyNum.objects.filter(mobile__contains136)[0:10] …

uni-app:实现数字文本框,以及左右加减按钮

效果 代码 <template><view><view classline3><view classline3_position><view classleft>数量<text>*</text></view> <view class"right"><view class"quantity_btn"><view class"…

Splunk Enterprise for mac(可视化数据分析软件)详细安装教程

Splunk Enterprise for Mac是一款可视化数据分析软件&#xff0c;为你提供强大的搜索、 分析和可视化功能&#xff0c;可以帮助您获得有价值的业务情报&#xff0c;从你机器生成的数据。还在等什么&#xff1f;有需要的朋友&#xff0c;欢迎前来下载&#xff01; 实时监测和搜…

React Dva 操作models中的subscriptions讲述监听

接下来 我们来看一个models的属性 之前没有讲到的subscriptions 我们可以在自己有引入的任意一个models文件中这样写 subscriptions: {setup({ dispatch, history }) {console.log(dispatch);}, },这样 一进来 这个位置就会触发 这里 我们可以写多个 subscriptions: {setup…

【重温老古董——Strust2框架】基于Idea使用maven创建Strust2项目

1、新建项目 红色圈出的部分是【强制】,其他部分看个人喜好。 2、修改 pom 文件,管理依赖 <dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.5.22</version></dependency&g…

C#,数值计算——用于从连续的数据值流估计任意分位数的计算方法与源程序

1 分位数Quantile 分位数&#xff08;Quantile&#xff09;&#xff0c;亦称分位点&#xff0c;是指将一个随机变量的概率分布范围分为几个等份的数值点&#xff0c;常用的有中位数&#xff08;即二分位数&#xff09;、四分位数、百分位数等。 2 常见各类分位数 2.1 二分位…

SQL SERVER ip地址改别名

SQL server在使用链接服务器时必须使用别名&#xff0c;使用ip地址就会把192.188.0.2这种点也解析出来 解决方案&#xff1a; 1、物理机ip 192.168.0.66 虚拟机ip 192.168.0.115 2、在虚拟机上找到 C:\Windows\System32\drivers\etc 下的 &#xff08;我选中的文件&a…

组合模式(C++)

定义 将对象组合成树形结构以表示部分-整体’的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。 应用场景 在软件在某些情况下&#xff0c;客户代码过多地依赖于对象容器复杂的内部实现结构&#xff0c;对象容器内部实现结构(而非抽象接口)的变化…

推荐一个OI的维基百科网站

推荐一个关于OI的维基百科网站&#xff1a; https://oi-wiki.org/ 链接: OI Wiki 这里面有很多关于竞赛的知识&#xff0c;还有各种讲解哦&#xff01;&#xff01;&#xff01; 当然&#xff0c;里面要是有什么看不懂的也可以问我哦&#xff01;&#xff01;&#xff01;

激光光束质量图像形状分析仪

随着激光技术在军事、农业、材料加工等领域内的广泛应用&#xff0c;不同领域对激光的特性要求也不相同&#xff0c;如何评价激光的质量也显得尤为重要。随着激光技术越来越成熟&#xff0c;激光开始在通信、军事、航天等领域内得到广泛应用。在军事领域中&#xff0c;如激光武…

mysql 数据库引擎介绍

一、数据库引擎 数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务&#xff0c;从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储…

FreeRTOS(STM32CubeMX)

FreeRTOS FreeRTOS介绍FreeRTOS主要特点什么时候用FreeRTOSSTM32CubeMX中如何使用FreeRTOSSTM32用FreeRTOS点灯 FreeRTOS介绍 FreeRTOS&#xff08;Real-Time Operating System&#xff09;是一款开源的实时操作系统内核&#xff0c;专为嵌入式系统和微控制器设计。它由Richard…

SpringBoot项目如何部署SSL证书 (JKS格式)

1、SpringBoot项目如何部署SSL证书 (JKS格式) 1. 获取 SSL 证书和私钥 首先&#xff0c;你需要获取有效的 SSL 证书和私钥。SSL 证书是一种用于加密通信的数字证书&#xff0c;它可以通过购买商业 SSL 证书或使用免费的 Let’s Encrypt 证书获得。请确保你拥有证书文件和与之…

TCP网络服务器设计

最近设计了一个网络服务器程序&#xff0c;对于4C8G的机器配置&#xff0c;TPS可以达到5W。业务处理逻辑是简单的字符串处理。服务器接收请求后对下游进行类似广播的发送。在此分享一下设计方式&#xff0c;如果有改进思路欢迎大家交流分享。 程序运行在CentOS7.9操作系统上&a…