【Unity3D插件】Unity3D插件之天气系统/日夜系统插件-UniStorm
推荐阅读
- CSDN主页
- GitHub开源地址
- Unity3D插件分享
- QQ群:398291828
- 小红书
- 小破站
一、前言
1.01365=37.8,1.02365=1377.4,每天进步一点点,一年后就差了几十倍的差距,加油吧少年。
UniStorm
是一款强大的动态昼夜天气系统,能够以较快的帧速率创建AAA级动态生成的天气、照明和天空
,并且具有300多个可定制的组件,允许用户创建任何可以想象的环境。
并且UniStorm
还兼容通用渲染管线(URP)
和高清渲染管线(HDRP)
,URP开发者狂喜。
UniStorm 4.0
带来一个完全重新设计的云系统,能够创建 AAA 的程序化、自我投影、PBR、体积云,其帧率优异且仅使用一个绘制调用!UniStorm
的云使用的是最新的渲染以及性能技术,例如时间性重投和 LOD
。UniStorm
的云包含 4 个质量设置以及一个体积和 2D 选项,并都可以在运行时或在 UniStorm
编辑器中进行更改。这使其能够支持众多设备和电脑。简单易用的 API 让添加游戏内的质量控制变得简单无阻。
模块化天气能让用户创建自定义天气类型。沙尘暴、极光、冰雹风暴、雷暴等都可以实现。对于多少天气类型 UniStorm
是没有任何限制的,而且最好的是它能让用户对每个天气类型自定义特效、设置和音效。UniStorm
带来 31 种天气类型!
其中包括:极光、吹起的叶子、吹起的雪、吹起的草、萤火虫、晴朗、大致晴朗、部分多云、大致多云、多云、阴天、多雾、细雨、小雨、雨、大雨、冰雹、雷暴、小雪、雪、大雪、雷雪、火雨、尘暴以及更多!
UniStorm
的体积云的特色是时间性重投和 LOD,都具有 4 个质量设置(低、中、高和超级),经过估算其效率远比以前的设置更高。这使 UniStorm
能够在几乎所有计算机上顺畅运行。多亏了 UniStorm
着色器,摄像头远裁平面距离没有最大限制,因此你可以使用任何距离。
UniStorm
的多合一功能也支持移动和 VR(目前仅是多通道)。里面甚至还有一个易用的选项可以自动将所有优化设置应用于指定平台,同时保持用户的自定义设置!
UniStorm
允许用户创建无限数目的天气类型。每次天气变换时, UniStorm
都会根据全局过渡速度进行无缝的转换。
每种天气类型都可以利用其云层、云风格、云高度、粒子特效、阳光强度、月光强度、云阴影强度、音效、风量以及其他各种设置进行自定义,从而实现了真正独特且高自定义性的天气。
UniStorm
的程序化闪电系统允许对象能被雷击中。用户可以规定闪电击中地面和物体的概率。当雷击中时,用户可以自定义其产生的特效。利用适合的标签甚至是火特效都可以做到。
白天/夜晚循环和颜色控制。
UniStorm
具有内置时间和日期系统,可帮助你追踪玩家的游戏时间。UniStorm 的日历是精确的,甚至可以使用当前的时间和日期。
UniStorm
的内置事件可以在游戏内的每小时、每天、每月、每年甚至在天气转变过程中被调用,让用户轻松创建游戏功能。
UniStorm
允许你调整每天不同时候的环境和天空的所有颜色,例如日、月颜色、环境光色、阴影和云阴影强度、雾色、天空颜色、环境反射强度等等!每种颜色都具有自己的个体颜色选项来供降水天气类型使用。
OK,可以看出来UniStorm
插件确实是非常强大,那么接下来,我们就来看一下效果如何吧。
二、效果图及资源包下载
效果图
下雪的效果
雷击着火的效果
插件下载
CSDN地址:https://download.csdn.net/download/q764424567/90818855
官方资源地址:https://assetstore.unity.com/packages/tools/particles-effects/unistorm-volumetric-clouds-sky-modular-weather-and-cloud-shadows-2714
三、快速开始
导入插件
首先,我们将下载的插件导入:
插件的主体在UniStorm Weather System
这个文件夹,其他都是一些插件带的地形和Post插件。
打开示例场景
找到Project视图的Assets→UniStorm Weather System→Scenes
文件夹:
这里面都是示例场景,让我们打开Change Weather Event Example
场景,这个是角色站到石板上自动切换到体积云的一个Demo:
切换天气
点击键盘的Exc键,可以查看到左上角有进度条和改变天气的按钮:
可以拖动进度条,查看日夜变化的效果。
点击Change Weather按钮,切换天气。
好的,效果查看的差不多了,接下来就进入到插件的详解了。
四、使用插件
4-1、插件面板介绍
(1)Player&Camera
介绍:
该设置允许你选择Unistorm
的玩家和播放器对象,并且选项会根据你的选择有所调整,该天气系统必须选择Player
和Camera
对象,它将根据Player
和Camera
对象的位置确定生成天气的范围
Player
和Camera
为必要物体,如果该插件无法找到它们,将会在运行的时候报错,也无法看到天气效果。
参数:
Get Player at Runtime
:是否可以在运行期间获得你的Player,可以通过名字或则标签。Get Player Method
:获取Player的模式,默认是通过Tag获取。Player Tag
:Player 的Tag。Camera Tag
:Camera的Tag。Use Runtime Delay
:是否会一直等待进行初始化,直到Player被创建并找到。Use UniStorm Menu
:是否使用UniStorm菜单,该菜单可在运行中通过ESC键触发,功能是选择不同的天气类型。-
Use UniStorm Key
:使用哪个快捷键。
(2)Time
介绍:
时间管理允许你控制各种与时间有关的设置,如开始时间,时间流等。
参数:
Time Settings
:一天的时间设置,小时、分钟、时间流逝、是否使用本地时间、一天的时长等。Date Settings
:日期设置,设置为某年某月某日。Time of Day Sounds Settings
:一天中的声音设置,一天分多少个时间段,每个时间段的声音等。
(3)Weather
介绍:
天气管理允许你调整与天气有关的各种设置,比如天气类型、云雾颜色和闪电设置等等。
参数:
Cloud Settings
:体积云设置,是否启用,体积云的聚集速度等。Weather Settings
:天气设置,是否产生天气,如果Disable的话,UniStorm将一直保持一种天气类型,除非使用代码控制其改变。
(4)Celestial
介绍:
该设置用于控制太阳、月亮、星星和大气的颜色。
参数:
Sun Settings
:太阳颜色等各类属性设置。Moon Settings
:月亮颜色等各类属性设置。
(5)Settings
介绍:
这个Settings控制各种系统相关的设置,比如说要打包到什么平台。个人资料管理器用于导入或导出UniStorm个人资料,以覆盖或导出当前设置。
参数:
Platform Controller
:平台管理,此设置能让UniStorm自动为移动设备或桌面设备设定最佳参数。Profile Management
:个人资料管理,用于导入或导出UniStorm个人资料,以覆盖或导出当前设置。
4-2、使用插件
(1)创建空对象Player
重命名为Player,位置改为(0,0,0):
(2)设置MainCamera参数
调整位置:
(3)创建UniStorm System
(4)设置UniStorm System的Player和MainCamera
将Get Player at Runtime改为Disabled,并将其分别赋值给PlayerTransform和PlayerCamera字段:
(5)运行程序
运行按下Esc 在菜单中选择多云天气进行切换你可以看到,天气变换。
从下拉框选择了一种天气之后,鼠标点击下面的按钮“Change Weather”,之后需要等待一小会,天气才会过渡到新的天气效果来。
/* 插件天气对照表 */
0 Clear //清除 万里无云
1 Mostly Clear //晴时多云
2 Mostly Cloudy //大部多云
3 Partly Cloudy //局部多云;少云
4 Cloudy //阴天的
5 Lightning Bugs //萤火虫
6 Blowing Pollen //吹花粉
7 Blowing Leaves //吹树叶
8 Blowing Pine Needles //吹松针
9 Blowing Snow //高吹雪,飞雪
10 Foggy //有雾的
11 Overcast //阴天的
12 Hail //下冰雹
13 Heavy Rain //大暴雨
14 Rain //雨
15 Light Rain //小雨
16 Drizzle //下毛毛雨
17 Heavy Snow //大雪
18 Snow //雪
19 Light Snow //小雪
20 Thunderstorm //雷雨
21 Thunder Snow //雷阵雨
22 Dust Storm //尘暴
23 Fire Rain //火雨
24 Fire Storm //大火
4-3、代码动态调整日夜和天气
这里的时间是自动变化的,我们可以设置为程序控制。
然后天气也可以用代码控制。
参考代码:
using System.Collections;
using System.Collections.Generic;
using UniStorm;
using UnityEngine;
using UnityEngine.UI;public class Demo : MonoBehaviour
{public Button BtnChangeWeather;public Slider m_Slider;void Start(){// 点击按钮,控制天气BtnChangeWeather.onClick.AddListener(BtnChangeWeatherEvent);m_Slider.onValueChanged.AddListener(SliderValueChangedEvent);}void BtnChangeWeatherEvent(){UniStormSystem.Instance.ChangeWeather(UniStormSystem.Instance.AllWeatherTypes[18]);}void SliderValueChangedEvent(float value){UniStormSystem.Instance.m_TimeFloat=value;}
}
所有的天气预设资源:
UI设置:
五、后记
如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。
你的点赞就是对博主的支持,有问题记得留言:
博主主页有联系方式。
博主还有跟多宝藏文章等待你的发掘哦:
专栏 | 方向 | 简介 |
---|---|---|
Unity3D开发小游戏 | 小游戏开发教程 | 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。 |
Unity3D从入门到进阶 | 入门 | 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。 |
Unity3D之UGUI | UGUI | Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。 |
Unity3D之读取数据 | 文件读取 | 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。 |
Unity3D之数据集合 | 数据集合 | 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。 |
Unity3D之VR/AR(虚拟仿真)开发 | 虚拟仿真 | 总结博主工作常见的虚拟仿真需求进行案例讲解。 |
Unity3D之插件 | 插件 | 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等 |
Unity3D之日常开发 | 日常记录 | 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等 |
Unity3D之日常BUG | 日常记录 | 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。 |