当前位置: 首页 > news >正文

Unity Feel插件快速入门

What is Feel?

Feel是一个即用型解决方案,让你的Unity项目提高游戏体验,增强玩家获得的反馈感,例如相机震动,屏幕闪烁,淡入淡出,等等几十种效果。这是一个模块化、用户友好、易于扩展的系统。

本文旨在让你快速入门,从全局快速了解这个插件,以及基本用法.

官方文档:Feel Documentation | Feel Documentation

How to install Feel?

首先将插件导入项目,本文基于Feel 4.3,要求Unity版本高于22.3.23f1.本插件更新着实有点快,目前最新的版本已经达到5.0要求Unity版本高于Unity6000.0.23f1

https://feel.moremountains.com/feel-releases,可查看版本对照表.

要求你的项目添加这几个库(这不是必须的,但是有些部分依赖这些库,且Demo中大多使用了这些部分,所以不引入可能会导致报错):Post Processing,Cinemachine,TextMesh Pro等.显然你不能对这些依赖一点都不了解.

Post Processing:查看这个视频

[Unity 活动]-社区直播 Post Processing 后处理的介绍和使用_哔哩哔哩_bilibili

Cinemachine:可以阅读这篇文章

【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 | 新发出品 | 良心教程)_cinemachine教程-CSDN博客

这里一键导入全部依赖,需要你等待几分钟,我推荐使用这个操作.

然后打开Demo:MMFPlayerDemo(Feel/MMFeedbacks/Demos/MMFeedbacksDemo),查看效果.

这个场景展示了大部分效果.

URP and HDRP

Feel支持所有渲染管线,但是Demo都是基于内置渲染管线制作的,要注意的是如果是非内置渲染管线项目那么无需导入Post Processing,它们有自己的后处理系统.然后正常导入就行了.

虽然多数Demo都是内置渲染管线,但是官方也为我们制作了URP和HDRP的Demo,位置在:

FaIconHDRP和StrikeURP两个场景.

Contents of the asset

资产包括6部分,下面按顺序使用0-5代称

0: 一个包含许多演示的文件夹,每个演示都包含在自己的文件夹和子文件夹中。这些演示展示了Feel的各种功能。可以在Demos | Feel Documentation了解更多信息

1: 包含特定于高清晰度渲染管道的演示。需要将Feel导入HDRP项目中才能运行它们。

2: 包含特定于通用渲染管道的演示。需要在URP项目中导入Feel来运行它们。

3: 资产的主要部分。它包含反馈系统(Feedbacks system)、全部的反馈组件(feedback)和演示场景。如果你想使用反馈( Feedback),这是唯一必须保留的文件夹。可以安全地删除其中的Demos文件夹。

4: 有各种工具

5: 为iOS或Android游戏添加触觉反馈的最佳方式。您可以在其专用网站Nice Vibrations, the best way to add vibrations to your Unity game, for iOS, Android, gamepad rumble, by More Mountains上了解更多信息。

你也发现了资产中有很多Demo,理论上所有Demo目录都可以删除,但是没什么必要,你非要删除的话查看官方说的这部分:

Demo介绍

官方做的很好:Demos | Feel Documentation

重点介绍FeelGettingStartedTutorial场景,了解了这个场景你就能快速上手基本用法(这确实很简单).

FeelGettingStartedTutorial

搜索该场景并打开,你应该会看到

运行起来只有一个简单的操作:按空格或者鼠标左键点击任一地方,然后你会发现了这Amazing的效果.

你可以简单查看Hero上的GettingStartedTutorialHeroReference脚本,这个脚本其实不是重点.

这才是重点,这个脚本只是在按空格的时候给到一个向上的力,然后调用了这个方法,这个方法被调用那么会触发了所有的FeedBack(反馈).调用这个方法是我们关心的.

MMFPlayer脚本(它是MMFeedbacks的子类)就是一个容器,下面承载了所有的反馈,目前这个JumpFeedback的MMFPlayer脚本只承载了Rotation和Sound两个反馈,你可以在运行模式下点击绿色的Play按钮,这样所有的反馈都会被播放(相当于PlayFeedbacks方法被调用).

让我们展开看看Rotation反馈,简单的说这个反馈就是旋转某个Transform.

先简单对照一下两个反馈,可以看到都有一个Settings和Randomness,可以看出这应该是继承下来的,所有反馈都有的共性.

我们来关注特性,将需要旋转的Transform拖到Target字段,同时下面三个AnimateX,Y,Z是对应三个旋转轴,显然YZ被禁用了,所有只会绕X轴旋转

然后是这个Curve属性,这将设置一个曲线同时关注Remap Curve Zero和Remap Curve One,三者组合起来意味着一秒内从0旋转到90度.

这只是一个最基础的反馈,是一种反馈直接操控某个物体的情况.下面的就要复杂一些了,关注LandingFeedback的Lens Distorion反馈

这就需要一些简单的配置了,这实际上是对后处理Lens Distortion效果的封装

查看PostProcessingVolume物体的后处理组件(显然场景里必须有该物体)

确保已经激活了Lens Distortion,同时关注MMLensDistortionShaker,这个Shaker可以理解为消息监听者,与刚才旋转的反馈直接操控某个物体不同,Lens Distorion反馈实际上只是发出来一个消息,Shaker会接收这个消息并处理.这个Shaker的概念在Feel中使用很广泛.

同时你也看到了,想使用这个反馈必须要有依赖包(后处理包),同时要进行相应的配置.有相当一部分反馈都是如此.

这里又要引出一个Channel(管道)概念

消息是通过管道传输的,管道有两个类型int和MM Channel,这里使用了int,值为0

查看后处理物体的Shaker,也能发现两者是对应的,都是int为0,这样就能接受到消息.

这两种是反馈的两种主要形式.

你可能看到了旋转的球和四个与大Cube同步的小Cube,查看上面的脚本.还有左下角的一个Text UI,这也是,这可以展示帧率和控制帧率.这些功能都属于MMTools模块,这些和反馈没有直接联系,算是作者开发的小玩意,感兴趣可以自行查看.

MMF_PlayerDemo

然后让我们来看下MMF_PlayerDemo场景,搜索并打开后,左侧有很多按钮,这些按钮每个都对应一个MMF_Player,播放上面的反馈实现了很多不错的效果,并且分了类.

都在这里,可以自行查看并实验.

Core concepts

显然我们主要会使用的是MMF_Player 组件,将其作为一个容器承载所有的反馈.

1.Shakers:

刚才提到的接收反馈传递的消息并处理的监听者,反馈只负责发布一个消息,相同管道的Shaker会接收这个消息.

2.Channel:

消息管道,刚才提到了一个int类型,这里再说下另一种类型MMChannel ,实际就是一个scriptable object asset配置,(Create > More Mountains > MMChannel创建).这样专门声明一个配置可以进一步细化和管理管道.

3.Pauses:

暂停,有两种暂停反馈.

Pause

默认所有的反馈都是同时触发的,如何暂停呢?将Pause加入队列后再Play,那么前五个加上Pause将同时触发,后两个将在0.5s后触发,因为Pause被设为0.5s.

Holding Pause

Holding Pause不同于Pause,在这个例子中前五个会同时触发,在五个中最长的完成后(显然是2s),然后再暂停0.25s,然后后面的两个才会触发.

使用脚本暂停

调用PauseFeedbacks()暂停,使用ResumeFeedbacks()恢复暂停.

例子在这里.

4.Loops:

循环反馈

查看这个例子,Play后前三个同时触发,Pause暂停0.5s,然后是后三个,然后是Looper,这个Looper会等待0.25s,然后再同时触发Pause和Looper中间的三个,然后是Looper(再等待0.25s),然后再重复触发一下中间三个.

因为循环次数为2.

另一个例子

先同时触发三个,Pause会等待到3s,然后触发Postion,然后Looper Start会延迟3s,然后中间两个会同时触发,然后Looper延迟3s,然后再同时触发中间两个(LooperStart不会再延迟),然后重复.

例子在

5.Chance:

就是发生的概率,100代表一定发生,0就是永不发生,每个反馈都有该属性.

6.Timing:

每个反馈的与时间相关的属性.

1. TimeScale Mode

  • ScaledUnscaled:这决定了反馈的执行是否基于游戏的时间缩放(Time.timeScale)。Scaled 会随着时间缩放变化,Unscaled 则无视时间缩放,用真实时间进行播放。这个设置在某些反馈中可能非常重要,尤其是当你需要反馈在暂停或时间缩放时继续运行时。

2. Initial Delay

  • 初始延迟:设置反馈在执行之前的延迟时间(单位:秒)。例如,如果你希望某个效果在触发后延迟几秒钟再开始,这个选项很有用。

3. Cooldown Duration

  • 冷却时间:设置一个时间间隔,在这个时间内该反馈无法被再次触发。这个选项适用于防止用户重复触发反馈,特别是防止连续播放的情况。

4. ExcludeFromHoldingPauses

  • 忽略暂停时的等待:如果启用了此选项,那么即使游戏在“暂停”状态下,反馈依然会启动。适用于一些长时间的反馈(比如动画或特效),当你希望它开始时,但不影响其他暂停期间的操作。

5. ContributeToTotalDuration

  • 是否计入总持续时间:决定该反馈是否会计入父级 MMF_Player 的总持续时间。如果选择不计入,则父级的时间计算不会包括这个反馈的持续时间。

6. Number of Repeats

  • 重复次数:设置该反馈需要重复的次数(默认值为0,表示只播放一次)。

7. Repeat Forever

  • 永远重复:如果启用了此选项,反馈将一直重复播放,直到你明确停止它。

8. Delay Between Repeats

  • 重复之间的延迟:设置重复反馈之间的时间间隔。适用于需要重复播放的反馈,并且希望它们之间有一定的间隔。

9. Play Direction

  • 播放方向:该选项允许你定义反馈在播放时的方向。一般情况下,反馈按从上到下的顺序播放,但你也可以设置它反向播放(从下到上)。

10. MMFeedbacks Direction Condition

  • 方向条件:设置反馈是否仅在 MMF_Player 播放方向为正向或反向时才触发。默认情况下,反馈总是会播放,但如果设置了条件,则只有在特定方向时才会播放。

11. Constant Intensity

  • 恒定强度:如果勾选此选项,反馈将忽略全局强度的调整,并保持其固定的强度。这意味着它不受 MMF_Player 中全局强度的影响。

12. Use Intensity Interval

  • 使用强度区间:设置反馈的强度范围。只有在强度值处于指定区间内时,反馈才会触发。比如,你可以设置强度在0到50之间时触发某种效果,在50到100之间触发另一个效果。这对于根据角色的状态(如受伤程度)触发不同反馈非常有用。

13. Sequence

  • 使用的序列:设置一个 Sequence,用于控制反馈的播放顺序。如果你想要某些反馈按特定顺序或时间安排播放,可以使用 Sequence

14. Track ID

  • 序列轨道ID:定义该反馈在序列中的轨道 ID。用于在一个序列中指定反馈的具体位置或顺序。

15. Quantized

  • 量化模式:如果启用量化模式,反馈将在固定的时间点播放。量化模式通常用于音乐、节奏类游戏或需要精确时间控制的场景中,确保反馈在正确的时刻触发。

也可以在运行时使用方法SetInitialDelay, SetDelayBetweenRepeats or SetSequence methods.改变Timing Values.

如何反向播放反馈?注意是在MMF_Player级别的设置下.

也可以代码更改该属性.参考代码如下.

7.Enable / Disable feedbacks:

如何禁用/激活反馈呢?

(1)全局禁用,MMFeedbacks.GlobalMMFeedbacksActive=false/true.

(2)MMF_Player级别,失活该组件或他所在的GameObject都可以.

(3)在反馈级别

player.FeedbacksList[0].Active,或者先找到对应的反馈然后设置Active属性.

7.Preventing a type of feedback from playing

如何阻止某个类型的所有反馈?

MMF_Scale.FeedbackTypeAuthorized = false;

这将阻止所有缩放类型的反馈.

MMFeedbacksAuthorizations组件更方便,其实这就是枚举了所有类型的上述代码.

What is MMF_Player?

MMF_Player作为一个我们最常用的组件.

使用Add new feedback下拉框添加你需要的反馈,右侧的copy all可以复制所有的反馈(这是推荐的方法,不要使用Unity的组件复制).还可以按住某个反馈最左边的图标调整反馈顺序,打开最右边的图标进行复制粘贴移除重置本反馈等.

初始化,播放,停止,跳过,还原,还原,重置,还原:调用该MMF_Player上的相应方法,仅用于测试目的。其中大多数仅在运行时可用。

Keep Playmode Changes:在运行时按此操作,然后在退出播放时间时,对此MMF播放器的更改将不会丢失.

1. Initialization(初始化设置)

  • Initialization Mode: 定义初始化方式。默认情况下,MMF_Player 会在 AwakeStart 时初始化。你也可以选择手动初始化,通过调用 Initialization() 方法并传入一个“所有者”。

  • Auto Play on Start: 如果为 true,则 MMF_Player 会在场景开始时自动播放反馈。

  • Auto Play on Enable: 如果为 true,当该对象启用时,MMF_Player 会自动播放反馈。

  • Auto Initialization: 如果为 true,系统会在合适的时机自动初始化这个播放器并准备播放。

2. Direction(播放顺序设置)

  • Direction: 定义反馈的播放顺序。默认情况下,反馈按“从上到下”的顺序播放。你可以选择将其反向,即按“从下到上”的顺序播放。

  • Auto Change Direction on End: 如果为 true,当所有反馈播放完成时,MMF_Player 会自动将播放顺序反向。

3. Intensity(强度设置)

  • Feedbacks Intensity: 控制播放反馈的强度。例如,1 是正常强度,0.5 是半强度,0 则是无效果。不同的反馈可能会根据这个值调节它们的幅度。

  • Force TimeScale Mode: 强制所有反馈使用缩放(scaled)或非缩放(unscaled)时间模式。

  • Duration Multiplier: 用于调整所有反馈的持续时间(包括初始延迟、总持续时间和重复间隔)。例如,设置为 2 会让所有反馈持续时间加倍。

  • Randomize Duration: 在反馈的持续时间上应用随机化,使其持续时间在某个范围内随机波动。

  • Display Full Duration Details: 如果启用,会显示更多的编辑器信息,帮助你查看每个反馈的详细时间信息。

4. Cooldown & Delay(冷却和延迟)

  • Cooldown Duration: 这是一个冷却时间(秒),在一次播放后,这个 MMF_Player 在冷却期间不会再次被触发。冷却时间对于防止某些反馈被过度触发很有用。

  • Initial Delay: 延迟开始播放的时间,通常在你希望给场景或其他动画留一些缓冲时间时使用。

  • Chance to play: 这个百分比值决定了 MMF_Player 播放的几率。例如,50% 意味着每次触发时有 50% 的概率播放反馈。

5. Range(范围设置)

  • Only Play If Within Range: 如果为 true,这意味着该 MMF_Player 只有在特定范围内时才会播放反馈。

  • RangeCenter: 用于计算范围的参考点,通常是玩家角色或主摄像机。

  • RangeDistance: 距离值(单位为游戏中的单位),表示距离中心点的最大有效范围。

  • UseRangeFalloff: 如果启用,反馈的强度会随着距离的增加而减少。你可以使用曲线来控制反馈强度的衰减。

  • Ignore Range Events: 是否忽略通过 MMSetFeedbackRangeCenterEvent 触发的范围事件。

6. Play Settings(播放设置)

  • CanPlay: 如果为 false,这个 MMF_Player 就无法播放其包含的反馈。

  • CanPlayWhileAlreadyPlaying: 如果为 false,MMF_Player 不会在其内部任何反馈仍在播放时再次播放。这有助于避免反馈被重复触发,防止叠加播放。

  • Performance Mode: 启用后,会优化 MMF_Player 的编辑器渲染,减少性能消耗,但对游戏的实际性能没有影响。

  • Force Stop Feedbacks On Disable: 如果为 true,当该 MMF_Player 被禁用时,所有反馈会自动停止。

7. Events(事件设置)

  • Trigger MMFeedbacks Events: 是否触发 MMFeedbacksEvents,这是一种可以监听的事件类型,适合用于通知或管理其他脚本。

  • Trigger Unity Events: 是否触发常规的 Unity 事件(通过 Inspector 中绑定的事件槽进行)。

    • OnPlay: 在每次 MMF_Player 被播放时触发。

    • OnPause: 在每次 MMF_Player 被暂停时触发。

    • OnResume: 在每次 MMF_Player 被恢复时触发。

    • OnRevert: 在每次 MMF_Player 被反转时触发(通常在播放结束后,若启用了 AutoChangeDirectionOnEnd,或者手动调用 Revert() 方法)。

    • OnComplete: 在播放所有反馈(最后一个反馈)完成时触发。

End

相关文章:

Unity Feel插件快速入门

What is Feel? Feel是一个即用型解决方案,让你的Unity项目提高游戏体验,增强玩家获得的反馈感,例如相机震动,屏幕闪烁,淡入淡出,等等几十种效果。这是一个模块化、用户友好、易于扩展的系统。 本文旨在让你快速入门,从全局快速了解这个插件,以及基本用…...

数据链路层(四)---PPP协议的工作状态

1 PPP链路的初始化 通过前面几章的学习,我们学了了PPP协议帧的格式以及组成,那么对于使用PPP协议的链路是怎么初始化的呢? 当用户拨号上网接入到ISP后,就建立起了一条个人用户到ISP的物理链路。这时,用户向ISP发送一…...

【C++】入门【六】

本节目标 一、继承的概念及定义 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 八、继承的总结和反思 九、笔试面试题 一、继承的概念及定义 1.继承的概念 继承是面向对象…...

UE5 C++ 不规则按钮识别,复选框不规则识别 UPIrregularWidgets

插件名称:UPIrregularWidgets 插件包含以下功能 你可以点击任何图片,而不仅限于矩形图片。 UPButton、UPCheckbox 基于原始的 Button、Checkbox 扩展。 复选框增加了不规则图像识别功能,复选框增加了悬停事件。 欢迎来到我的博客 记录学习过…...

Elasticsearch Serverless 现已正式发布

作者:来自 Elastic Yaru Lin 基于全新无状态(stateless)架构的 Elasticsearch Serverless 现已正式发布。它采用完全托管方式,因此你可以快速启动项目而无需操作或升级,并且可以使用最新的向量搜索和生成式 AI 功能。 …...

如何使用apache部署若依前后端分离项目

本章教程介绍,如何在apache上部署若依前后端分离项目 一、教程说明 本章教程,不介绍如何启动后端以及安装数据库等步骤,着重介绍apache的反向代理如何配置。 参考此教程,默认你已经完成了若依后端服务的启动步骤。 前端打包命令使用以下命令进行打包之后会生成一个dist目录…...

openEuler安装UKUI桌面

# 升级更新 sudo yum -y update # 安装UKUI界面 dnf install ukui # 设置图形启动 systemctl set-default graphical.target # 重启 # 查看当前系统启动模式 systemctl get-default # 修改默认启动模式为 命令行界面模式 systemctl set-default multi-user.target 在UK…...

深入理解Oracle DB的锁和闩

1. 引言 本文深入介绍Oracle DB的锁和闩。 2. Oracle DB 锁的基本概念 2.1 定义与作用 锁是 Oracle 数据库用于控制并发访问的一种机制。它用于防止多个事务同时对同一数据进行不一致的操作,确保数据的完整性和一致性。例如,当一个事务正在更新一行数…...

jenkins+github+springboot自动部署

背景: 最近看流水线有点意思,就说自己也搞一套。 预期效果: idea提交代码后,GitHub接收,jenkins自动部署。【后续加个自动部署时的代码检查、单元测试、安全测试、sonarqube】 思路分析: idea上的spring代码push到gi…...

HTML5系列(10)-- 地理位置服务指南

前端技术探索系列:HTML5 地理位置服务指南 🌍 致读者:探索位置服务的魅力 👋 前端开发者们, 今天我们将深入探讨 HTML5 的地理位置服务(Geolocation API),这项强大的功能让我们能…...

【MySQL 进阶之路】SQL 优化

6.SQL 性能分析笔记 在现代数据库的高并发环境下,SQL 查询优化成为提升系统性能和响应速度的关键。本文将总结常见的 SQL 优化策略,包括插入优化、主键设计、排序优化、GROUP BY 优化等,帮助你在面对大规模数据时,做到高效查询和…...

Web3的技术栈详解:解读区块链、智能合约与分布式存储

随着数字时代的不断发展,Web3作为下一代互联网的核心理念逐渐走进了大众视野。它承载着去中心化、用户主权以及更高效、更安全的网络环境的期望。Web3不再是由少数中心化机构主导的网络,而是通过一系列核心技术的支撑,给每个用户赋予了更多的…...

[在线实验]-在docker中运行clickhouse

镜像下载 docker的clickhouse镜像资源-CSDN文库 加载镜像 首先,需要获取ClickHouse的Docker镜像。如果已经有镜像文件(如clickhouse.tar),可以使用docker load命令来加载它: docker load --input clickhouse.tar …...

Rust常用命令总结

安装Rust 检查并更新Ubuntu的软件包 $ sudo apt update $ sudo apt upgrade安装相关依赖:安装GCC、G、MAKE、curl $ sudo apt install build-essential $ sudo apt install curl安装Rust $ curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh执行命令…...

Ant-Design X,AI组件库

前端的小伙伴们都知道有一个前端组件库超级火,可以说是 Top1 级别的,那就是 Ant-Design 而就在最近,他们又推出了一款新的组件库,Ant-Design X,这是专门用来做 AI 产品 的组件库,可能大家还很疑惑&#xf…...

Matplotlib 内置的170种颜色映射(colormap)

Matplotlib 提供了许多内置的颜色映射(colormap)选项,可以将数值数据映射到色彩范围——热力图、温度图、地图等可视化经常会用到。 # colormap 有两种引用形式plt.imshow(data, cmapBlues)plt.imshow(data, cmapcm.Blues) 颜色映射可以分为…...

在linux虚拟机安装VMware tools

安装UKUI桌面后,在火狐浏览器输入下载VMware tool地址: https://gitcode.com/open-source-toolkit/395d3/blob/5faa176939c7ac1f614a8b6f07f14cc31433ff95/VMwareTools-10.3.21-14772444.tar.gz 解压下载的软件包,进入目录:vmwa…...

初识EasyFramework

一、获取EF Git地址:https://github.com/HiWenHao/EFrameworkGitee地址:https://gitee.com/wang_xiaoheiiii/EFramework视频合集:EasyFramework介绍_哔哩哔哩_bilibiliQQ群: 711540505 二、 下载并初步了解 1. 下载完成后,可以看…...

OpenStack-Glance组件

Glance Glance使用磁盘格式和容器格式基础配置镜像转换 Glance 是 OpenStack 的镜像服务,负责存储、发现和管理虚拟机镜像。它允许用户创建和共享镜像,用于启动虚拟机实例。 Glance 的主要功能 (1)虚拟机镜像的管理 支持镜像的上…...

SPC三种判定准则的算法

1.连续6个点递增或递减 //传入数据列表 //返回连续X个及以上递增或递减的数组下标int n = array.Length; int X = X_in; List<int> regions_start = new List<int>(); List<int> regions_end = new List<int>();if(Open){for (int i = 0; i < n - (…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...