[Unity3D]呼风唤雨:天气插件UniSky的使用教程与案例

2023-11-13

UniSky是Unity3D的一款模拟环境天气的插件,使用它可以简单的实现呼风唤雨的各种功能。

下载地址:请点击我

使用起来也非常的方便。

引入Package后(注意路径必须是英文否则会出错)Project中会多一个文件夹:

下面我们来简单的创建一个下雨的场景。

首先从UniSky中拖动UniSkyAPI到Hierachy面板:

然后再把Camara与API建立连接:

接下来创建一个空的GameObject用来控制UniSkyAPI,并将脚本ExampleScript拖到它身上:


这个脚本的源码如下:

using UnityEngine;
using System.Collections;

public class ExampleScript : MonoBehaviour {

	// instance of the API
	private UniSkyAPI uniSky;
	
	void Awake() {
		
		// Define instance
		uniSky = GameObject.Find("UniSkyAPI").GetComponent("UniSkyAPI") as UniSkyAPI;
		
		// Initiate and create default UniSky 
		uniSky.InstantiateUniSky();
		// Set some initial states 
		uniSky.SetTime(12.0f);
		uniSky.SetAmbientLighting(new Color(0.1f, 0.1f, 0.1f, 0.1f));
		uniSky.SetStormCenter(new Vector3(0,0,0));
		uniSky.SetSunShadows(LightShadows.Soft);
		
		// Functions to interpolate parameters over time
		/*
		uniSky.LerpCloudCover(0.5f, 5000.0f);
		uniSky.LerpPrecipitationLevel(0.6f, 5000.0f);
		uniSky.LerpStormCloudCover(-1.0f, 10000.0f);
		uniSky.LerpRainLevel(100, 0.2f, 10000.0f);
		uniSky.LerpStormLevel(150, 0.4f, 20000.0f);
		uniSky.LerpSunIntensity(0.2f, 10000.0f);
		uniSky.LerpFogLevel(0.02f, 20000.0f);
		uniSky.LerpAmbientLighting(new Color(0.0f, 0.0f, 0.0f, 0.0f), 5000);
		uniSky.ClearDropletBuffer();
		uniSky.LerpDropletLevel(10, 20000.0f);
		*/
	}

	void Update() {

	}
}

以下是对于插件API函数的简要解释:

API函数/参数
下面是对UniSky参数的介绍,并且都对其进行了效果解释。下面的列表可以再UniSkyAPI.js/cs中找到。
//一天的时间(0到24小时循环)
SetTime(float time);
LerpTime(float time, float milliseconds);
GetTime();



//返回太阳的颜色
GetSunColor();
//启用或禁用太阳和月亮的阴影。类型: "LightShadows.None" 、"LightShadows.Hard"和 "LightShadows.Soft"
public void SetSunShadows(LightShadows sunShadows)
public void SetMoonShadows(LightShadows moonShadows)

 
//设置暴风雨云层中心的坐标
SetStormCenter(Vector3 stormCenter);

 
//散射半径,他影响着天空的颜色(默认是45000,通常情况下是一个真实的天空)
SetScatteringRadius(float scatteringRadius);
LerpScatteringRadius(float scatteringRadius, float milliseconds);

 
//主大气层的覆盖是(-5到5)
void SetCloudCover(float cloudCover);
LerpCloudCover(float cloudCover, float milliseconds);

 
//黑暗的云层,不是暴风雨的大气层。(2-0,越低,云层颜色越深)
SetPrecipitationLevel(float precipitationLevel);
LerpPrecipitationLevel(float precipitationLevel, float milliseconds);

 
//暴风雨的覆盖层级是(建议是-3.5到-1.0)
SetStormCloudCover(float cloudCover);
LerpStormCloudCover(float cloudCover, float milliseconds);

 
//雨的数量。没有大暴雨的,但是都是小雨。(任何地方都是从0-1000)
SetRainLevel(float rainLevel, float sfxLevel);
LerpRainLevel(float rainLevel, float sfxLevel, float milliseconds);
 
//特大暴雨。一片都有雨。(任何地方都是从0-200)
SetStormLevel(float stormLevel, float sfxLevel);
LerpStormLevel(float stormLevel, float sfxLevel, float milliseconds);
 
//太阳的亮度或浓度。由于黑暗中阴天或暴风雨天(0到0.5)淡入淡出
SetSunIntensity(float intensity);
LerpSunIntensity(float intensity, float milliseconds);
 
//设置内置雾(0到0.03)
SetFogLevel(float fogLevel);
LerpFogLevel(float fogLevel, float milliseconds);

 
//设置屏幕图像上滴落的速率(0到5)
SetDropletLevel(float dropletLevel);
LerpDropletLevel(float dropletLevel, float milliseconds);



//设置云的方向,加速度和演化的速度。X=x方向和加速度,Y=y方向和加速度,Z=演化速度(0到1)
SetCloudSpeedDirection(Vector3 speedDirection);
LerpCloudSpeedDirection(Vector3 speedDirection, float milliseconds);
//光晕差异。设置云边缘的照明强度(0到10)。提示:设置为0左右,会有一个很好的卷云效果。
SetGlowVariance(float glowVariance);
LerpGlowVariance(float glowVariance, float milliseconds);
 
//设置云褪色到大气中的距离(0到20)
SetViewDistance(float viewDistance);
LerpViewDistance(float viewDistance, float milliseconds);
 
//调节默认颜色。建议RGB的默认值(1.5,1.5,1.5)。如果你想要粉红色或绿色的云:D
SetColorVariance(Vector3 colorVariance);
LerpColorVariance(Vector3 colorVariance, milliseconds);

//如果你想时间自动循环,这个是时间流逝的速度。(0到0.1)
SetSpeedOfTime(float speedOfTime);



//改变光散射到云中,只影响云的颜色。最好是保持他的默认值,40.(-20到100)
SetRayleighLevel(float rayleighLevel);
//如果启用该选项,一天中时间的播放器与系统时钟同步。
SetUseSystemTime(bool enabled);

 
//改变环境光的颜色。我建议在一天的时间内进行插值或混浊。
SetAmbientLighting(Color ambientLevel);
LerpAmbientLighting(Color ambientLevel, float milliseconds);

 
//设置月亮的大小
SetMoonSize(float moonSize);
 
//清除雾滴缓存
ClearDropletBuffer();
 
//设置打雷闪电的频率。越高越频繁(0到100)。
SetLightningFrequency(float
frequency);

此时点击运行,便会发现UniSky已经基本成型了:



当然想过不是很理想,因为没有地面。。

如果需要下雨的效果,只需要加上这么一行代码:

uniSky.SetStormLevel(1000,1000);
或者是:

uniSky.SetRainLevel(1000,1000);

就可以实现了:

完整的学习案例还是参照插件中自带的案例UniSky Example Scene,效果非常好:

当然啦,如果只是要简单的下雨特效,推荐这款插件:Rain.package

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Unity3D]呼风唤雨:天气插件UniSky的使用教程与案例 的相关文章

随机推荐

  • Eclipse不能启动:JVM terminated. Exit code=-1

    JVM terminated Exit code 1 Dosgi requiredJavaVersion 1 5 Xms40m Xmx512m XX MaxPermSize 256M Djava class path D eclipse p
  • 你期待的Photoshop 2022中哪个功能吸引了你?

    万众瞩目的2022年已经到来 那些大软件的最新大版本也陆续走到我们的面前 看到很多人都在追捧的期待Photoshop 2022 你知道ta具体有哪些变化么 来看看吧 创意世界在 Photoshop 上运行 全世界数以百万计的设计师 摄影师和
  • Java入门(4)——常见的String方法

    考虑到API当中的解释 新手可能有点看不懂 我刚开始就是不太看得懂 最好的学习方法当然是是自己一个一个去试一遍 然后就可以加深印象 然后 这是我当初学习的时候用自己的大白话做的笔记 现在查阅的话我还是喜欢看自己做的这些笔记 如果我有什么理解
  • VS2022的简单设置

    一 创建一个C C 的VS新项目 1 单击右侧 创建新项目 2 语言选择 C 选择 所有平台 桌面 选择 windows桌面向导 最单击下一步 3 为项目取一个名字 放在合适的位置上 单击 创建 在弹出的窗口点击 空项目 最后单击完成 完成
  • DataX :文本文件 -> mysql 的使用及安装教程

    DataX安装环境准备 jdk1 6以上 python2 0 DataX安装 1 官网下载DataX https github com gkbattle13 DataX 点击Download下载地址 2 解压DataX tar zxvf d
  • typescript任意类型

    1 any类型 如果不声明类型 会自动设置为any类型 但是会失去TS类型检测的作用 let anys any str anys 123 anys anys true anys anys Symbol 123 2 unknown类型 let
  • Python 按照某列内容对两个DataFrame进行合并

    要将两个DataFrame进行合并 如data1 和 data2按照第一列的内容纵向合并为一个新的DataFrame 可以使用pandas库中的merge 方法 按照实际需求将how参数设置为 left right outer inner
  • react 三种通信方式

    react有三种通信方式 一 父传子 二 字传父 三 兄弟之间传值 一 父组件向子组件传值 父组件通过属性的方式传递参数 子组件通过props来接收父组件传递过来的参数 React中是单向数据流 数据只能从父组件通过属性的方式传给其子组件
  • VMware 安装CentOS7配置环境、安装虚拟机、选择cd/dvd的方式安装系统、系统安装引导界面、需要定制化的内容、配置磁盘分区、修改主机名、网络配置、修改windows的主机映射文件(host

    文章目录 想看远程终端工具Xshell Xftp传输工具 VMware 安装的点这里 1 CentOS 1 1安装虚拟机 1 2选择cd dvd的方式安装系统 1 3系统安装引导界面 1 4需要定制化的内容 1 4 1调整时间差 1 4 2
  • ES 配置文件 jvm配置

    elasticsearch yml 设置最大分片数 默认1000 cluster max shards per node 1000000 kibana 设置默认查询数量 深度分页问题 PUT movies settings index ma
  • JVM-垃圾回收机制

    JVM 垃圾回收机制 引言 1 什么是垃圾 2 为什么需要GC 3 Java中的垃圾回收 垃圾回收相关算法 垃圾判断算法 标记阶段 引用计数算法 标记阶段 可达性分析算法 垃圾清除算法 清除阶段 标记 清除算法 清除阶段 标记 整理算法 清
  • 视频会议直播和存储

    DVR的配置文件说明 dvr RTMP stream to file start to record to file when encoder publish reap flv according by specified dvr plan
  • 手把手搭建Python量化交易平台-3:jenkins安装详细过程,搭建机器自动运行平台

    概述 本文介绍利用jenkins搭建机器自动运行平台的步骤和效果 一 目的 搭建一个让机器自动 周期性或定制化的执行特定程序的平台 为后续的进一步的目标奠定基础 1 每天让机器自动下周当天的金融数据 2 每天让机器自动对数据进行分析 3 每
  • 双指针算法

    目录 一 双指针算法的概念 二 双指针算法的应用 1 拆分字符串中的单词 2 最长连续不重复子序列 题目 朴素算法 双指针算法 另类双指针算法 3 数组元素的目标和 题目 代码实现 4 判断子序列 题目 代码实现 一 双指针算法的概念 核心
  • 提升网速 网卡和驱动

    去某宝下单了 是网卡和驱动的问题 某宝说网卡和驱动是一个意思 以下是操作步骤 更新驱动程序后从联想官网下载本台电脑对应的驱动 下载可以识别自己主机编号的软件 主机信息识别工具 然后获取编号 然后下载自己的有线网卡
  • 使用VS2010编写Linux程序

    使用VS2010开发Linux程序的好处 编写和调试都很方便 甚至不用自己编写Makefile文件 系统直接就生成了 特别是对于一些不熟悉Linux环境以及gdb调试的同学来说 这个就相对来说容易上手多了 下面就来介绍下环境的搭建 环境 w
  • mac电脑前端环境配置【包含m1芯片】

    目录 一 nvm的安装 1 卸载已安装到全局的 node npm 2 nvm安装 安装命令 常用命令 可能的问题 二 Git环境 1 安装git 2 git ssh 配置 3 重新配置 重新配置 也要在Terminal终端进行 4 测试配置
  • windwos11降级,重装Windows10

    windwos11降级 重装Windows10 序言 硬件信息 前提说明 制作U盘启动盘 修改电脑bios配置 重装系统 U盘启动 注意事项 驱动问题 序言 电脑到手查看安装的是Windows11家庭版系统 在视觉上整体感受更加圆滑柔顺 但
  • C++中动态数组实现

    实现动态数组 动态数组 示例代码 运行环境 运行效果 动态数组 动态数组Vector可以动态扩展内存 其采用连续的内存空间 当内存空间不足 便以原来的容量的2倍或者1 5倍成倍的扩展 将原有的数组元素拷贝到新分配的内存空间中 释放原有的内存
  • [Unity3D]呼风唤雨:天气插件UniSky的使用教程与案例

    UniSky是Unity3D的一款模拟环境天气的插件 使用它可以简单的实现呼风唤雨的各种功能 下载地址 请点击我 使用起来也非常的方便 引入Package后 注意路径必须是英文否则会出错 Project中会多一个文件夹 下面我们来简单的创建