Unity制作角色溶解变成光点消失

Unity制作角色溶解变成光点消失

  大家好,我是阿赵。
  在很多游戏里面,角色死亡之后都会有一些特殊的消失方式。这里我也来做一种,角色溶解成光点消失的效果。
在这里插入图片描述

  我还是随便拿了Unity的资源商店的免费资源来使用。不过由于这个角色自带没有死亡动作,所以我就让他站立着消失了。
  刚开始的时候,角色会有一个类似于燃烧分解的过程,然后角色会发光,并且从头到脚开始往上飘,最后化成光点消失:
在这里插入图片描述

制作过程:
  这个效果主要有2个部分组成,分别是1.角色化成光点、2.往上飘散。

1、 角色化成光点

  化成光点分为了RGB和Alpha两个部分
在这里插入图片描述

1. RGB
  过程很简单,我使用了屏幕坐标为UV,采样一张噪声图,然后通过SmoothStep调整噪声图的颜色范围
在这里插入图片描述

  再通过一个mixVal混合值,把士兵原有的颜色,和采样噪声图的颜色做一个混合
在这里插入图片描述

  得到了一个颜色方面的变化。
在这里插入图片描述

2. Alpha
  Alpha值其实只是一个从白到黑的过程,还是刚才那张噪声图,通过SmoothStep,可以控制噪声图的黑白范围,纯白的时候,就是整个模型都看得到,渐渐变得纯黑了之后,模型就看不到了,中间的黑白交错的噪声效果,看起来会觉得角色是在溶解。
在这里插入图片描述

  结合起来就是这种效果:
在这里插入图片描述  至于为什么会发光,其实只是在噪声的颜色上面乘了一个HDR颜色,然后加一点Bloom后处理就可以了。

2、 往上飘散

  由于我这里只是想控制光点往上飘,所以只控制了顶点的Y坐标移动。设置一个高度值,当顶点的坐标大于这个值时,顶点就会往上增加Y坐标。
在这里插入图片描述

  下面是一个夸张的举例说明,实际上由于heightMoveVal参数控制了偏移量,所以只需要往上飘一点点就够了,因为很快模型就已经变成光点,并且Alpha变成0 了。

在这里插入图片描述

  在ASE里面的连线是这样:
在这里插入图片描述

代码:

// Made with Amplify Shader Editor
// Available at the Unity Asset Store - http://u3d.as/y3X 
Shader "SmokeDisapear"
{Properties{_MainTex("MainTex", 2D) = "white" {}_MainCol("MainCol", Color) = (1,1,1,0)_NoiseTex("NoiseTex", 2D) = "white" {}_min("min", Range( -1 , 1)) = 0_max("max", Range( -1 , 1.5)) = 1_height("height", Float) = 0_tiling("tiling", Vector) = (1,1,0,0)[HDR]_NoiseAddCol("NoiseAddCol", Color) = (1,1,1,0)_mixVal("mixVal", Range( 0 , 1)) = 0_heightMoveVal("heightMoveVal", Float) = 1[HideInInspector] _texcoord( "", 2D ) = "white" {}}SubShader{Tags { "RenderType"="Transparent" "Queue"="Transparent" }LOD 100CGINCLUDE#pragma target 3.0ENDCGBlend SrcAlpha OneMinusSrcAlphaAlphaToMask OffCull BackColorMask RGBAZWrite OnZTest LEqualOffset 0 , 0Pass{Name "Unlit"Tags { "LightMode"="ForwardBase" }CGPROGRAM#define ASE_ABSOLUTE_VERTEX_POS 1#ifndef UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX//only defining to not throw compilation error over Unity 5.5#define UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input)#endif#pragma vertex vert#pragma fragment frag#pragma multi_compile_instancing#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float4 color : COLOR;float4 ase_texcoord : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float4 vertex : SV_POSITION;#ifdef ASE_NEEDS_FRAG_WORLD_POSITIONfloat3 worldPos : TEXCOORD0;#endiffloat4 ase_texcoord1 : TEXCOORD1;float4 ase_texcoord2 : TEXCOORD2;UNITY_VERTEX_INPUT_INSTANCE_IDUNITY_VERTEX_OUTPUT_STEREO};uniform float _height;uniform float _heightMoveVal;uniform sampler2D _MainTex;uniform float4 _MainTex_ST;uniform float4 _MainCol;uniform float _mixVal;uniform sampler2D _NoiseTex;uniform float2 _tiling;uniform float _min;uniform float _max;uniform float4 _NoiseAddCol;inline float4 ASE_ComputeGrabScreenPos( float4 pos ){#if UNITY_UV_STARTS_AT_TOPfloat scale = -1.0;#elsefloat scale = 1.0;#endiffloat4 o = pos;o.y = pos.w * 0.5f;o.y = ( pos.y - o.y ) * _ProjectionParams.x * scale + o.y;return o;}v2f vert ( appdata v ){v2f o;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);UNITY_TRANSFER_INSTANCE_ID(v, o);float3 ase_worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;float3 objToWorld23 = mul( unity_ObjectToWorld, float4( float3( 0,0,0 ), 1 ) ).xyz;float3 appendResult27 = (float3(ase_worldPos.x , ( ase_worldPos.y + ( max( ( ( ase_worldPos.y - objToWorld23.y ) - _height ) , 0.0 ) * _heightMoveVal ) ) , ase_worldPos.z));float3 worldToObj30 = mul( unity_WorldToObject, float4( appendResult27, 1 ) ).xyz;float3 VertexOffset56 = worldToObj30;float4 ase_clipPos = UnityObjectToClipPos(v.vertex);float4 screenPos = ComputeScreenPos(ase_clipPos);o.ase_texcoord2 = screenPos;o.ase_texcoord1.xy = v.ase_texcoord.xy;//setting value to unused interpolator channels and avoid initialization warningso.ase_texcoord1.zw = 0;float3 vertexValue = float3(0, 0, 0);#if ASE_ABSOLUTE_VERTEX_POSvertexValue = v.vertex.xyz;#endifvertexValue = VertexOffset56;#if ASE_ABSOLUTE_VERTEX_POSv.vertex.xyz = vertexValue;#elsev.vertex.xyz += vertexValue;#endifo.vertex = UnityObjectToClipPos(v.vertex);#ifdef ASE_NEEDS_FRAG_WORLD_POSITIONo.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;#endifreturn o;}fixed4 frag (v2f i ) : SV_Target{UNITY_SETUP_INSTANCE_ID(i);UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);fixed4 finalColor;#ifdef ASE_NEEDS_FRAG_WORLD_POSITIONfloat3 WorldPosition = i.worldPos;#endiffloat2 uv_MainTex = i.ase_texcoord1.xy * _MainTex_ST.xy + _MainTex_ST.zw;float4 BaseCol2 = ( tex2D( _MainTex, uv_MainTex ) * _MainCol );float4 screenPos = i.ase_texcoord2;float4 ase_grabScreenPos = ASE_ComputeGrabScreenPos( screenPos );float4 ase_grabScreenPosNorm = ase_grabScreenPos / ase_grabScreenPos.w;float4 tex2DNode9 = tex2D( _NoiseTex, ( ase_grabScreenPosNorm * float4( _tiling, 0.0 , 0.0 ) ).xy );float smoothstepResult17 = smoothstep( _min , _max , tex2DNode9.r);float4 appendResult14 = (float4(tex2DNode9.rgb , smoothstepResult17));float4 break34 = appendResult14;float3 appendResult35 = (float3(break34.x , break34.y , break34.z));float4 NoiseCol37 = ( float4( appendResult35 , 0.0 ) * _NoiseAddCol );float4 mixRGB60 = ( ( BaseCol2 * ( 1.0 - _mixVal ) ) + ( NoiseCol37 * _mixVal ) );float NoiseAlpha38 = break34.w;float4 appendResult47 = (float4(mixRGB60.rgb , NoiseAlpha38));finalColor = appendResult47;return finalColor;}ENDCG}}CustomEditor "ASEMaterialInspector"}
/*ASEBEGIN
Version=18500
1913;32;1920;987;3680.344;1392.808;2.392733;True;True
Node;AmplifyShaderEditor.CommentaryNode;59;-2530.342,-1221.827;Inherit;False;1840.743;752.6192;Comment;15;10;31;32;8;18;19;9;17;40;38;37;14;34;35;39;Noise;1,1,1,1;0;0
Node;AmplifyShaderEditor.Vector2Node;31;-2223.449,-649.3306;Inherit;False;Property;_tiling;tiling;6;0;Create;True;0;0;False;0;False;1,1;4,4;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.GrabScreenPosition;10;-2480.341,-828.205;Inherit;False;0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;32;-2162.449,-754.3303;Inherit;False;2;2;0;FLOAT4;0,0,0,0;False;1;FLOAT2;0,0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TexturePropertyNode;8;-2321.81,-1093.691;Inherit;True;Property;_NoiseTex;NoiseTex;2;0;Create;True;0;0;False;0;False;None;31cddcf296ab7b147bcab794e0b7b8ed;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
Node;AmplifyShaderEditor.SamplerNode;9;-1968.668,-898.8738;Inherit;True;Property;_TextureSample0;Texture Sample 0;3;0;Create;True;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.RangedFloatNode;18;-1928.39,-672.2086;Inherit;False;Property;_min;min;3;0;Create;True;0;0;False;0;False;0;0;-1;1;0;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;19;-1929.39,-585.2089;Inherit;False;Property;_max;max;4;0;Create;True;0;0;False;0;False;1;0;-1;1.5;0;1;FLOAT;0
Node;AmplifyShaderEditor.SmoothstepOpNode;17;-1616.391,-667.2086;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.CommentaryNode;57;-2313.414,292.6314;Inherit;False;1257.095;546.9834;Comment;12;56;30;27;49;24;28;50;55;25;22;23;21;VertexOffset;1,1,1,1;0;0
Node;AmplifyShaderEditor.DynamicAppendNode;14;-1608.537,-890.0309;Inherit;False;FLOAT4;4;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.WorldPosInputsNode;21;-2250.344,391.5267;Inherit;False;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.TransformPositionNode;23;-2263.414,598.2891;Inherit;False;Object;World;False;Fast;True;1;0;FLOAT3;0,0,0;False;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.BreakToComponentsNode;34;-1432.258,-946.3212;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15
Node;AmplifyShaderEditor.CommentaryNode;5;-2590.961,-341.9665;Inherit;False;846;484.7515;Comment;4;1;3;4;2;BaseCol;1,1,1,1;0;0
Node;AmplifyShaderEditor.DynamicAppendNode;35;-1257.349,-1125.164;Inherit;False;FLOAT3;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RangedFloatNode;24;-1995.551,688.6921;Inherit;False;Property;_height;height;5;0;Create;True;0;0;False;0;False;0;1.8;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.ColorNode;3;-2540.961,-69.21489;Inherit;False;Property;_MainCol;MainCol;1;0;Create;True;0;0;False;0;False;1,1,1,0;1,1,1,0;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SamplerNode;1;-2518.612,-291.9667;Inherit;True;Property;_MainTex;MainTex;0;0;Create;True;0;0;False;0;False;-1;None;8293059b819fbd34983493640ff4b930;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleSubtractOpNode;22;-2012.413,550.2891;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.ColorNode;39;-1175.305,-993.0585;Inherit;False;Property;_NoiseAddCol;NoiseAddCol;7;1;[HDR];Create;True;0;0;False;0;False;1,1,1,0;16,16,16,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.CommentaryNode;61;-1676.467,-294.687;Inherit;False;999.3699;447.8433;Comment;8;42;6;43;12;44;45;46;60;mixRGB;1,1,1,1;0;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;40;-1018.162,-1171.828;Inherit;False;2;2;0;FLOAT3;0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.SimpleSubtractOpNode;25;-1820.551,570.6921;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;4;-2185.96,-213.215;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.SimpleMaxOpNode;55;-1681.888,577.0236;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;37;-921.4471,-1000.216;Inherit;False;NoiseCol;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;2;-1968.958,-240.215;Inherit;False;BaseCol;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.RangedFloatNode;49;-1848.277,740.5146;Inherit;False;Property;_heightMoveVal;heightMoveVal;9;0;Create;True;0;0;False;0;False;1;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;42;-1626.467,-76.0649;Inherit;False;Property;_mixVal;mixVal;8;0;Create;True;0;0;False;0;False;0;1;0;1;0;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;6;-1499.159,-244.687;Inherit;False;2;BaseCol;1;0;OBJECT;;False;1;COLOR;0
Node;AmplifyShaderEditor.OneMinusNode;43;-1331.467,-140.065;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;12;-1559.026,37.15596;Inherit;False;37;NoiseCol;1;0;OBJECT;;False;1;COLOR;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;50;-1550.277,637.5146;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;44;-1223.467,-234.0649;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;45;-1314.467,-11.06507;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
Node;AmplifyShaderEditor.SimpleAddOpNode;28;-1605.688,467.4084;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleAddOpNode;46;-1064.467,-87.06497;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.DynamicAppendNode;27;-1843.73,389.4314;Inherit;False;FLOAT3;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.TransformPositionNode;30;-1476.529,376.2321;Inherit;False;World;Object;False;Fast;True;1;0;FLOAT3;0,0,0;False;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.RegisterLocalVarNode;38;-1031.205,-754.5867;Inherit;False;NoiseAlpha;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;60;-901.0974,-65.65731;Inherit;False;mixRGB;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.GetLocalVarNode;62;-576.2823,-236.8541;Inherit;False;60;mixRGB;1;0;OBJECT;;False;1;COLOR;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;56;-1292.018,589.9708;Inherit;False;VertexOffset;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;48;-592.2823,-156.8542;Inherit;False;38;NoiseAlpha;1;0;OBJECT;;False;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;58;-384.282,-44.85415;Inherit;False;56;VertexOffset;1;0;OBJECT;;False;1;FLOAT3;0
Node;AmplifyShaderEditor.DynamicAppendNode;47;-384.282,-236.8541;Inherit;False;FLOAT4;4;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;1;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;-208.2823,-140.8542;Float;False;True;-1;2;ASEMaterialInspector;100;1;SmokeDisapear;0770190933193b94aaa3065e307002fa;True;Unlit;0;0;Unlit;2;True;2;5;False;-1;10;False;-1;0;1;False;-1;0;False;-1;True;0;False;-1;0;False;-1;False;False;False;False;False;False;True;0;False;-1;True;0;False;-1;True;True;True;True;True;0;False;-1;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;2;RenderType=Transparent=RenderType;Queue=Transparent=Queue=0;True;2;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=ForwardBase;False;0;;0;0;Standard;1;Vertex Position,InvertActionOnDeselection;0;0;1;True;False;;False;0
WireConnection;32;0;10;0
WireConnection;32;1;31;0
WireConnection;9;0;8;0
WireConnection;9;1;32;0
WireConnection;17;0;9;1
WireConnection;17;1;18;0
WireConnection;17;2;19;0
WireConnection;14;0;9;0
WireConnection;14;3;17;0
WireConnection;34;0;14;0
WireConnection;35;0;34;0
WireConnection;35;1;34;1
WireConnection;35;2;34;2
WireConnection;22;0;21;2
WireConnection;22;1;23;2
WireConnection;40;0;35;0
WireConnection;40;1;39;0
WireConnection;25;0;22;0
WireConnection;25;1;24;0
WireConnection;4;0;1;0
WireConnection;4;1;3;0
WireConnection;55;0;25;0
WireConnection;37;0;40;0
WireConnection;2;0;4;0
WireConnection;43;0;42;0
WireConnection;50;0;55;0
WireConnection;50;1;49;0
WireConnection;44;0;6;0
WireConnection;44;1;43;0
WireConnection;45;0;12;0
WireConnection;45;1;42;0
WireConnection;28;0;21;2
WireConnection;28;1;50;0
WireConnection;46;0;44;0
WireConnection;46;1;45;0
WireConnection;27;0;21;1
WireConnection;27;1;28;0
WireConnection;27;2;21;3
WireConnection;30;0;27;0
WireConnection;38;0;34;3
WireConnection;60;0;46;0
WireConnection;56;0;30;0
WireConnection;47;0;62;0
WireConnection;47;3;48;0
WireConnection;0;0;47;0
WireConnection;0;1;58;0
ASEEND*/
//CHKSM=D280B36700255D651F08848CF5C3AAE371240F19

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

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

相关文章

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题六

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选…

JVM字节码与局部变量表

文章目录 局部变量表javap字节码指令分类 指令指令数据类型前缀加载和存储指令加载常量算术指令其他指令 字节码示例说明 局部变量表 每个线程的帧栈是独立的,每个线程中的方法调用会产生栈帧,栈帧中保存着方法执行的信息,例如局部变量表。 …

防火墙配置变更管理

在任何组织中,当涉及到网络安全时,频繁地更换防火墙是必要的,实施简化的防火墙更改管理策略模板可以减少管理时间,还可以减少每次变更引入新的安全性或合规性问题的可能性。典型的防火墙变更管理流程将包括以下步骤: …

八股文-多线程、并发

八股文-多线程、并发 最近学到了一种方法,可以用于简历项目经验编写以及面试题目的回答 STAR法则:在什么背景下,你需要解决什么问题,你做了啥,得到了什么结果 情境(Situation): 描…

无人机维修保养一对一教学技术详解

随着无人机技术的日益普及和应用的广泛深入,无人机的维修保养成为确保飞行安全、延长使用寿命的关键环节。为了培养专业的无人机维护人才,一对一教学成为了一种高效、针对性的培训方式。以下将详细解析无人机维修保养一对一教学的技术要点,涵…

QT Layout布局,隐藏其中的某些部件后,不影响原来的布局

最近在工作时,被要求,需要将布局中的某些部件隐藏后,但不能影响原来的布局。 现在记录解决方案! 一、水平布局(垂直布局一样) ui中的布局 效果: 按钮可以任意隐藏,都不影响其中布…

Ceph 基本架构(一)

Ceph架构图 Ceph整体组成 Ceph 是一个开源的分布式存储系统,设计用于提供优秀的性能、可靠性和可扩展性。Ceph 的架构主要由几个核心组件构成,每个组件都有特定的功能,共同协作以实现高可用性和数据的一致性。 以下是 Ceph 的整体架构及其…

Pikachu靶场之XSS

先来点鸡汤,少就是多,慢就是快。 环境搭建 攻击机kali 192.168.146.140 靶机win7 192.168.146.161 下载zip,pikachu - GitCode 把下载好的pikachu-master,拖进win7,用phpstudy打开网站根目录,.....再用…

CleanMyMac 5 for Mac 最新中文破解版下载 系统优化垃圾清理工具

今天给大家带来的是CleanMyMac最新款CleanMyMac 5,它是一个全面的Mac清理和维护工具,通过提供多项强大的功能,帮助用户简化日常维护任务,提升系统性能,同时保护个人隐私和安全。无论是新手还是经验丰富的Mac用户&#…

京东广告投放平台整洁架构演进之路

作者:广告研发 赵嘉铎 前言 从去年开始京东广告投放系统做了一次以领域驱动设计为思想内核的架构升级,在深入理解DDD思想的同时,我们基于广告投放业务的本质特征大胆地融入了自己的理解和改造。新架构是从设计思想到落地框架都进行了彻底的…

Python 解析 Charles JSON Session File (.chlsj)

Charles 代理,是一款抓包软件,可以帮助我们抓取浏览器请求跟响应。 1、在 Filter 里面输入需要抓包的网址 2、右键 Export Session 3、文件类型选择 JSON Session File (.chlsj) 保存 4、解析响应的数据结构 response.body.text 是文本字符串。 # 导入…

自然语言处理-基于注意力机制的文本匹配

背景: 任务三:基于注意力机制的文本匹配 输入两个句子判断,判断它们之间的关系。参考ESIM(可以只用LSTM,忽略Tree-LSTM),用双向的注意力机制实现。 参考 《神经网络与深度学习》 第7章 Reaso…

SpringCloud微服务消息驱动的实践指南

Spring Cloud是一个用于构建分布式系统的开发工具,通过它可以快速搭建基于微服务架构的应用,并提供了丰富的功能和解决方案。在Spring Cloud中,消息驱动是一种常见的通信模式,通过消息传递来实现不同微服务之间的数据交互。本文将…

【移动端开发】“明日头条APP”

文章目录 1 系统概述1.1研究背景1.2研究意义 2 系统设计2.1 关键技术2.2 系统设计2.2.1 系统功能模块2.2.2 数据库设计 3 系统实现3.1 数据模型3.1.1 NewsURL3.1.2 NewsType3.1.3 NewsInfo 3.2 数据库操作3.2.1 DBOpenHelper3.2.2 DBManager 3.3 适配器类3.3.1 AddItem3.3.2 In…

LabVIEW机械产品几何精度质检系统

随着制造业的发展,对产品质量的要求越来越高,机械产品的几何精度成为衡量其品质的重要指标。为了提高检测效率和精度,开发了一套基于LabVIEW的几何精度质检系统,该系统不仅可以自动化地进行几何尺寸的测量,而且能实时分…

Qt 边框border - qss样式

border属性 实际上,border并不是一个单独的属性,在Qt样式表中,它通常指的是一系列与边框相关的属性的组合。然而,你也可以在一条样式规则中一次性设置所有这些值,如下所示: QPushButton { border: 2px sol…

smardaten无代码这么牛逼?逻辑编排不用代码!

目录 前言 经典案例 ①计划编排:数据操作自动化 ②工单派工:流程变更自动化 smardaten能力解析 一、逻辑控制篇 (1)变量定义与操作 (2)数据校验与反馈 (3)动态数据获取与回填…

演示:基于WPF自绘的中国省份、城市、区县矢量地图

一、目的:演示一个基于WPF自绘的中国省份、城市、区县矢量地图 二、效果 国 省 市 三、功能 支持实际经纬度显示 支持平移,缩放等功能 显示中国地图 显示各个省份地图 显示各个省份地图(包含在表格中,包含缩率图) 显…

Android Studio报错: Could not find pub.devrel:easypermissions:0.3.0, 改用linux编译

在Android studio中去编译开源的仓库,大概率就是各种编译不过,一堆错误,一顿改错,基本上会耗费非常多时间,比如: 这个就是改gradle版本,改成7.2 ,修改完成之后,还有其他报…

rabbitmq容器化部署

目录 需求 容器化部署rabbitmq服务 部署服务 验证及访问服务 rabbitmq配置LTS 服务验证 rabbitmq配置集群 部署集群 1、创建一个存放配置文件的目录 2、创建配置文件 3、部署各个节点 集群验证 需求 容器化部署rabbitmq服务 基础版本 系统ubuntu 24,docke…