Unity 之基于URP使用UniStorm Weather System天气系统

内容将会持续更新,有错误的地方欢迎指正,谢谢!
 

Unity 之基于URP使用UniStorm Weather System天气系统
     
TechX 坚持将创新的科技带给世界!

拥有更好的学习体验 —— 不断努力,不断进步,不断探索
TechX —— 心探索、心进取!

助力快速实现 UniStorm 基于URP的天气系统

为初学者节省宝贵的学习时间,避免困惑!


前言:

  Unity 版本:2021.3.38f1

  UniStorm-Volumetric-Clouds-Sky-v5.3.1.unitypackage

  在URP中使用UniStorm URP System时,需要先搭建好URP的环境,这里不在赘述,不清楚的童鞋,可以去网上找一下教程。

我这里做测试时使用的Unity版本是2021.3.38f1,UniStorm 插件可以去官网 Asset Store下载。

TechX 教程效果:

在这里插入图片描述


文章目录

  • 一、导入UniStorm-Volumetric-Clouds-Sky-v5.3.1.unitypackage插件
  • 二、安装UniStorm URP Support
  • 三、配置URP管线资源
    • 1、设置UniversalRenderPipelineAsset
    • 2、设置UniversalRenderPipelineAsset_Renderer
    • 3、添加URP Renderer Features
  • 四、UniStorm URP Support 示例场景
  • 五、UniStorm System 示例演示


一、导入UniStorm-Volumetric-Clouds-Sky-v5.3.1.unitypackage插件


将UniStorm包导入到Unity中,导入之后可以看到UniStorm Weather System文件夹,其中可以看到URP Support文件夹,表示这个插件支持URP。

在这里插入图片描述


二、安装UniStorm URP Support


找到位于 UniStorm Weather System>URP Support>UniStorm URP Support 下的 UnityPackage,并将其导入到当前项目中(您可以通过在 Unity 中双击 UniStorm URP Support UnityPackage 文件来导入)。

这将更新多个脚本和着色器以与 URP 兼容,添加一些新脚本,并向管道资源添加一些图像效果。

在这里插入图片描述


三、配置URP管线资源


打开Project Settings面板,从Graphics选项中找到当前使用的渲染管线。

在这里插入图片描述

1、设置UniversalRenderPipelineAsset


选择当前的渲染管线UniversalRenderPipelineAsset,在Inspector面板上找到属性Depth Texture并勾选。

在这里插入图片描述

2、设置UniversalRenderPipelineAsset_Renderer


选择当前的渲染管线UniversalRenderPipelineAsset,在Inspector面板上找到Renderer List列表并选中UniversalRenderPipelineAsset_Renderer。

如下图所示,设置Rendering下的Rendering Path为Forward,设置Depth Priming Mode 为Forced。

设置Compatibility下的Internediate Texture 为Always,这将使添加的Render Features可见

在这里插入图片描述

3、添加URP Renderer Features


在完成设置之后你可以转到“Window”>“UniStorm”>“Add URP Renderer Features”。这会自动将添加所需的渲染器功能添加到你的通用渲染管道资产中。

在这里插入图片描述



四、UniStorm URP Support 示例场景


你现在可以测试位于 UniStorm Weather System>URP Support>Scene 下的 UniStorm URP Support示例场景。

场景中UniStorm URP System为天气系统管理脚本,在这里可以对天气系统进行各种各样的配置。

在这里插入图片描述


五、UniStorm System 示例演示


这里以5种天气的切换为例,可以切换晴天、雾天、小雨、中雨和大雨,同时还可以切换时间段,正午、黄昏和傍晚。

在这里插入图片描述

/// <summary>
/// 天气类型
/// </summary>
public enum WeatherType : int
{Sun = 1,    //晴天Fog = 2,    //雾天LightRain = 3,    //小雨ModerateRain = 4,    //中雨HeavyRain = 5,    //大雨
}/// <summary>
/// 当前天气的时间段
/// </summary>
public enum WeatherTimeType : int
{Noon = 1,    //正午Dusk = 2,    //黄昏Evening = 3,    //傍晚
}public class WeatherControl : MonoBehaviour
{/// <summary>/// 根据天气时间和天气类型改变天气/// </summary>/// <param name="weatherType"></param>/// <param name="weatherTimeType"></param>public void ChangeWeather(WeatherType weatherType, WeatherTimeType weatherTimeType){ChangeWeatherTimeType(weatherTimeType);ChangeWeatherType(GetWeather(weatherType),true);}private void ChangeWeatherType(UniStorm.WeatherType weatherType,bool isInstantly=false){if (isInstantly){//Change Weather UI InstantlyUniStormManager.Instance.ChangeWeatherInstantly(weatherType);}else{//Change Weather UI With TransitionUniStormManager.Instance.ChangeWeatherWithTransition(weatherType);}           }       private void ChangeWeatherTimeType(WeatherTimeType dayTime){switch (dayTime){case WeatherTimeType.Noon:UniStormSystem.Instance.m_TimeFloat = 0.5f;break;case WeatherTimeType.Dusk:UniStormSystem.Instance.m_TimeFloat = 0.729f;break;case WeatherTimeType.Evening:UniStormSystem.Instance.m_TimeFloat = 0.8125f;break;}}/// <summary>/// 获取所有类型的天气/// </summary>/// <returns></returns>private List<UniStorm.WeatherType> GetAllWeatherTypes(){return UniStormSystem.Instance.AllWeatherTypes;}/// <summary>/// Sun-Mostly Clear    Fog-Foggy   LightRain-Light Rain    ModerateRain Rain    HeavyRain Heavy Rain/// </summary>/// <param name="weatherType"></param>/// <returns></returns>private UniStorm.WeatherType GetWeather(WeatherType weatherType){string weathName = "";switch (weatherType){case WeatherType.Sun:weathName = "Clear";break;case WeatherType.Fog:weathName = "Foggy";break;case WeatherType.LightRain:weathName = "Light Rain";break;case WeatherType.ModerateRain:weathName = "Rain";break;case WeatherType.HeavyRain:weathName = "Heavy Rain";break;}return GetWeatherByName(weathName);}/// <summary>/// 获取天气的名称/// </summary>/// <param name="weatherType"></param>/// <returns></returns>private UniStorm.WeatherType GetWeatherByName(string weatherName){List<UniStorm.WeatherType> weatherTypes = GetAllWeatherTypes();IEnumerable<UniStorm.WeatherType> vs = weatherTypes.Where((item) => item.WeatherTypeName == weatherName);UniStorm.WeatherType weatherType = null;if (vs.Count() > 0){weatherType = vs.FirstOrDefault();}return weatherType;}
}




TechX —— 心探索、心进取!

每一次跌倒都是一次成长

每一次努力都是一次进步


END
感谢您阅读本篇博客!希望这篇内容对您有所帮助。如果您有任何问题或意见,或者想要了解更多关于本主题的信息,欢迎在评论区留言与我交流。我会非常乐意与大家讨论和分享更多有趣的内容。
如果您喜欢本博客,请点赞和分享给更多的朋友,让更多人受益。同时,您也可以关注我的博客,以便及时获取最新的更新和文章。
在未来的写作中,我将继续努力,分享更多有趣、实用的内容。再次感谢大家的支持和鼓励,期待与您在下一篇博客再见!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机体系结构】缓存的false sharing

在介绍缓存的false sharing之前&#xff0c;本文先介绍一下多核系统中缓存一致性是如何维护的。 目前主流的多核系统中的缓存一致性协议是MESI协议及其衍生协议。 MESI协议 MESI协议的4种状态 MESI协议有4种状态。MESI是4种状态的首字母缩写&#xff0c;缓存行的4种状态分别…

Swift 中强大的 Key Paths(键路径)机制趣谈(上)

概览 小伙伴们可能不知道&#xff1a;在 Swift 语言中隐藏着大量看似“其貌不扬”实则却让秃头码农们“高世骇俗”&#xff0c;堪称卧虎藏龙的各种秘技。 其中&#xff0c;有一枚“不起眼”的小家伙称之为键路径&#xff08;Key Paths&#xff09;。如若将其善加利用&#xff…

java面试课程-SpringIOC部分源码解析

1.SpringIOC的refresh源码解析 核心&#xff1a; 核心使用的是&#xff1a; 需要完成配置类的解析&#xff0c;各种BeanFactoryProcessor的注册。还有写国际化配置的初始化。Web容器的内部构造。 上面几个方法是refresh方法的内容。注意可以与applicationContext里的内容一起…

个人博客|PHP源码|支持多国语言切换

一. 前言 今天小编给大家带来了一款可学习&#xff0c;可商用的&#xff0c;支持多国语言的个人博客网站源码&#xff0c;支持二开&#xff0c;无加密。此博客相当简洁&#xff0c;也适合海外。详细界面和功能见下面视频演示。 如果您正好有此需求源码&#xff0c;请联系小编…

七大排序算法的深入浅出(java篇)

&#x1f341; 个人主页&#xff1a;爱编程的Tom&#x1f4ab; 本篇博文收录专栏&#xff1a;Java专栏&#x1f449; 目前其它专栏&#xff1a;c系列小游戏 c语言系列--万物的开始_ 等等 &#x1f389; 欢迎 &#x1f44d;点赞✍评论⭐收藏&#x1f496;三连支…

【Rust入门教程】hello world程序

文章目录 前言Hello World程序运行总结 前言 对于学习任何一种新的编程语言&#xff0c;我们都会从编写一个简单的Hello World程序开始。这是一个传统&#xff0c;也是一个开始。在这篇文章中&#xff0c;我们将一起学习如何在Rust中编写你的第一个程序&#xff1a;Hello Worl…

解决pip安装时的“SyntaxError: invalid syntax”错误

项目场景&#xff1a; 项目中有新的成员加入时&#xff0c;第一步就是安装开发环境&#xff0c;然而往往同样的机器、同样的配置&#xff0c;我们却总能遇到各种各样不同的问题。 今天分享一个简单的操作问题。 问题描述 项目用到pandas&#xff0c;安装pandas时遇到Syntax…

linux 安装腾讯会议和解决ubuntu打开腾讯会议提示:不兼容 wayland 协议

一. 下载腾讯会议安装包 腾讯会议下载链接 二. 命令行安装 cd [安装包路径] sudo dpkg -i TencentMeeting_0300000000_3.19.1.400_x86_64_default.publish.deb 三. 打开腾讯会议提示无法支持wayland 协议 解决方法: 打开终端 sudo vi /etc/gdm3/custom.conf打开 #Wayland…

GNeRF代码复现

https://github.com/quan-meng/gnerf 之前一直去复现这个代码总是文件不存在&#xff0c;我就懒得搞了&#xff08;实际上是没能力哈哈哈&#xff09; 最近突然想到这篇论文重新试试复现 一、按步骤创建虚拟环境安装各种依赖等 二、安装好之后下载数据&#xff0c;可以用Blen…

Rocky Linux 9 系统OpenSSH CVE-2024-6387 漏洞修复

Rocky Linux 9系统 OpenSSH CVE-2024-6387 漏洞修复 1、漏洞修复2、修复思路3、修复方案3.1、方案一3.2、方案二 4、总结5、参考 1、漏洞修复 CVE-2024-6387&#xff1a;regreSSHion&#xff1a;OpenSSH 服务器中的远程代码执行&#xff08;RCE&#xff09;&#xff0c;至少在…

【Java学习笔记】java图形界面编程

在前面的章节中&#xff0c;我们开发运行的应用程序都没有图形界面&#xff0c;但是很多应用软件&#xff0c;如Windows下的Office办公软件、扑克牌接龙游戏软件、企业进销存ERP系统等&#xff0c;都有很漂亮的图形界面。素以需要我们开发具有图形界面的软件。 Java图形界面编程…

【大数据】什么是数据融合(Data Fusion)?

目录 一、数据融合的定义 二、数据融合的类型 三、数据融合的挑战 四、数据融合的方法 五、数据融合的关键环节 1.数据质量监控指标的制定和跟踪 2.异常检测和处理机制 3.实时数据监测与反馈机制 4.协同合作与知识共享 一、数据融合的定义 数据融合&#xff08;Data Fusion&…

介绍一些好玩且实用的开源的AI工具

介绍一些好玩且实用的开源的AI工具 随着人工智能技术的迅猛发展&#xff0c;开源社区涌现出了许多关于AI的项目&#xff0c;这些项目不仅展示了技术的创新力&#xff0c;也为开发者提供了丰富的工具和资源。本文将介绍几个既有趣又实用的开源人工智能工具&#xff0c;它们不仅…

vue组件深入介绍之插槽

了解插槽之前请先了解vue组件基础及注册 Vue2官网介绍 Vue3官网介绍 1、vue2插槽介绍 在2.6.0中&#xff0c;具名插槽和作用域插槽引入了一个新的统一语法&#xff08;v-slot指令&#xff09;。它将取代slot和slot-scope&#xff1b; Vue 实现了一套内容分发的 API&#xf…

奇瑞被曝强制加班,“896”成常态且没有加班费

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7 月 2 日消息&#xff0c;一位认证为“奇瑞员工”的网友近期发帖引发热议&#xff0c;奇瑞汽车内部存在强制加班行为&#xff0c;每周加班时长需大于 20 小时并且没有加班费&#xff0c;仅补贴 10 元…

elementui中@click短时间内多次触发,@click重复点击,做不允许重复点击处理

click快速点击&#xff0c;发生多次触发 2.代码示例&#xff1a; //html<el-button :loading"submitLoading" type"primary" click"submitForm">确 定</el-button>data() {return {submitLoading:false,}}//方法/** 提交按钮 */sub…

昇思25天学习打卡营第6天|数据变换 Transforms

学习目标&#xff1a;熟练掌握数据变换操作 熟悉mindspore.dataset.transforms接口 实践掌握常用变换 昇思大模型平台学习心得记录&#xff1a; 一、关于mindspore.dataset.transforms 1.1 变换 mindspore.dataset.transforms.Compose将多个数据增强操作组合使用。 mindspo…

OBD诊断(ISO15031) 04服务

文章目录 功能简介ISO 9141-2、ISO 14230-4和SAE J1850的诊断服务定义1、清除/重置与排放相关的诊断信息请求消息定义2、请求与排放相关的DTC响应消息定义3、报文示例 ISO 15765-4的诊断服务定义1、请求与排放相关的DTC请求消息定义2、请求与排放相关的DTC响应消息定义3、否定响…

信息安全体系架构设计

对信息系统的安全需求是任何单一安全技术都无法解决的&#xff0c;要设计一个信息安全体系架构&#xff0c;应当选择合适的安全体系结构模型。信息系统安全设计重点考虑两个方面&#xff1b;其一是系统安全保障体系&#xff1b;其二是信息安全体系架构。 1.系统安全保障体系 安…

linux下Java11无jre文件夹的问题

项目升级需要更高级的Java版本&#xff0c;于是下载了jdk-11.0.22_linux-x64_bin.tar.gz&#xff0c;解压后jdk-11.0.22下没有jre&#xff0c;导致eclipse下“build path”无法加载jre。 Java11以上版本不在提供jre&#xff0c;Java11安装后&#xff0c;需要如下处理&#xff1…