From d26d3239125ba1cb24f199aa45e38b9df686ef1b Mon Sep 17 00:00:00 2001 From: huadexuan <491009149@qq.com> Date: Wed, 23 Sep 2026 22:26:01 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(materials):=20=E5=88=A0=E9=99=A4Towe?= =?UTF-8?q?rEnemy=E5=92=8CTowerPlayer=E6=9D=90=E8=B4=A8=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除项目中不再需要的TowerEnemy.mat和TowerPlayer.mat材质文件, 以及对应的.meta元数据文件。这些材质文件已通过其他方式重构或不再使用。 ``` --- ...面_石头_纹理贴图.mat => Outline_Black.mat} | 53 +++++++++--- .../草地.mat.meta => Outline_Black.mat.meta} | 2 +- .../草地.mat => Outline_Black_小比例.mat} | 46 +++++++++- ...mat.meta => Outline_Black_小比例.mat.meta} | 2 +- Assets/Materials/TowerEnemy.mat | 83 ------------------- Assets/Materials/TowerPlayer.mat | 83 ------------------- Assets/Materials/TowerPlayer.mat.meta | 8 -- .../terrain/地面_石头_纹理贴图.mat.meta | 8 -- Assets/Prefabs/主角/召唤师主角.prefab | 10 +++ Assets/Prefabs/第一章/人类士兵.prefab | 20 +++++ Assets/Prefabs/第一章/弓箭手.prefab | 20 +++++ Assets/Prefabs/第一章/法师.prefab | 10 +++ Assets/Prefabs/第一章/盾卫.prefab | 30 +++++++ Assets/Prefabs/第一章/精锐士兵.prefab | 20 +++++ Assets/Prefabs/第二章/弓箭猎人.prefab | 20 +++++ Assets/Prefabs/第二章/狼人.prefab | 10 +++ Assets/Prefabs/第二章/石巨人.prefab | 10 +++ Assets/Prefabs/第二章/蓝色怪物.prefab | 10 +++ .../{Materials/terrain.meta => Shader.meta} | 2 +- Assets/Shader/Outline.shader | 54 ++++++++++++ Assets/Shader/Outline.shader.meta | 9 ++ CODELY.md | 1 + 22 files changed, 313 insertions(+), 198 deletions(-) rename Assets/Materials/{terrain/地面_石头_纹理贴图.mat => Outline_Black.mat} (57%) rename Assets/Materials/{terrain/草地.mat.meta => Outline_Black.mat.meta} (70%) rename Assets/Materials/{terrain/草地.mat => Outline_Black_小比例.mat} (57%) rename Assets/Materials/{TowerEnemy.mat.meta => Outline_Black_小比例.mat.meta} (70%) delete mode 100644 Assets/Materials/TowerEnemy.mat delete mode 100644 Assets/Materials/TowerPlayer.mat delete mode 100644 Assets/Materials/TowerPlayer.mat.meta delete mode 100644 Assets/Materials/terrain/地面_石头_纹理贴图.mat.meta rename Assets/{Materials/terrain.meta => Shader.meta} (67%) create mode 100644 Assets/Shader/Outline.shader create mode 100644 Assets/Shader/Outline.shader.meta diff --git a/Assets/Materials/terrain/地面_石头_纹理贴图.mat b/Assets/Materials/Outline_Black.mat similarity index 57% rename from Assets/Materials/terrain/地面_石头_纹理贴图.mat rename to Assets/Materials/Outline_Black.mat index 34ea19b..384af45 100644 --- a/Assets/Materials/terrain/地面_石头_纹理贴图.mat +++ b/Assets/Materials/Outline_Black.mat @@ -7,12 +7,11 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: "\u5730\u9762_\u77F3\u5934_\u7EB9\u7406\u8D34\u56FE" - m_Shader: {fileID: 10623, guid: 0000000000000000f000000000000000, type: 0} + m_Name: Outline_Black + m_Shader: {fileID: 4800000, guid: 6cbfe633d117147629f813fb4e0f7a39, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _NORMALMAP + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 @@ -25,7 +24,7 @@ Material: serializedVersion: 3 m_TexEnvs: - _BumpMap: - m_Texture: {fileID: 2800000, guid: a601a201c4a764b0ab3766d5787355da, type: 3} + m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailAlbedoMap: @@ -60,31 +59,65 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - - _TerrainHolesTexture: + - baseColorTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - emissiveTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - metallicRoughnessTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - normalTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - occlusionTexture: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - _BumpScale: 1 + - _CullMode: 2 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 - _GlossMapScale: 1 - - _Glossiness: 0.31 + - _Glossiness: 0.5 - _GlossyReflections: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 + - _OutlineWidth: 0.03 - _Parallax: 0.02 - - _Shininess: 0.078125 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _UVSec: 0 - _ZWrite: 1 + - alphaCutoff: 0.5 + - baseColorTexture_texCoord: 0 + - emissiveTexture_texCoord: 0 + - metallicFactor: 1 + - metallicRoughnessTexture_texCoord: 0 + - normalTexture_scale: 1 + - normalTexture_texCoord: 0 + - occlusionTexture_strength: 1 + - occlusionTexture_texCoord: 0 + - roughnessFactor: 1 m_Colors: - - _Color: {r: 0.8207547, g: 0.7873191, b: 0.53813636, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - - _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - baseColorFactor: {r: 1, g: 1, b: 1, a: 1} + - baseColorTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - emissiveFactor: {r: 0, g: 0, b: 0, a: 1} + - emissiveTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - metallicRoughnessTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - normalTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - occlusionTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} m_BuildTextureStacks: [] diff --git a/Assets/Materials/terrain/草地.mat.meta b/Assets/Materials/Outline_Black.mat.meta similarity index 70% rename from Assets/Materials/terrain/草地.mat.meta rename to Assets/Materials/Outline_Black.mat.meta index 3142574..d0fff5f 100644 --- a/Assets/Materials/terrain/草地.mat.meta +++ b/Assets/Materials/Outline_Black.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: BitOvCmpWyjh1r2/p0Bq8BiMfi+EwtfrNaogxqOiLRwpInS4RbxwuJQ= +guid: DHlMsSmtBXq5NBgrCDyjpQwVrsGLYtPusN7UNxirhs24Y7N+A79Q5WE= NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 diff --git a/Assets/Materials/terrain/草地.mat b/Assets/Materials/Outline_Black_小比例.mat similarity index 57% rename from Assets/Materials/terrain/草地.mat rename to Assets/Materials/Outline_Black_小比例.mat index b5d6af6..f99b531 100644 --- a/Assets/Materials/terrain/草地.mat +++ b/Assets/Materials/Outline_Black_小比例.mat @@ -7,8 +7,8 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: "\u8349\u5730" - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Name: "Outline_Black_\u5C0F\u6BD4\u4F8B" + m_Shader: {fileID: 4800000, guid: 6cbfe633d117147629f813fb4e0f7a39, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] @@ -44,7 +44,7 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MainTex: - m_Texture: {fileID: 2800000, guid: c34f1071ca98a488ea5921e64c76afe4, type: 3} + m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MetallicGlossMap: @@ -59,9 +59,30 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - baseColorTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - emissiveTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - metallicRoughnessTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - normalTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - occlusionTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - _BumpScale: 1 + - _CullMode: 2 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 @@ -71,13 +92,32 @@ Material: - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 + - _OutlineWidth: 0.0002 - _Parallax: 0.02 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _UVSec: 0 - _ZWrite: 1 + - alphaCutoff: 0.5 + - baseColorTexture_texCoord: 0 + - emissiveTexture_texCoord: 0 + - metallicFactor: 1 + - metallicRoughnessTexture_texCoord: 0 + - normalTexture_scale: 1 + - normalTexture_texCoord: 0 + - occlusionTexture_strength: 1 + - occlusionTexture_texCoord: 0 + - roughnessFactor: 1 m_Colors: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - baseColorFactor: {r: 1, g: 1, b: 1, a: 1} + - baseColorTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - emissiveFactor: {r: 0, g: 0, b: 0, a: 1} + - emissiveTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - metallicRoughnessTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - normalTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} + - occlusionTexture_Rotation: {r: 0, g: 0, b: 0, a: 0} m_BuildTextureStacks: [] diff --git a/Assets/Materials/TowerEnemy.mat.meta b/Assets/Materials/Outline_Black_小比例.mat.meta similarity index 70% rename from Assets/Materials/TowerEnemy.mat.meta rename to Assets/Materials/Outline_Black_小比例.mat.meta index f70da8f..7184611 100644 --- a/Assets/Materials/TowerEnemy.mat.meta +++ b/Assets/Materials/Outline_Black_小比例.mat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: BisXvXv4UC7Quexwb6xeZ7BWSZkXiC4oyM6OHKcBjZW+LlAzibcQ3W4= +guid: BiwWsCOsAi/mppNeCQeRIi0/9Z7z47n2w/zLprsKj5Kh6s+XXnnv7XY= NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 diff --git a/Assets/Materials/TowerEnemy.mat b/Assets/Materials/TowerEnemy.mat deleted file mode 100644 index d6dfeef..0000000 --- a/Assets/Materials/TowerEnemy.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:yousandi.cn,2023: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: TowerEnemy - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_Parent: {fileID: 0} - m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.55, g: 0.45, b: 0.4, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/TowerPlayer.mat b/Assets/Materials/TowerPlayer.mat deleted file mode 100644 index 218b82d..0000000 --- a/Assets/Materials/TowerPlayer.mat +++ /dev/null @@ -1,83 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:yousandi.cn,2023: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: TowerPlayer - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_Parent: {fileID: 0} - m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.6, g: 0.55, b: 0.5, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/Materials/TowerPlayer.mat.meta b/Assets/Materials/TowerPlayer.mat.meta deleted file mode 100644 index 3c20783..0000000 --- a/Assets/Materials/TowerPlayer.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: WS5Nt36uV3kVSfaU1TvvJJZb+2fDTUZxZgRCS9cMsl0KJsVE3mWYB3g= -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Materials/terrain/地面_石头_纹理贴图.mat.meta b/Assets/Materials/terrain/地面_石头_纹理贴图.mat.meta deleted file mode 100644 index ac40c40..0000000 --- a/Assets/Materials/terrain/地面_石头_纹理贴图.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: C3NLvS+kVy8e6tinG8lgQKjGsEAz4R8mvsGqHeruu5m6u2G5ocYSqwM= -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Prefabs/主角/召唤师主角.prefab b/Assets/Prefabs/主角/召唤师主角.prefab index 53052ae..b97e71e 100644 --- a/Assets/Prefabs/主角/召唤师主角.prefab +++ b/Assets/Prefabs/主角/召唤师主角.prefab @@ -90,6 +90,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -5324531855699944674, guid: 6b859b567d8ba4a7a87c03aa4b87c18c, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -5324531855699944674, guid: 6b859b567d8ba4a7a87c03aa4b87c18c, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 6b859b567d8ba4a7a87c03aa4b87c18c, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第一章/人类士兵.prefab b/Assets/Prefabs/第一章/人类士兵.prefab index 76fab3d..1bea130 100644 --- a/Assets/Prefabs/第一章/人类士兵.prefab +++ b/Assets/Prefabs/第一章/人类士兵.prefab @@ -91,6 +91,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 5072af719b9b1401787c6c55f048d8ed, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 5072af719b9b1401787c6c55f048d8ed, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: -3001758849199531384, guid: 5072af719b9b1401787c6c55f048d8ed, type: 3} propertyPath: m_LocalPosition.x @@ -386,6 +396,16 @@ PrefabInstance: propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 81c3ca29ca6b10849a8810e299d4ab57, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 81c3ca29ca6b10849a8810e299d4ab57, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 81c3ca29ca6b10849a8810e299d4ab57, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第一章/弓箭手.prefab b/Assets/Prefabs/第一章/弓箭手.prefab index 844da10..2591e85 100644 --- a/Assets/Prefabs/第一章/弓箭手.prefab +++ b/Assets/Prefabs/第一章/弓箭手.prefab @@ -90,6 +90,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 7b0dd5b38a9cd144ea135f3743440958, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 7b0dd5b38a9cd144ea135f3743440958, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 7b0dd5b38a9cd144ea135f3743440958, type: 3} propertyPath: m_Name @@ -384,6 +394,16 @@ PrefabInstance: propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} + - target: {fileID: -7635826562936255635, guid: c3401c41ece280d47af5c39c99b1e31a, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -7635826562936255635, guid: c3401c41ece280d47af5c39c99b1e31a, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: c3401c41ece280d47af5c39c99b1e31a, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第一章/法师.prefab b/Assets/Prefabs/第一章/法师.prefab index 805c6af..20cecfa 100644 --- a/Assets/Prefabs/第一章/法师.prefab +++ b/Assets/Prefabs/第一章/法师.prefab @@ -91,6 +91,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 9d4b54ec2c4f7754bb1fd5ec11a29541, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 9d4b54ec2c4f7754bb1fd5ec11a29541, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 9d4b54ec2c4f7754bb1fd5ec11a29541, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第一章/盾卫.prefab b/Assets/Prefabs/第一章/盾卫.prefab index 32b2a65..fedae19 100644 --- a/Assets/Prefabs/第一章/盾卫.prefab +++ b/Assets/Prefabs/第一章/盾卫.prefab @@ -68,6 +68,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 6aca4bb5878af445d8293bd74e9de170, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 6aca4bb5878af445d8293bd74e9de170, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 6aca4bb5878af445d8293bd74e9de170, type: 3} propertyPath: m_Name @@ -142,6 +152,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 17f7a1b7ae92f0948a5bebde8a11fc2b, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 17f7a1b7ae92f0948a5bebde8a11fc2b, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 17f7a1b7ae92f0948a5bebde8a11fc2b, type: 3} propertyPath: m_Name @@ -446,6 +466,16 @@ PrefabInstance: propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 38a36e022524a4f40a80cadd9313ec49, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 38a36e022524a4f40a80cadd9313ec49, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 38a36e022524a4f40a80cadd9313ec49, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第一章/精锐士兵.prefab b/Assets/Prefabs/第一章/精锐士兵.prefab index 773ba96..3336b92 100644 --- a/Assets/Prefabs/第一章/精锐士兵.prefab +++ b/Assets/Prefabs/第一章/精锐士兵.prefab @@ -58,6 +58,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 42.915 objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 38a36e022524a4f40a80cadd9313ec49, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -7511558181221131132, guid: 38a36e022524a4f40a80cadd9313ec49, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 38a36e022524a4f40a80cadd9313ec49, type: 3} propertyPath: m_Name @@ -132,6 +142,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 62d9f853c067ff443bd2a3aa382ab563, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 62d9f853c067ff443bd2a3aa382ab563, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 62d9f853c067ff443bd2a3aa382ab563, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第二章/弓箭猎人.prefab b/Assets/Prefabs/第二章/弓箭猎人.prefab index dd79a6a..1f2e780 100644 --- a/Assets/Prefabs/第二章/弓箭猎人.prefab +++ b/Assets/Prefabs/第二章/弓箭猎人.prefab @@ -110,6 +110,16 @@ PrefabInstance: propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} + - target: {fileID: -7635826562936255635, guid: c3401c41ece280d47af5c39c99b1e31a, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -7635826562936255635, guid: c3401c41ece280d47af5c39c99b1e31a, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: c3401c41ece280d47af5c39c99b1e31a, type: 3} propertyPath: m_Name @@ -208,6 +218,16 @@ PrefabInstance: propertyPath: m_TagString value: Enemy objectReference: {fileID: 0} + - target: {fileID: 2664098864995057252, guid: 2ac38f68ec4f85341b423b5e8defd47e, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2664098864995057252, guid: 2ac38f68ec4f85341b423b5e8defd47e, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 5866666021909216657, guid: 2ac38f68ec4f85341b423b5e8defd47e, type: 3} propertyPath: m_Controller diff --git a/Assets/Prefabs/第二章/狼人.prefab b/Assets/Prefabs/第二章/狼人.prefab index eb7d9b1..6d9e3ad 100644 --- a/Assets/Prefabs/第二章/狼人.prefab +++ b/Assets/Prefabs/第二章/狼人.prefab @@ -58,6 +58,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 3d031ad534e512e45bb7fe10237e6286, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: 3d031ad534e512e45bb7fe10237e6286, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: 919132149155446097, guid: 3d031ad534e512e45bb7fe10237e6286, type: 3} propertyPath: m_Name diff --git a/Assets/Prefabs/第二章/石巨人.prefab b/Assets/Prefabs/第二章/石巨人.prefab index 983f3c1..27f5d0c 100644 --- a/Assets/Prefabs/第二章/石巨人.prefab +++ b/Assets/Prefabs/第二章/石巨人.prefab @@ -58,6 +58,16 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: d40daebbc0e47416099e97edbbbeac04, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -7676612043611361953, guid: d40daebbc0e47416099e97edbbbeac04, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 33c430f15cc564e098b64444c55c60a7, type: 2} - target: {fileID: -3001758849199531384, guid: d40daebbc0e47416099e97edbbbeac04, type: 3} propertyPath: m_LocalPosition.x diff --git a/Assets/Prefabs/第二章/蓝色怪物.prefab b/Assets/Prefabs/第二章/蓝色怪物.prefab index 01621d0..9f76207 100644 --- a/Assets/Prefabs/第二章/蓝色怪物.prefab +++ b/Assets/Prefabs/第二章/蓝色怪物.prefab @@ -78,6 +78,16 @@ PrefabInstance: propertyPath: m_ConstrainProportionsScale value: 1 objectReference: {fileID: 0} + - target: {fileID: -5324531855699944674, guid: aedf6e849dd924e229c57640f99ff50a, + type: 3} + propertyPath: m_Materials.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: -5324531855699944674, guid: aedf6e849dd924e229c57640f99ff50a, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 9f9591addfe464f93aeb91eff0dc75fa, type: 2} - target: {fileID: 919132149155446097, guid: aedf6e849dd924e229c57640f99ff50a, type: 3} propertyPath: m_Name diff --git a/Assets/Materials/terrain.meta b/Assets/Shader.meta similarity index 67% rename from Assets/Materials/terrain.meta rename to Assets/Shader.meta index 9a7dccd..f54edbf 100644 --- a/Assets/Materials/terrain.meta +++ b/Assets/Shader.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: DSkbsC7+UiqzjXYvJtp+Ek3TyYKhAs+lXTjZwwGl4KwuI1XVLaujRD8= +guid: By5NsXykAS2cUrZNy5f8luMTfxT5lahizdgWVrVL8TgUdlSXx3s2MO8= folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Shader/Outline.shader b/Assets/Shader/Outline.shader new file mode 100644 index 0000000..e14101f --- /dev/null +++ b/Assets/Shader/Outline.shader @@ -0,0 +1,54 @@ +Shader "Unlit/Outline" +{ + Properties + { + _OutlineColor ("描边颜色", Color) = (0,0,0,1) + _OutlineWidth ("描边宽度", Range(0.001, 0.1)) = 0.015 + } + SubShader + { + Tags { "RenderType"="Opaque" "Queue"="Geometry+10" } + LOD 100 + + Pass + { + Cull Front + ZWrite On + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float3 normal : NORMAL; + }; + + struct v2f + { + float4 pos : SV_POSITION; + }; + + fixed4 _OutlineColor; + float _OutlineWidth; + + v2f vert (appdata v) + { + v2f o; + // 沿法线方向外扩顶点 + float3 expandedPos = v.vertex.xyz + v.normal * _OutlineWidth; + o.pos = UnityObjectToClipPos(float4(expandedPos, 1.0)); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return _OutlineColor; + } + ENDCG + } + } + FallBack "Unlit/Texture" +} diff --git a/Assets/Shader/Outline.shader.meta b/Assets/Shader/Outline.shader.meta new file mode 100644 index 0000000..0180ccc --- /dev/null +++ b/Assets/Shader/Outline.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: CSlN43+rUHgAdI/KyDPCnVd69qNd81nKHAi7hla8XbgevFI9DqsU9m0= +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/CODELY.md b/CODELY.md index d9487cf..6009789 100644 --- a/CODELY.md +++ b/CODELY.md @@ -88,6 +88,7 @@ - [2026-09-21 14:26:28] 2026-09-21 据点目标规则修复:CrystalMineCapture 占领后会实时把 UnitTeam.teamId 改为蓝方/红方/中立;UnitBase.IsTargetValid 必须同时检查目标存活状态和目标是否仍属于敌方。出生使命建筑若已被己方占领或变为中立,应立即失效并回退攻击敌方主城堡。 - [2026-09-22 10:58:17] 2026-09-21 远程弹道视觉方案调整建议:普通远程弹道继续使用 Projectile.cs 处理锁敌、飞行、碰撞和伤害;火球等圆形视觉优先使用 SpriteRenderer 始终朝向摄像机,不强制使用 Quad,以避免贴图方向难调。若有明显尾焰,再拆分核心 billboard 与按飞行方向旋转的尾焰层。 - [2026-09-22 13:39:47] 2026-09-22 投射物斜向问题修复:UnitBase 发射普通攻击和技能投射物时,不再把骨骼下 attackPos.rotation 传给 Projectile 根节点,统一使用 Quaternion.identity;attackPos 只负责提供生成位置。原因是法师/弓箭手的 attackPos 挂在手骨骼下,会继承动画旋转导致火球和箭矢斜着出现。 +- [2026-09-23 22:13:21] 2026-09-23 角色黑色描边系统:Outline_Black.mat(Assets/Shader/Outline.shader,反向外扩 + Cull Front)以 SkinnedMeshRenderer 的 materials[1] 挂在全部 10 个角色 Prefab(人类士兵/弓箭手/法师/盾卫/精锐士兵/弓箭猎人/狼人/石巨人/蓝色怪物/召唤师主角),武器(短剑/盾牌/大剑/弓)不加描边。关键坑:_OutlineWidth 是物体空间数值,会被物体缩放放大,所以网格局部尺寸很小的模型描边会巨大化——蓝色怪物网格局部尺寸仅 0.02(被缩放约 160x),已改用专用材质 Outline_Black_小比例.mat(_OutlineWidth=0.0002)。零厚度平面(盾牌/大剑/弓)无法用反向外扩描边,会整块变黑或不可见,这是武器不描边的原因。已实测描边能跟随骨骼动画姿势。Why: 后续新增或替换角色模型时若局部缩放与 1 相差较大,必须同步调整描边宽度,否则整个模型会被黑色吞没。 ### Reference - [2026-09-09 12:23:17] 飞行物脚本 Projectile.cs 负责锁敌追踪、碰撞检测和伤害结算。箭矢预制体 ArrowProjectile_White.prefab 已配置 Projectile 组件和 CapsuleCollider(Is Trigger)。远程单位需在攻击动画松弦帧添加 OnAttackEffect Event,并在 UnitBase 中设置 attackType=RangedProjectile、projectilePrefab、projectileSpawnPoint。