From 41198cb51a49e104b62631745c9af0bc2354cf63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sat, 6 Sep 2025 14:52:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=9F=BA=E7=A1=80=E7=BB=84=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E5=86=B7=E5=8D=B4=E8=BF=9B=E5=BA=A6=E7=9D=80=E8=89=B2=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加紫色水晶技能图标资源 创建冷却进度着色器用于显示技能冷却效果 实现基础技能图标组件,包含样式和着色器效果 --- components/Abstracts/SkillIconBase.tscn | 32 +++++++++++++++++ resources/skillIcons/purple-crystal.png | Bin 0 -> 4190 bytes .../skillIcons/purple-crystal.png.import | 34 ++++++++++++++++++ shaders/CooldownProgress.gdshader | 8 +++++ 4 files changed, 74 insertions(+) create mode 100644 components/Abstracts/SkillIconBase.tscn create mode 100644 resources/skillIcons/purple-crystal.png create mode 100644 resources/skillIcons/purple-crystal.png.import create mode 100644 shaders/CooldownProgress.gdshader diff --git a/components/Abstracts/SkillIconBase.tscn b/components/Abstracts/SkillIconBase.tscn new file mode 100644 index 0000000..c7d86b9 --- /dev/null +++ b/components/Abstracts/SkillIconBase.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=5 format=3 uid="uid://ufl4kek8hrmt"] + +[ext_resource type="Shader" path="res://shaders/CooldownProgress.gdshader" id="1_jaivk"] +[ext_resource type="Texture2D" uid="uid://cp4ypuarjoshp" path="res://resources/skillIcons/purple-crystal.png" id="2_hh1bl"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a60wd"] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0, 0, 0, 0.5) +corner_radius_top_left = 15 +corner_radius_top_right = 15 +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ew32n"] +shader = ExtResource("1_jaivk") +shader_parameter/progress = 0.58 + +[node name="SkillIconBase" type="PanelContainer"] +custom_minimum_size = Vector2(30, 30) +offset_right = 30.0 +offset_bottom = 30.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_a60wd") + +[node name="icon" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_ew32n") +layout_mode = 2 +texture = ExtResource("2_hh1bl") +expand_mode = 1 +stretch_mode = 5 diff --git a/resources/skillIcons/purple-crystal.png b/resources/skillIcons/purple-crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e733ee9ce44968db3c3bb39197c1bb212e44a8 GIT binary patch literal 4190 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 literal 0 HcmV?d00001 diff --git a/resources/skillIcons/purple-crystal.png.import b/resources/skillIcons/purple-crystal.png.import new file mode 100644 index 0000000..157cccd --- /dev/null +++ b/resources/skillIcons/purple-crystal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp4ypuarjoshp" +path="res://.godot/imported/purple-crystal.png-f9e8d81cb38093f7cc1a3de123d1cd24.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/skillIcons/purple-crystal.png" +dest_files=["res://.godot/imported/purple-crystal.png-f9e8d81cb38093f7cc1a3de123d1cd24.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/shaders/CooldownProgress.gdshader b/shaders/CooldownProgress.gdshader new file mode 100644 index 0000000..8b76655 --- /dev/null +++ b/shaders/CooldownProgress.gdshader @@ -0,0 +1,8 @@ +shader_type canvas_item; +uniform float progress:hint_range(0.0, 1.0, 0.01)=0.5; +void fragment() { + COLOR=texture(TEXTURE,UV); + if(UV.y>=progress){ + COLOR.a*=0.5; + } +} \ No newline at end of file