feat(materials): 更新材质贴图纹理和缩放参数

- 修改CoreBattleGround.mat材质的MainTex纹理GUID为4435756e5310e408fb125e8f4bcee9bd
- 调整CoreBattleGround.mat材质中EmissionMap和MainTex的缩放比例从{x: 1, y: 1}改为{x: 3, y: 3}

fix(models): 调整建筑模型全局缩放比例

- 将主要基地模型的globalScale从3调整为5
- 将水晶矿模型的globalScale从1调整为7,对应骨骼缩放从1调整为0.07
- 将机械出兵点模型的globalScale从1调整为7,对应骨骼缩放从1调整为0.07

feat(textures): 为模型添加纹理贴图

- 为水晶矿模型材质添加MainTex纹理,GUID为c24a978a0c9ad4dabb831e4b2bff0e2f
- 为机械出兵点模型材质添加MainTex纹理,GUID为fb52fc095c9554db895dde01ba8a8b6c
```
This commit is contained in:
huadexuan committed 2026-09-18 18:06:09 +08:00
1 parent 7b037dd467
commit 0e7de5f885
57 files changed
+2434 -866

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

+83
View File
@@ -0,0 +1,83 @@
%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: AdjustableGlowOrb
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.1, g: 0.65, b: 1, a: 1}
- _EmissionColor: {r: 0.25, g: 1.2, b: 2.2, a: 1}
m_BuildTextureStacks: []
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: BywWsnn4Un/GFWjf8bvyEUH8jTe59QnREzBtnD0L0MlfNBq1S77Lf0Y= guid: Bi5KsCz+V3j0kxCaaP+0NUHKj509Mi8z+kdym94omHjHHQP9wxkqeDw=
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 4300000 mainObjectFileID: 2100000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -0,0 +1,35 @@
%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: AdjustableGlowOrbHalo
m_Shader: {fileID: 200, 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: 3000
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _InvFade: 1
m_Colors:
- _TintColor: {r: 0.05, g: 0.55, b: 1, a: 0.22}
m_BuildTextureStacks: []
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: XXIfsHmkWy70mRzxaVsVRar8FXvnMLnK7Zm9w/xWouxAr36SjKGgHB0= guid: XnkZsSn8AS+/9PiY9cN/VOgL7pXT4nlGCZTm7XsEwoVRg5w/aEGwuiA=
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 4300000 mainObjectFileID: 2100000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+3 -3
View File
@@ -43,11 +43,11 @@ Material:
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _EmissionMap: - _EmissionMap:
m_Texture: {fileID: 0} m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1} m_Scale: {x: 3, y: 3}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MainTex: - _MainTex:
m_Texture: {fileID: 2800000, guid: edcec6e752f2140ef804a6b0738f4f54, type: 3} m_Texture: {fileID: 2800000, guid: 4435756e5310e408fb125e8f4bcee9bd, type: 3}
m_Scale: {x: 1, y: 1} m_Scale: {x: 3, y: 3}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MetallicGlossMap: - _MetallicGlossMap:
m_Texture: {fileID: 0} m_Texture: {fileID: 0}
+35
View File
@@ -0,0 +1,35 @@
%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: PortalEnergy_Neutral
m_Shader: {fileID: 200, 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: 3000
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: a46d962ad95cf634e8f3eb7147cbd12e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _InvFade: 1
m_Colors:
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: Di8a4C+pVS2HyDmpA4ibc8MdsY3A08G9EwalmRGnhb98OcD02F5pxVM= guid: Wn8dt3mlAH6IRYwuuL9bxmhXrHm3Ko3cbMzBjvGdC4IKiE1GRr/ZzR0=
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 4300000 mainObjectFileID: 2100000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,210 @@
fileFormatVersion: 2
guid: CSwcvH+oW3+huk6aKQRWeFxTS6e8e7kskycHjNhRih20JtvjYmm70fE=
ModelImporter:
serializedVersion: 22361
internalIDToNameTable: []
externalObjects:
- first:
type: UnityEngine:Material
assembly: UnityEngine.CoreModule
name: Material.001
second: {fileID: 2100000, guid: 0e2a8e16ae525d7448fb18b9022bb062, type: 2}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
aCLCompressionLevel: 3
aCLCurvePrecision: 0.01
aCLFastSampleMode: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
tuanjieGIEnable: 0
tuanjieGIGenSDFFactor: 1
tuanjieGIGenSDFBias: 0.25
tuanjieGIDoubleSidedMode: 0
tuanjieGIGenFacetNums: 12
meshes:
lODScreenPercentages: []
globalScale: 8
meshCompression: 0
totalVerticesCount: 8568
totalTrianglesCount: 4999
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
virtualGeometry:
virtualGeometry: 0
useTransparent: 0
setVGForeachMesh: 0
isFirstUse: 1
virtualGeometrySettings:
generateGeometryBuffer: 0
surfaceCompensation: 0
allMeshUse: 1
ignoreSimpleMesh: 0
transformScaleState: 0
isPossibleOverflow: 0
hasBoneData: 0
isBoneCountOverflow: 0
virtualGeometryPlatformSettings:
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: DefaultVirtualGeometryPlatform
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: Standalone
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: iPhone
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: Android
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
selectedVGMeshes:
- index: 0
meshName: node_0
lodLevel: 0
meshGeometryBuffer: 0
supportVGMeshes:
- index: 0
meshName: node_0
lodLevel: 0
meshGeometryBuffer: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
overrideDefaultPose: 0
humanDescription:
serializedVersion: 3
human: []
skeleton: []
namedPoseList:
- name: Default
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 0.08
rootMotionBoneName:
defaultPoseIndex: -1
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,83 @@
%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: "\u4E3B\u5BB6\u57CE\u5821"
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: 2800000, guid: a24d7f061e075da439ae4258adbd518d, type: 3}
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: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: Dn9L53+uB3llaJS6Vhafbsyks+ndKhYEZAGzyB+XV8zhEld/tJmtx9o= guid: Dy8d5CL4Un3+gicJ2gA6nUZWwnO+1ejAKPMBprtvEM7MnXC2peIxx2Y=
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 4300000 mainObjectFileID: 2100000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -0,0 +1,163 @@
fileFormatVersion: 2
guid: Xngb4S37U322RDOX4Usu9uyQAfj1SYfdO/1nh5oxLv/SCRz+Yjfr1nU=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 14
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
webStreaming: 0
priorityLevel: 0
uploadedMode: 2
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WeixinMiniGame
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
doOverrideTextureManagerOperations: 0
platformOperationGroupSettings:
userData:
assetBundleName:
assetBundleVariant:
@@ -48,7 +48,7 @@ ModelImporter:
tuanjieGIGenFacetNums: 12 tuanjieGIGenFacetNums: 12
meshes: meshes:
lODScreenPercentages: [] lODScreenPercentages: []
globalScale: 3 globalScale: 5
meshCompression: 0 meshCompression: 0
totalVerticesCount: 8635 totalVerticesCount: 8635
totalTrianglesCount: 4998 totalTrianglesCount: 4998
@@ -190,7 +190,7 @@ ModelImporter:
armStretch: 0.05 armStretch: 0.05
legStretch: 0.05 legStretch: 0.05
feetSpacing: 0 feetSpacing: 0
globalScale: 0.03 globalScale: 0.049999997
rootMotionBoneName: rootMotionBoneName:
defaultPoseIndex: -1 defaultPoseIndex: -1
hasTranslationDoF: 0 hasTranslationDoF: 0
@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: XCsbsi7+An+PJzLywYrk9uQ+u2lq4ZOAZ15E4arp4JNqpzv1L+IzA1Q= guid: XS9MvS7/U3m6dqDMGv9c/gMis+P/vXKeKPOgPN5GaQgqPD66VCPaI9g=
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
+83
View File
@@ -0,0 +1,83 @@
%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: "\u5730\u56FE"
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: 2800000, guid: c8a4cdbb7cdc01545aaa9d2d0b0a600f, type: 3}
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.1
- _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.8742138, g: 0.8742138, b: 0.8742138, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: DC8X4yivUH0YWIxSi3xxgZIYGN3DwMGCn0PJg22u/mzP6FQrGaqOtlY=
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+210
View File
@@ -0,0 +1,210 @@
fileFormatVersion: 2
guid: Bn0c53+vAnn1MuHWRIWqU/OKht8DK/67DdDi52Zxz6Vg6v5KX+owqds=
ModelImporter:
serializedVersion: 22361
internalIDToNameTable: []
externalObjects:
- first:
type: UnityEngine:Material
assembly: UnityEngine.CoreModule
name: No Name
second: {fileID: 2100000, guid: 3e8f22364fa4c5744ade699b9db58a42, type: 2}
materials:
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
aCLCompressionLevel: 3
aCLCurvePrecision: 0.01
aCLFastSampleMode: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
tuanjieGIEnable: 0
tuanjieGIGenSDFFactor: 1
tuanjieGIGenSDFBias: 0.25
tuanjieGIDoubleSidedMode: 0
tuanjieGIGenFacetNums: 12
meshes:
lODScreenPercentages: []
globalScale: 100
meshCompression: 0
totalVerticesCount: 10615
totalTrianglesCount: 6000
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
virtualGeometry:
virtualGeometry: 0
useTransparent: 0
setVGForeachMesh: 0
isFirstUse: 1
virtualGeometrySettings:
generateGeometryBuffer: 0
surfaceCompensation: 0
allMeshUse: 1
ignoreSimpleMesh: 0
transformScaleState: 0
isPossibleOverflow: 0
hasBoneData: 0
isBoneCountOverflow: 0
virtualGeometryPlatformSettings:
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: DefaultVirtualGeometryPlatform
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: Standalone
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: iPhone
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
- serializedVersion: 0
overridden: 0
ignorePlatformSupport: 0
buildTarget: Android
positionPrecision: -2147483648
normalPrecision: -2147483648
tangentPrecision: -2147483648
boneWeightPrecision: -2147483648
detailedTriangleCount: 0
detailedVertexCount: 0
rootPageSize: 0
streamablePageSize: 0
reserveTrianglePercent: 100
reserveDetailLevel: 0
selectedVGMeshes:
- index: 0
meshName: model
lodLevel: 0
meshGeometryBuffer: 0
supportVGMeshes:
- index: 0
meshName: model
lodLevel: 0
meshGeometryBuffer: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
overrideDefaultPose: 0
humanDescription:
serializedVersion: 3
human: []
skeleton: []
namedPoseList:
- name: Default
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
defaultPoseIndex: -1
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

+163
View File
@@ -0,0 +1,163 @@
fileFormatVersion: 2
guid: XHJOsXn5ASkhOJr0MEYSQYy6himVjaf03uXeT/ZsugbZpNL2iCO7gZQ=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 14
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
webStreaming: 0
priorityLevel: 0
uploadedMode: 2
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WeixinMiniGame
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
doOverrideTextureManagerOperations: 0
platformOperationGroupSettings:
userData:
assetBundleName:
assetBundleVariant:
@@ -48,7 +48,7 @@ ModelImporter:
tuanjieGIGenFacetNums: 12 tuanjieGIGenFacetNums: 12
meshes: meshes:
lODScreenPercentages: [] lODScreenPercentages: []
globalScale: 1 globalScale: 7
meshCompression: 0 meshCompression: 0
totalVerticesCount: 9513 totalVerticesCount: 9513
totalTrianglesCount: 5000 totalTrianglesCount: 5000
@@ -190,7 +190,7 @@ ModelImporter:
armStretch: 0.05 armStretch: 0.05
legStretch: 0.05 legStretch: 0.05
feetSpacing: 0 feetSpacing: 0
globalScale: 1 globalScale: 0.07
rootMotionBoneName: rootMotionBoneName:
defaultPoseIndex: -1 defaultPoseIndex: -1
hasTranslationDoF: 0 hasTranslationDoF: 0
+1 -1
View File
@@ -44,7 +44,7 @@ Material:
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MainTex: - _MainTex:
m_Texture: {fileID: 0} m_Texture: {fileID: 2800000, guid: c24a978a0c9ad4dabb831e4b2bff0e2f, type: 3}
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MetallicGlossMap: - _MetallicGlossMap:
@@ -48,7 +48,7 @@ ModelImporter:
tuanjieGIGenFacetNums: 12 tuanjieGIGenFacetNums: 12
meshes: meshes:
lODScreenPercentages: [] lODScreenPercentages: []
globalScale: 1 globalScale: 7
meshCompression: 0 meshCompression: 0
totalVerticesCount: 7065 totalVerticesCount: 7065
totalTrianglesCount: 4998 totalTrianglesCount: 4998
@@ -190,7 +190,7 @@ ModelImporter:
armStretch: 0.05 armStretch: 0.05
legStretch: 0.05 legStretch: 0.05
feetSpacing: 0 feetSpacing: 0
globalScale: 1 globalScale: 0.07
rootMotionBoneName: rootMotionBoneName:
defaultPoseIndex: -1 defaultPoseIndex: -1
hasTranslationDoF: 0 hasTranslationDoF: 0
@@ -44,7 +44,7 @@ Material:
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MainTex: - _MainTex:
m_Texture: {fileID: 0} m_Texture: {fileID: 2800000, guid: fb52fc095c9554db895dde01ba8a8b6c, type: 3}
m_Scale: {x: 1, y: 1} m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0} m_Offset: {x: 0, y: 0}
- _MetallicGlossMap: - _MetallicGlossMap:
@@ -1,203 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!43 &4300000
Mesh:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u969C\u788D\u7269_\u53F3\u4E0A"
serializedVersion: 13
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 21
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 21
localAABB:
m_Center: {x: 7.5, y: 1, z: -15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_Shapes:
vertices: []
shapes: []
channels: []
fullWeights: []
m_BindPose: []
m_BoneNameHashes:
m_RootBoneNameHash: 0
m_BonesAABB: []
m_VariableBoneCountWeights:
m_Data:
m_MeshCompression: 0
m_IsReadable: 1
m_KeepVertices: 1
m_KeepIndices: 1
m_GIFacetMesh:
serializedVersion: 1
m_aabb:
m_Min: {x: Infinity, y: Infinity, z: Infinity}
m_Max: {x: -Infinity, y: -Infinity, z: -Infinity}
m_doubleSide: 0
m_GIFacetInfo: []
m_GISDFMesh:
serializedVersion: 1
localAABB:
m_Center: {x: NaN, y: NaN, z: NaN}
m_Extent: {x: NaN, y: NaN, z: NaN}
sdfGenBias: 0.25
is2Sided: 0
LODs: []
m_SharedClusterData:
m_LightmapUseUV1: 0
rootClusterPage:
hierarchyNodes: []
pageStreamingInfos: []
pageIndicesOfDependencies:
clusterCount: 0
clusterLevelCount: 0
rootPageSize: 0
streamingPageSize: 0
posBits: 0
normalBits: 0
tangentBits: 0
colorBits: 0
vertsSize: 0
vertsCount: 0
uvBits: []
streamableClusterPageSize: 0
_typelessdata:
m_IndexFormat: 0
m_IndexBuffer: 00000200010003000400050006000700080009000a000b000c000d000e000f0010001100120013001400
m_VertexData:
serializedVersion: 3
m_VertexCount: 21
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 12
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 504
_typelessdata: 00000000000000400000f8c100000000000080bf0000000000000000000000400000000000000000000080bf0000000000007041000000400000000000000000000080bf00000000000070410000000000000000d670663f00000000d801dfbe00000000000000000000f8c1d670663f00000000d801dfbe00000000000000400000f8c1d670663f00000000d801dfbe000070410000000000000000d670663f00000000d801dfbe00000000000000400000f8c1d670663f00000000d801dfbe000070410000004000000000d670663f00000000d801dfbe00000000000000000000000000000000000000000000803f00007041000000000000000000000000000000000000803f00007041000000400000000000000000000000000000803f00000000000000000000000000000000000000000000803f00007041000000400000000000000000000000000000803f00000000000000400000000000000000000000000000803f00000000000000000000f8c1000080bf0000000000000000000000000000000000000000000080bf0000000000000000000000000000004000000000000080bf000000000000000000000000000000000000f8c1000080bf0000000000000000000000000000004000000000000080bf000000000000000000000000000000400000f8c1000080bf0000000000000000
m_CompressedMesh:
m_Vertices:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_UV:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Normals:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Tangents:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Weights:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_NormalSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_TangentSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_FloatColors:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_BoneIndices:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_Triangles:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_UVInfo: 0
m_LocalAABB:
m_Center: {x: 7.5, y: 1, z: -15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_MeshUsageFlags: 0
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
m_MeshMetrics[0]: 1
m_MeshMetrics[1]: 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
m_GenerateGeometryBuffer: 0
m_HasVirtualGeometryMesh: 0
@@ -1,203 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!43 &4300000
Mesh:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u969C\u788D\u7269_\u53F3\u4E0B"
serializedVersion: 13
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 21
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 21
localAABB:
m_Center: {x: 7.5, y: 1, z: 15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_Shapes:
vertices: []
shapes: []
channels: []
fullWeights: []
m_BindPose: []
m_BoneNameHashes:
m_RootBoneNameHash: 0
m_BonesAABB: []
m_VariableBoneCountWeights:
m_Data:
m_MeshCompression: 0
m_IsReadable: 1
m_KeepVertices: 1
m_KeepIndices: 1
m_GIFacetMesh:
serializedVersion: 1
m_aabb:
m_Min: {x: Infinity, y: Infinity, z: Infinity}
m_Max: {x: -Infinity, y: -Infinity, z: -Infinity}
m_doubleSide: 0
m_GIFacetInfo: []
m_GISDFMesh:
serializedVersion: 1
localAABB:
m_Center: {x: NaN, y: NaN, z: NaN}
m_Extent: {x: NaN, y: NaN, z: NaN}
sdfGenBias: 0.25
is2Sided: 0
LODs: []
m_SharedClusterData:
m_LightmapUseUV1: 0
rootClusterPage:
hierarchyNodes: []
pageStreamingInfos: []
pageIndicesOfDependencies:
clusterCount: 0
clusterLevelCount: 0
rootPageSize: 0
streamingPageSize: 0
posBits: 0
normalBits: 0
tangentBits: 0
colorBits: 0
vertsSize: 0
vertsCount: 0
uvBits: []
streamableClusterPageSize: 0
_typelessdata:
m_IndexFormat: 0
m_IndexBuffer: 00000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013001400
m_VertexData:
serializedVersion: 3
m_VertexCount: 21
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 12
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 504
_typelessdata: 00000000000000400000f841000000000000803f00000000000070410000004000000000000000000000803f00000000000000000000004000000000000000000000803f0000000000000000000000000000f841d670663f00000000d801df3e000070410000000000000000d670663f00000000d801df3e000070410000004000000000d670663f00000000d801df3e00000000000000000000f841d670663f00000000d801df3e000070410000004000000000d670663f00000000d801df3e00000000000000400000f841d670663f00000000d801df3e0000704100000000000000000000000000000000000080bf0000000000000000000000000000000000000000000080bf0000000000000040000000000000000000000000000080bf0000704100000000000000000000000000000000000080bf0000000000000040000000000000000000000000000080bf0000704100000040000000000000000000000000000080bf000000000000000000000000000080bf000000000000000000000000000000000000f841000080bf000000000000000000000000000000400000f841000080bf0000000000000000000000000000000000000000000080bf000000000000000000000000000000400000f841000080bf0000000000000000000000000000004000000000000080bf0000000000000000
m_CompressedMesh:
m_Vertices:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_UV:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Normals:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Tangents:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Weights:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_NormalSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_TangentSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_FloatColors:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_BoneIndices:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_Triangles:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_UVInfo: 0
m_LocalAABB:
m_Center: {x: 7.5, y: 1, z: 15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_MeshUsageFlags: 0
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
m_MeshMetrics[0]: 1
m_MeshMetrics[1]: 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
m_GenerateGeometryBuffer: 0
m_HasVirtualGeometryMesh: 0
@@ -1,203 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!43 &4300000
Mesh:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u969C\u788D\u7269_\u5DE6\u4E0A"
serializedVersion: 13
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 21
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 21
localAABB:
m_Center: {x: -7.5, y: 1, z: -15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_Shapes:
vertices: []
shapes: []
channels: []
fullWeights: []
m_BindPose: []
m_BoneNameHashes:
m_RootBoneNameHash: 0
m_BonesAABB: []
m_VariableBoneCountWeights:
m_Data:
m_MeshCompression: 0
m_IsReadable: 1
m_KeepVertices: 1
m_KeepIndices: 1
m_GIFacetMesh:
serializedVersion: 1
m_aabb:
m_Min: {x: Infinity, y: Infinity, z: Infinity}
m_Max: {x: -Infinity, y: -Infinity, z: -Infinity}
m_doubleSide: 0
m_GIFacetInfo: []
m_GISDFMesh:
serializedVersion: 1
localAABB:
m_Center: {x: NaN, y: NaN, z: NaN}
m_Extent: {x: NaN, y: NaN, z: NaN}
sdfGenBias: 0.25
is2Sided: 0
LODs: []
m_SharedClusterData:
m_LightmapUseUV1: 0
rootClusterPage:
hierarchyNodes: []
pageStreamingInfos: []
pageIndicesOfDependencies:
clusterCount: 0
clusterLevelCount: 0
rootPageSize: 0
streamingPageSize: 0
posBits: 0
normalBits: 0
tangentBits: 0
colorBits: 0
vertsSize: 0
vertsCount: 0
uvBits: []
streamableClusterPageSize: 0
_typelessdata:
m_IndexFormat: 0
m_IndexBuffer: 00000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013001400
m_VertexData:
serializedVersion: 3
m_VertexCount: 21
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 12
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 504
_typelessdata: 00000000000000400000f8c1000000000000803f00000000000070c10000004000000000000000000000803f00000000000000000000004000000000000000000000803f0000000000000000000000000000f8c1d67066bf00000000d801dfbe000070c10000000000000000d67066bf00000000d801dfbe000070c10000004000000000d67066bf00000000d801dfbe00000000000000000000f8c1d67066bf00000000d801dfbe000070c10000004000000000d67066bf00000000d801dfbe00000000000000400000f8c1d67066bf00000000d801dfbe000070c1000000000000000000000000000000000000803f00000000000000000000000000000000000000000000803f00000000000000400000000000000000000000000000803f000070c1000000000000000000000000000000000000803f00000000000000400000000000000000000000000000803f000070c1000000400000000000000000000000000000803f0000000000000000000000000000803f000000000000000000000000000000000000f8c10000803f000000000000000000000000000000400000f8c10000803f00000000000000000000000000000000000000000000803f000000000000000000000000000000400000f8c10000803f00000000000000000000000000000040000000000000803f0000000000000000
m_CompressedMesh:
m_Vertices:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_UV:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Normals:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Tangents:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Weights:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_NormalSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_TangentSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_FloatColors:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_BoneIndices:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_Triangles:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_UVInfo: 0
m_LocalAABB:
m_Center: {x: -7.5, y: 1, z: -15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_MeshUsageFlags: 0
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
m_MeshMetrics[0]: 1
m_MeshMetrics[1]: 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
m_GenerateGeometryBuffer: 0
m_HasVirtualGeometryMesh: 0
@@ -1,203 +0,0 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!43 &4300000
Mesh:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: "\u969C\u788D\u7269_\u5DE6\u4E0B"
serializedVersion: 13
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 21
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 21
localAABB:
m_Center: {x: -7.5, y: 1, z: 15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_Shapes:
vertices: []
shapes: []
channels: []
fullWeights: []
m_BindPose: []
m_BoneNameHashes:
m_RootBoneNameHash: 0
m_BonesAABB: []
m_VariableBoneCountWeights:
m_Data:
m_MeshCompression: 0
m_IsReadable: 1
m_KeepVertices: 1
m_KeepIndices: 1
m_GIFacetMesh:
serializedVersion: 1
m_aabb:
m_Min: {x: Infinity, y: Infinity, z: Infinity}
m_Max: {x: -Infinity, y: -Infinity, z: -Infinity}
m_doubleSide: 0
m_GIFacetInfo: []
m_GISDFMesh:
serializedVersion: 1
localAABB:
m_Center: {x: NaN, y: NaN, z: NaN}
m_Extent: {x: NaN, y: NaN, z: NaN}
sdfGenBias: 0.25
is2Sided: 0
LODs: []
m_SharedClusterData:
m_LightmapUseUV1: 0
rootClusterPage:
hierarchyNodes: []
pageStreamingInfos: []
pageIndicesOfDependencies:
clusterCount: 0
clusterLevelCount: 0
rootPageSize: 0
streamingPageSize: 0
posBits: 0
normalBits: 0
tangentBits: 0
colorBits: 0
vertsSize: 0
vertsCount: 0
uvBits: []
streamableClusterPageSize: 0
_typelessdata:
m_IndexFormat: 0
m_IndexBuffer: 00000200010003000400050006000700080009000a000b000c000d000e000f0010001100120013001400
m_VertexData:
serializedVersion: 3
m_VertexCount: 21
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 12
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 504
_typelessdata: 00000000000000400000f84100000000000080bf0000000000000000000000400000000000000000000080bf00000000000070c1000000400000000000000000000080bf00000000000070c10000000000000000d67066bf00000000d801df3e00000000000000000000f841d67066bf00000000d801df3e00000000000000400000f841d67066bf00000000d801df3e000070c10000000000000000d67066bf00000000d801df3e00000000000000400000f841d67066bf00000000d801df3e000070c10000004000000000d67066bf00000000d801df3e0000000000000000000000000000000000000000000080bf000070c100000000000000000000000000000000000080bf000070c100000040000000000000000000000000000080bf0000000000000000000000000000000000000000000080bf000070c100000040000000000000000000000000000080bf0000000000000040000000000000000000000000000080bf00000000000000000000f8410000803f00000000000000000000000000000000000000000000803f00000000000000000000000000000040000000000000803f000000000000000000000000000000000000f8410000803f00000000000000000000000000000040000000000000803f000000000000000000000000000000400000f8410000803f0000000000000000
m_CompressedMesh:
m_Vertices:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_UV:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Normals:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Tangents:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_Weights:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_NormalSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_TangentSigns:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_FloatColors:
m_NumItems: 0
m_Range: 0
m_Start: 0
m_Data:
m_BitSize: 0
m_BoneIndices:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_Triangles:
m_NumItems: 0
m_Data:
m_BitSize: 0
m_UVInfo: 0
m_LocalAABB:
m_Center: {x: -7.5, y: 1, z: 15.5}
m_Extent: {x: 7.5, y: 1, z: 15.5}
m_MeshUsageFlags: 0
m_CookingOptions: 30
m_BakedConvexCollisionMesh:
m_BakedTriangleCollisionMesh:
m_MeshMetrics[0]: 1
m_MeshMetrics[1]: 1
m_MeshOptimizationFlags: 1
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
m_GenerateGeometryBuffer: 0
m_HasVirtualGeometryMesh: 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

+177
View File
@@ -0,0 +1,177 @@
fileFormatVersion: 2
guid: WXJJsij5BXNxq3IJD2Yv2QiykOgdMgQpLGBHJdCAqY0uXxtEFt9/gkI=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 14
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
webStreaming: 0
priorityLevel: 0
uploadedMode: 2
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 256
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WeixinMiniGame
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: PlayableAds
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
doOverrideTextureManagerOperations: 0
platformOperationGroupSettings:
userData:
assetBundleName:
assetBundleVariant:
@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: WXsc43n5USgpoiedIMzmiGGV0P3Ywm5u4rO+LXK5bZcwRQLi7GzNyxE= guid: WiwXvSqtAn6v3BXExh4gUc/YsjrruYriW1w11v7BaX0ZzEddvA12aAs=
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
@@ -0,0 +1,219 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!1 &5084263221972581271
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 591778551182716842}
- component: {fileID: 5277184795582486447}
- component: {fileID: 1846446477806519407}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: GlowHalo
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &591778551182716842
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5084263221972581271}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.28, y: 1.28, z: 1.28}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5195625955677297772}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &5277184795582486447
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5084263221972581271}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1846446477806519407
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5084263221972581271}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_virtualGeometry: 0
m_ShadingRate: 0
m_ForceDisableGRD: 0
m_ForceDisableSmallMeshCull: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a3643abdbfab3df4b849b77bda727473, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
m_MaskInteraction: 0
--- !u!1 &7954659519107050452
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 5195625955677297772}
- component: {fileID: 4241101283619714849}
- component: {fileID: 3895332886838163598}
- component: {fileID: 2918738093036042458}
- component: {fileID: 1519279634912345123}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: AdjustableGlowOrb
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5195625955677297772
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7954659519107050452}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 2.5, z: 35}
m_LocalScale: {x: 1.2, y: 1.2, z: 1.2}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 591778551182716842}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &4241101283619714849
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7954659519107050452}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!135 &3895332886838163598
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7954659519107050452}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &2918738093036042458
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7954659519107050452}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_virtualGeometry: 0
m_ShadingRate: 0
m_ForceDisableGRD: 0
m_ForceDisableSmallMeshCull: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 9de56c4349c01894ab37fe755e89e54c, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
m_MaskInteraction: 0
--- !u!114 &1519279634912345123
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7954659519107050452}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dd9460394b637f94ab4775da147551ea, type: 3}
m_Name:
m_EditorClassIdentifier:
glowColor: {r: 0.1, g: 0.65, b: 1, a: 1}
emissionIntensity: 2.5
targetRenderer: {fileID: 2918738093036042458}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: DXMd53n8UH12/Sja16q6bMoL61tPgvmlhYrfo9iz2P3EOCyd2RWa/b4=
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,112 @@
%YAML 1.1
%TAG !u! tag:yousandi.cn,2023:
--- !u!1 &7695422555121058081
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 7
m_Component:
- component: {fileID: 841940163659810604}
- component: {fileID: 1044810881686928657}
- component: {fileID: 7409666441157930255}
- component: {fileID: 3465692038098779756}
m_Layer: 0
m_HasEditorInfo: 1
m_Name: PortalEnergyMembrane
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &841940163659810604
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7695422555121058081}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.024, y: 0.032, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1044810881686928657
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7695422555121058081}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7409666441157930255
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7695422555121058081}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_virtualGeometry: 0
m_ShadingRate: 0
m_ForceDisableGRD: 0
m_ForceDisableSmallMeshCull: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: e522c8c53ac79a04e9cfc9b518279d70, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
m_MaskInteraction: 0
--- !u!114 &3465692038098779756
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7695422555121058081}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 83b9421c38a2f0c459b8359da71e18c3, type: 3}
m_Name:
m_EditorClassIdentifier:
teamColor: 0
neutralColor: {r: 1, g: 1, b: 1, a: 1}
blueColor: {r: 0.1, g: 0.65, b: 1, a: 1}
redColor: {r: 1, g: 0.12, b: 0.08, a: 1}
emissionIntensity: 2.2
pulseSpeed: 1.6
pulseAmount: 0.06
scrollSpeed: {x: 0, y: -0.08}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: WS5Msyz5UXNvPP4dWx8tjlSxWD8jlGtk6sKtnKjZcc1bM9JnsC5gB24=
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
Binary file not shown.
+197
View File
@@ -0,0 +1,197 @@
using UnityEngine;
using UnityEngine.UI;
public class CrystalMineCapture : MonoBehaviour
{
[Header("争夺进度")]
[Range(0f, 100f)] public float blueProgress = 50f;
[Min(0f)] public float capturePerDamage = 1f;
[Header("水晶矿光球")]
[SerializeField] private AdjustableGlowOrb glowOrb;
[SerializeField] private Color neutralColor = Color.white;
[SerializeField] private Color blueColor = new Color(0.1f, 0.65f, 1f, 1f);
[SerializeField] private Color redColor = new Color(1f, 0.12f, 0.08f, 1f);
[Header("世界血条")]
[Min(0f)] public float heightOffset = 1.1f;
[Min(0.1f)] public float barWidth = 1.8f;
private Canvas canvas;
private RectTransform barRect;
private Image blueFill;
private Image redFill;
private RectTransform marker;
private UnitTeam unitTeam;
private static Sprite roundedSprite;
private static readonly int BaseColorId = Shader.PropertyToID("_Color");
private void Awake()
{
unitTeam = GetComponent<UnitTeam>();
if (unitTeam == null)
{
unitTeam = gameObject.AddComponent<UnitTeam>();
}
unitTeam.teamId = 2;
if (glowOrb == null)
{
glowOrb = GetComponentInChildren<AdjustableGlowOrb>(true);
}
CreateCaptureBar();
RefreshVisuals();
}
private void Start()
{
RefreshVisuals();
}
private void LateUpdate()
{
if (barRect == null) return;
barRect.position = transform.position + Vector3.up * heightOffset;
Vector3 parentScale = transform.lossyScale;
float targetScale = barWidth / 100f;
barRect.localScale = new Vector3(
parentScale.x != 0f ? targetScale / parentScale.x : targetScale,
parentScale.y != 0f ? targetScale / parentScale.y : targetScale,
parentScale.z != 0f ? targetScale / parentScale.z : targetScale);
Camera camera = Camera.main;
if (camera != null)
{
barRect.rotation = Quaternion.LookRotation(camera.transform.position - barRect.position, camera.transform.up);
}
}
public bool ReceiveCaptureDamage(float damage, GameObject attacker)
{
if (damage <= 0f || attacker == null) return false;
UnitTeam attackerTeam = attacker.GetComponentInParent<UnitTeam>();
if (attackerTeam == null) return false;
float direction = attackerTeam.teamId == 0 ? 1f : -1f;
blueProgress = Mathf.Clamp(blueProgress + direction * damage * capturePerDamage, 0f, 100f);
RefreshVisuals();
return true;
}
public void SetCaptureProgress(float value)
{
blueProgress = Mathf.Clamp(value, 0f, 100f);
RefreshVisuals();
}
private void RefreshVisuals()
{
if (blueFill == null || redFill == null) return;
float blue = blueProgress / 100f;
blueFill.fillAmount = blue;
redFill.fillAmount = 1f - blue;
marker.anchorMin = new Vector2(blue, 0f);
marker.anchorMax = new Vector2(blue, 1f);
marker.anchoredPosition = Vector2.zero;
marker.gameObject.SetActive(blueProgress > 0f && blueProgress < 100f);
if (unitTeam != null)
{
unitTeam.teamId = blueProgress >= 100f ? 0 : blueProgress <= 0f ? 1 : 2;
}
if (glowOrb != null)
{
Color color = blueProgress >= 100f ? blueColor : blueProgress <= 0f ? redColor : neutralColor;
glowOrb.SetGlowColor(color);
}
}
private void CreateCaptureBar()
{
GameObject root = new GameObject("CrystalCaptureBar", typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler));
root.transform.SetParent(transform, false);
canvas = root.GetComponent<Canvas>();
canvas.renderMode = RenderMode.WorldSpace;
canvas.sortingOrder = 110;
root.GetComponent<CanvasScaler>().dynamicPixelsPerUnit = 10f;
barRect = root.GetComponent<RectTransform>();
barRect.sizeDelta = new Vector2(100f, 16f);
barRect.localScale = Vector3.one * (barWidth / 100f);
RectTransform row = CreateRow(root.transform, "CaptureBar", 100f, 14f);
Image background = CreateImage(row, "Background", new Color(0.03f, 0.03f, 0.03f, 0.95f));
SetFullRect(background.rectTransform);
blueFill = CreateImage(row, "BlueFill", blueColor);
blueFill.type = Image.Type.Filled;
blueFill.fillMethod = Image.FillMethod.Horizontal;
blueFill.fillOrigin = 0;
blueFill.rectTransform.anchorMin = new Vector2(0f, 0f);
blueFill.rectTransform.anchorMax = new Vector2(1f, 1f);
blueFill.rectTransform.offsetMin = new Vector2(2f, 2f);
blueFill.rectTransform.offsetMax = new Vector2(-2f, -2f);
redFill = CreateImage(row, "RedFill", redColor);
redFill.type = Image.Type.Filled;
redFill.fillMethod = Image.FillMethod.Horizontal;
redFill.fillOrigin = 1;
redFill.rectTransform.anchorMin = new Vector2(0f, 0f);
redFill.rectTransform.anchorMax = new Vector2(1f, 1f);
redFill.rectTransform.offsetMin = new Vector2(2f, 2f);
redFill.rectTransform.offsetMax = new Vector2(-2f, -2f);
GameObject markerObject = new GameObject("CenterMarker", typeof(RectTransform), typeof(Image));
markerObject.transform.SetParent(row, false);
marker = markerObject.GetComponent<RectTransform>();
marker.sizeDelta = new Vector2(2f, 14f);
marker.anchorMin = new Vector2(0.5f, 0f);
marker.anchorMax = new Vector2(0.5f, 1f);
marker.GetComponent<Image>().color = Color.white;
}
private RectTransform CreateRow(Transform parent, string name, float width, float height)
{
GameObject rowObject = new GameObject(name, typeof(RectTransform));
rowObject.transform.SetParent(parent, false);
RectTransform rect = rowObject.GetComponent<RectTransform>();
rect.anchorMin = new Vector2(0.5f, 0.5f);
rect.anchorMax = new Vector2(0.5f, 0.5f);
rect.pivot = new Vector2(0.5f, 0.5f);
rect.sizeDelta = new Vector2(width, height);
return rect;
}
private Image CreateImage(Transform parent, string name, Color color)
{
GameObject imageObject = new GameObject(name, typeof(RectTransform), typeof(Image));
imageObject.transform.SetParent(parent, false);
Image image = imageObject.GetComponent<Image>();
image.sprite = RoundedSprite();
image.color = color;
return image;
}
private void SetFullRect(RectTransform rect)
{
rect.anchorMin = Vector2.zero;
rect.anchorMax = Vector2.one;
rect.offsetMin = Vector2.zero;
rect.offsetMax = Vector2.zero;
}
private static Sprite RoundedSprite()
{
if (roundedSprite != null) return roundedSprite;
Texture2D texture = new Texture2D(1, 1, TextureFormat.RGBA32, false);
texture.SetPixel(0, 0, Color.white);
texture.Apply();
roundedSprite = Sprite.Create(texture, new Rect(0f, 0f, 1f, 1f), new Vector2(0.5f, 0.5f));
roundedSprite.name = "CrystalCaptureBarSprite";
return roundedSprite;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: DnlL4SKoBS46ofpRnEoWK5s8DFl+8ZK4OiqdlfF2jZrFJIMONOuNlvA=
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+6 -1
View File
@@ -115,10 +115,11 @@ public class Projectile : MonoBehaviour
} }
UnitBase targetUnit = hitObject.GetComponentInParent<UnitBase>(); UnitBase targetUnit = hitObject.GetComponentInParent<UnitBase>();
CrystalMineCapture crystalMine = hitObject.GetComponentInParent<CrystalMineCapture>();
BuildingHealth targetBuilding = hitObject.GetComponentInParent<BuildingHealth>(); BuildingHealth targetBuilding = hitObject.GetComponentInParent<BuildingHealth>();
WorldHealthBar targetHealthBar = hitObject.GetComponentInParent<WorldHealthBar>(); WorldHealthBar targetHealthBar = hitObject.GetComponentInParent<WorldHealthBar>();
if (targetUnit == null && targetBuilding == null && targetHealthBar == null) if (targetUnit == null && crystalMine == null && targetBuilding == null && targetHealthBar == null)
{ {
return; return;
} }
@@ -129,6 +130,10 @@ public class Projectile : MonoBehaviour
{ {
targetUnit.ReceiveDamage(damage, owner); targetUnit.ReceiveDamage(damage, owner);
} }
else if (crystalMine != null)
{
crystalMine.ReceiveCaptureDamage(damage, owner);
}
else if (targetBuilding != null) else if (targetBuilding != null)
{ {
targetBuilding.ReceiveDamage(damage, owner); targetBuilding.ReceiveDamage(damage, owner);
+13
View File
@@ -649,6 +649,13 @@ public class UnitBase : MonoBehaviour
return; return;
} }
CrystalMineCapture targetCrystalMine = opponent.GetComponentInParent<CrystalMineCapture>();
if (targetCrystalMine != null && targetCrystalMine.ReceiveCaptureDamage(attackPower, gameObject))
{
RegisterAttackHit();
return;
}
BuildingHealth targetBuilding = opponent.GetComponentInParent<BuildingHealth>(); BuildingHealth targetBuilding = opponent.GetComponentInParent<BuildingHealth>();
if (targetBuilding != null && targetBuilding.ReceiveDamage(attackPower, gameObject)) if (targetBuilding != null && targetBuilding.ReceiveDamage(attackPower, gameObject))
{ {
@@ -676,6 +683,12 @@ public class UnitBase : MonoBehaviour
UnitBase targetUnit = target.GetComponentInParent<UnitBase>(); UnitBase targetUnit = target.GetComponentInParent<UnitBase>();
bool hit = targetUnit != null && targetUnit.ReceiveDamage(damage, gameObject); bool hit = targetUnit != null && targetUnit.ReceiveDamage(damage, gameObject);
if (!hit)
{
CrystalMineCapture targetCrystalMine = target.GetComponentInParent<CrystalMineCapture>();
hit = targetCrystalMine != null && targetCrystalMine.ReceiveCaptureDamage(damage, gameObject);
}
if (!hit) if (!hit)
{ {
BuildingHealth targetBuilding = target.GetComponentInParent<BuildingHealth>(); BuildingHealth targetBuilding = target.GetComponentInParent<BuildingHealth>();
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: CSwc4C+uAHLQOsPxMiLxPlWuoNCdjvuwmiriXdsbmnzALD/F3ULi4oo=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: CygW5yr+Wil0YVrsnTde7g4OAv0+ySsvpKJ8nCRqwxR5A+Z+Ncqsgxo=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,51 @@
using UnityEngine;
[ExecuteAlways]
public class AdjustableGlowOrb : MonoBehaviour
{
[SerializeField] private Color glowColor = new Color(0.1f, 0.65f, 1f, 1f);
[SerializeField, Min(0f)] private float emissionIntensity = 2.5f;
[SerializeField] private Renderer targetRenderer;
private MaterialPropertyBlock propertyBlock;
private void OnEnable()
{
ApplyVisuals();
}
private void OnValidate()
{
ApplyVisuals();
}
public void SetGlowColor(Color color)
{
glowColor = color;
ApplyVisuals();
}
public Color GetGlowColor() => glowColor;
private void ApplyVisuals()
{
if (targetRenderer == null)
{
targetRenderer = GetComponent<Renderer>();
}
if (targetRenderer == null)
{
return;
}
propertyBlock ??= new MaterialPropertyBlock();
targetRenderer.GetPropertyBlock(propertyBlock);
Color emission = glowColor * emissionIntensity;
propertyBlock.SetColor("_BaseColor", glowColor);
propertyBlock.SetColor("_Color", glowColor);
propertyBlock.SetColor("_EmissionColor", emission);
targetRenderer.SetPropertyBlock(propertyBlock);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: Wy4WsSytUHKt4Lt/6y0foOFNb9+jGCSNOHfb7zNRXDP2CnmXS/mkpNM=
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,74 @@
using UnityEngine;
[ExecuteAlways]
public class PortalEnergyVisual : MonoBehaviour
{
public enum PortalTeamColor
{
Neutral,
Blue,
Red
}
[SerializeField] private PortalTeamColor teamColor = PortalTeamColor.Neutral;
[SerializeField] private Color neutralColor = Color.white;
[SerializeField] private Color blueColor = new Color(0.1f, 0.65f, 1f, 1f);
[SerializeField] private Color redColor = new Color(1f, 0.12f, 0.08f, 1f);
[SerializeField, Min(0f)] private float emissionIntensity = 2.2f;
[SerializeField, Min(0f)] private float pulseSpeed = 1.6f;
[SerializeField, Range(0f, 0.2f)] private float pulseAmount = 0.06f;
[SerializeField] private Vector2 scrollSpeed = new Vector2(0f, -0.08f);
private Renderer targetRenderer;
private MaterialPropertyBlock propertyBlock;
private static readonly int BaseColorId = Shader.PropertyToID("_Color");
private static readonly int TintColorId = Shader.PropertyToID("_TintColor");
private static readonly int EmissionColorId = Shader.PropertyToID("_EmissionColor");
private static readonly int MainTexStId = Shader.PropertyToID("_MainTex_ST");
private void OnEnable()
{
targetRenderer = GetComponent<Renderer>();
propertyBlock ??= new MaterialPropertyBlock();
ApplyVisuals(0f);
}
private void Update()
{
ApplyVisuals(Application.isPlaying ? Time.time : Time.realtimeSinceStartup);
}
private void OnValidate()
{
targetRenderer = GetComponent<Renderer>();
propertyBlock ??= new MaterialPropertyBlock();
ApplyVisuals(0f);
}
public void SetTeamColor(PortalTeamColor color)
{
teamColor = color;
ApplyVisuals(0f);
}
public PortalTeamColor GetTeamColor() => teamColor;
private void ApplyVisuals(float time)
{
if (targetRenderer == null)
{
return;
}
Color color = teamColor == PortalTeamColor.Blue ? blueColor : teamColor == PortalTeamColor.Red ? redColor : neutralColor;
float pulse = 1f + Mathf.Sin(time * pulseSpeed) * pulseAmount;
Color emission = color * (emissionIntensity * pulse);
targetRenderer.GetPropertyBlock(propertyBlock);
propertyBlock.SetColor(BaseColorId, color);
propertyBlock.SetColor(TintColorId, color);
propertyBlock.SetColor(EmissionColorId, emission);
propertyBlock.SetVector(MainTexStId, new Vector4(1f, 1f, scrollSpeed.x * time, scrollSpeed.y * time));
targetRenderer.SetPropertyBlock(propertyBlock);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: B3lNvC6vUihFXZRWfse+0pjfpFXfEHzGHbWso3vUnZsU4niV4zg0eu8=
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: CX0e5Hz+VX349tdrHjIwg/mbi1GpnFG//Bzss01osLAYsXuguTjM0Ok=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: CXsXtX7/VXg9MA575A6oQ2DrFfIHIq1flJJceJX8OBc5HhU4286uLlI=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 758 KiB

@@ -0,0 +1,177 @@
fileFormatVersion: 2
guid: DnkctS+lVygS1An+nLcXy0RIVShzmzfmpd1BcOjFWcvN4jemvKtWvAA=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 14
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
webStreaming: 0
priorityLevel: 0
uploadedMode: 2
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WeixinMiniGame
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: PlayableAds
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
doOverrideTextureManagerOperations: 0
platformOperationGroupSettings:
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

@@ -0,0 +1,177 @@
fileFormatVersion: 2
guid: Xn4Z4SOrUSqaVrsoSoswnXKNQIzLCnBAASCZ61MPnB7VxC71QmJEE4I=
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 14
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
webStreaming: 0
priorityLevel: 0
uploadedMode: 2
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WeixinMiniGame
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: PlayableAds
maxTextureSize: 2048
maxPlaceholderSize: 32
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
doOverrideTextureManagerOperations: 0
platformOperationGroupSettings:
userData:
assetBundleName:
assetBundleVariant:
+4 -1
View File
@@ -24,6 +24,7 @@
- [2026-09-16 22:18:14] 召唤系统:找不到合适位置时直接在召唤师前方强制生成,不显示警告,不退还能量。**Why:** 用户要求召唤必须成功,不被取消。**How to apply:** MainCharacterCombat.cs 的召唤逻辑 - [2026-09-16 22:18:14] 召唤系统:找不到合适位置时直接在召唤师前方强制生成,不显示警告,不退还能量。**Why:** 用户要求召唤必须成功,不被取消。**How to apply:** MainCharacterCombat.cs 的召唤逻辑
- [2026-09-16 22:18:30] 召唤打断移动:主角点击召唤时必须立即停止移动,调用 SummonerClickMovement.ClearTarget() 来实现。**Why:** 用户要求召唤时即使在移动也要立刻停下。**How to apply:** BeginSummon 开始时停止移动 - [2026-09-16 22:18:30] 召唤打断移动:主角点击召唤时必须立即停止移动,调用 SummonerClickMovement.ClearTarget() 来实现。**Why:** 用户要求召唤时即使在移动也要立刻停下。**How to apply:** BeginSummon 开始时停止移动
- [2026-09-17 10:06:34] 召唤师移动后连续召唤动画超时问题:SummonerClickMovement.HandleMovement() 每帧设置 animator.SetInteger("speed", 1) 干扰召唤动画。**Why:** 即使召唤时调用了 ClearTarget(),下一帧 Update 还是会覆盖动画参数。**How to apply:** 召唤期间禁用移动脚本 (clickMovement.enabled = false),召唤完成后重新启用 (enabled = true)。已在 MainCharacterCombat.Summon() 和 FinishSummon() 中实现。 - [2026-09-17 10:06:34] 召唤师移动后连续召唤动画超时问题:SummonerClickMovement.HandleMovement() 每帧设置 animator.SetInteger("speed", 1) 干扰召唤动画。**Why:** 即使召唤时调用了 ClearTarget(),下一帧 Update 还是会覆盖动画参数。**How to apply:** 召唤期间禁用移动脚本 (clickMovement.enabled = false),召唤完成后重新启用 (enabled = true)。已在 MainCharacterCombat.Summon() 和 FinishSummon() 中实现。
- [2026-09-18 17:16:47] 小游戏阶段优先使用低成本的材质发光方案(Emission 球体 + 一层透明 Additive 光晕),不使用实时灯光、粒子系统和全屏 Bloom。**Why:** 用户关注小程序性能,且项目为内置渲染管线;Bloom 会影响整屏性能。**How to apply:** 后续制作阵营识别光球、传送门能量等发光效果时默认走材质光晕路线,仅在高端设备上考虑 Bloom。
### Project ### Project
- [2026-08-28 14:26:56] 弓箭手远程箭矢的设计要求:保持发射时高度水平飞行,命中目标后直接结算伤害并销毁,不产生实体物理击退。**Why:** 当前玩法希望远程攻击是命中判定而非物理推动。**How to apply:** 后续调整箭矢、Projectile 或弓箭手攻击逻辑时保持这一行为。 - [2026-08-28 14:26:56] 弓箭手远程箭矢的设计要求:保持发射时高度水平飞行,命中目标后直接结算伤害并销毁,不产生实体物理击退。**Why:** 当前玩法希望远程攻击是命中判定而非物理推动。**How to apply:** 后续调整箭矢、Projectile 或弓箭手攻击逻辑时保持这一行为。
@@ -64,7 +65,9 @@
- [2026-09-17 10:06:48] Projectile 伤害判定逻辑:HitTarget() 检查 UnitBase(普通单位)、BuildingHealth(建筑)、WorldHealthBar(召唤师等特殊单位)三种受击组件。召唤师使用 MainCharacterCombat + WorldHealthBar,不挂 UnitBase。**Why:** 召唤师是玩家控制的特殊单位,行为逻辑与普通 AI 单位不同。**How to apply:** 新增特殊单位必须有 WorldHealthBar 或 UnitBase 之一才能被攻击;法术球击中后调用对应组件的受伤方法(UnitBase.ReceiveDamage / WorldHealthBar.TakeDamage)。 - [2026-09-17 10:06:48] Projectile 伤害判定逻辑:HitTarget() 检查 UnitBase(普通单位)、BuildingHealth(建筑)、WorldHealthBar(召唤师等特殊单位)三种受击组件。召唤师使用 MainCharacterCombat + WorldHealthBar,不挂 UnitBase。**Why:** 召唤师是玩家控制的特殊单位,行为逻辑与普通 AI 单位不同。**How to apply:** 新增特殊单位必须有 WorldHealthBar 或 UnitBase 之一才能被攻击;法术球击中后调用对应组件的受伤方法(UnitBase.ReceiveDamage / WorldHealthBar.TakeDamage)。
- [2026-09-17 10:38:49] 召唤师(MainCharacterCombat)与普通单位(UnitBase)的架构差异:召唤师使用 MainCharacterCombat + WorldHealthBar + StatusEffectController,不挂 UnitBase。**Why:** 召唤师是玩家控制的特殊单位,行为逻辑与 AI 单位不同。**How to apply:** 涉及单位的通用系统(伤害、眩晕、范围效果)必须同时支持 UnitBase 和非 UnitBase 路径。已修复:Projectile.HitTarget()、UnitBase.ApplyDirectDamage()、UnitBase.ApplyAreaStun() 均添加了 WorldHealthBar / StatusEffectController 的检测分支。 - [2026-09-17 10:38:49] 召唤师(MainCharacterCombat)与普通单位(UnitBase)的架构差异:召唤师使用 MainCharacterCombat + WorldHealthBar + StatusEffectController,不挂 UnitBase。**Why:** 召唤师是玩家控制的特殊单位,行为逻辑与 AI 单位不同。**How to apply:** 涉及单位的通用系统(伤害、眩晕、范围效果)必须同时支持 UnitBase 和非 UnitBase 路径。已修复:Projectile.HitTarget()、UnitBase.ApplyDirectDamage()、UnitBase.ApplyAreaStun() 均添加了 WorldHealthBar / StatusEffectController 的检测分支。
- [2026-09-17 16:52:28] 已于2026-09-17新建分支转向拆家版玩法(以《召唤之战 - 核心玩法拆家版.md》V1.1为准),旧《召唤之战-核心玩法.md》召唤师对决文档作废。拆家版无主角:只做“选目标+点卡出兵”,单位从己方城堡出生并永久绑定目标。Why: 原地图太小导致打据点的兵被中路兵吸引成大混战。场景现状(按参考图十字布局定稿):CoreBattleTest平台40x70(Z 0~70),我方城堡Z=8/敌方城堡Z=62,纵向通道宽10(X±5)、横向通道高8(Z 31~39),四角用4块障碍物Cube封锁(14x2x31,材质ObstacleBlock.mat,后续可换岩石/树林模型),中央圆柱已删;水晶矿(-14,1,35)/随机出兵点(14,1,35)为金矿模型占位(scale2),相机正交(55°, size36, pos(0,70,-14)),NavMesh已重烘;主角/GoldManager/GoldUI/BuildingPlacementManager已删。后续按拆家版开发:目标按钮UI→出生目标绑定→红蓝进度条据点系统。 - [2026-09-17 16:52:28] 已于2026-09-17新建分支转向拆家版玩法(以《召唤之战 - 核心玩法拆家版.md》V1.1为准),旧《召唤之战-核心玩法.md》召唤师对决文档作废。拆家版无主角:只做“选目标+点卡出兵”,单位从己方城堡出生并永久绑定目标。Why: 原地图太小导致打据点的兵被中路兵吸引成大混战。场景现状(按参考图十字布局定稿):CoreBattleTest平台40x70(Z 0~70),我方城堡Z=8/敌方城堡Z=62,纵向通道宽10(X±5)、横向通道高8(Z 31~39),四角用4块障碍物Cube封锁(14x2x31,材质ObstacleBlock.mat,后续可换岩石/树林模型),中央圆柱已删;水晶矿(-14,1,35)/随机出兵点(14,1,35)为金矿模型占位(scale2),相机正交(55°, size36, pos(0,70,-14)),NavMesh已重烘;主角/GoldManager/GoldUI/BuildingPlacementManager已删。后续按拆家版开发:目标按钮UI→出生目标绑定→红蓝进度条据点系统。
- [2026-09-18 17:17:04] 拆家版地图路线为"四边菱形外环 + 中央十字路网":我方主基地、水晶矿、敌方主基地、随机出兵点四点构成菱形,中央交叉区向四个顶点各连一条快捷路。Why: 用户希望主基地到资源点有直达路线并体现分路玩法。**How to apply:** 后续地图贴图、障碍物摆放和寻路区域设计必须同时保留四条外环边线和四条中心连接线,不能退化成单一十字或平行多路。
- [2026-09-18 17:17:26] 主基地采用"一套共用模型 + 独立阵营视觉部件"方案:城堡主体、出兵门、炮台结构红蓝共用,仅中央核心、出兵门能量膜、炮台能量和徽记按 teamId 切换材质颜色。Why: 避免两套模型比例/挂点不一致并减少维护成本。**How to apply:** 后续制作或替换主基地资产时保持共用结构,阵营区分只走 TeamVisual 子节点材质。
- [2026-09-18 18:01:14] 水晶矿场景模型根节点使用100倍缩放,挂载世界空间UI时必须按transform.lossyScale反向补偿Canvas局部缩放,否则争夺血条会放大到覆盖屏幕。水晶矿初始50/50争夺状态的光球应在Start阶段再次强制设为白色,避免AdjustableGlowOrb默认蓝色覆盖初始化结果。
### Reference ### Reference
- [2026-09-09 12:23:17] 飞行物脚本 Projectile.cs 负责锁敌追踪、碰撞检测和伤害结算。箭矢预制体 ArrowProjectile_White.prefab 已配置 Projectile 组件和 CapsuleCollider(Is Trigger)。远程单位需在攻击动画松弦帧添加 OnAttackEffect Event,并在 UnitBase 中设置 attackType=RangedProjectile、projectilePrefab、projectileSpawnPoint。 - [2026-09-09 12:23:17] 飞行物脚本 Projectile.cs 负责锁敌追踪、碰撞检测和伤害结算。箭矢预制体 ArrowProjectile_White.prefab 已配置 Projectile 组件和 CapsuleCollider(Is Trigger)。远程单位需在攻击动画松弦帧添加 OnAttackEffect Event,并在 UnitBase 中设置 attackType=RangedProjectile、projectilePrefab、projectileSpawnPoint。
+54 -31
View File
@@ -13,43 +13,65 @@
## 二、战场地图设计 ## 二、战场地图设计
### 2.1 整体布局 ### 2.1 整体布局
采用**竖版9:16比例**,核心可通行区域为十字形,外围为不可通行障碍物(岩石/树林)。既限制战场范围避免混乱,又保留多路径进攻空间,杜绝单路排队式战斗。 采用**竖版9:16比例**,核心可通行区域为十字形,外围为不可通行障碍物(岩石/树林)。四个核心目标采用对角线布局,充分利用屏幕四角空间,同时保留中央交战区和多路径进攻空间。
┌──────────────────────────────┐
│ 障碍物(不可通行) │
│ ┌────────────────────────┐ │
│ │ 【敌方城堡】 │ │
│ │ 【敌方防御塔】 │ │
│ │ │ │
│ │ ●─────────● │ │
│ │ 水晶矿 出兵点 │ │
│ │ (横向通道两端) │ │
│ │ │ │
│ │ 【我方防御塔】 │ │
│ │ 【我方城堡】 │ │
│ └────────────────────────┘ │
│ 障碍物(不可通行) │
└──────────────────────────────┘
```text
┌─────────────────────────────────────┐
│ │
│ 【左上资源据点】 【敌方城堡】 │
│ ● ■ │
│ \ / │
│ \ / │
│ \ / │
│ 【中央交战区】 │
│ / \ │
│ / \ │
│ / \ │
│ 【我方城堡】 【右下资源据点】 │
│ ■ ● │
│ │
└─────────────────────────────────────┘
```
- 我方城堡位于左下,敌方城堡位于右上;
- 右下资源据点是我方近点、敌方远点;
- 左上资源据点是敌方近点、我方远点;
- 两个资源据点均可被双方争夺,不属于任何一方的专属区域;
- 中央区域作为双方部队交战和拦截远点部队的主要区域;
- 资源据点不应贴近屏幕边缘,应与城堡和中央交战区保持可寻路距离。
建议先使用以下相对坐标进行场景布局,再根据NavMesh实际路径距离微调:
| 目标 | 建议坐标(X, Z) | 距离关系 |
|------|------------------|----------|
| 我方城堡 | (-7, 8) | 我方出生点 |
| 右下资源据点 | (7, 24) | 我方近点、敌方远点 |
| 左上资源据点 | (-7, 46) | 敌方近点、我方远点 |
| 敌方城堡 | (7, 62) | 敌方出生点 |
双方均可选择进攻任意资源据点。近点更容易快速占领和支援,远点需要承担更长的行军距离和被中央区域拦截的风险。
### 2.2 区域说明 ### 2.2 区域说明
| 区域 | 位置 | 规则 | | 区域 | 位置 | 规则 |
|------|------|------| |------|------|------|
| 己方阵地 | 屏幕下方 | 包含我方城堡、防御塔,为单位出生点 | | 己方阵地 | 左下方 | 包含我方城堡、防御塔,为单位出生点 |
| 敌方阵地 | 屏幕上方 | 包含敌方城堡、防御塔,为最终攻击目标 | | 敌方阵地 | 右上方 | 包含敌方城堡、防御塔,为最终攻击目标 |
| 十字主通道 | 战场中部 | 纵向连通双方阵地,横向连通水晶矿与出兵点;单位可在区域内自由移动 | | 中央交战区 | 战场中央 | 双方部队交战、拦截和转向的主要区域 |
| 水晶矿 | 横向通道一端 | 可攻击争夺目标,占领后持续提升法力回复速度 | | 左上资源据点 | 敌方城堡一侧 | 可攻击争夺,双方均可进攻;作为敌方近点、我方远点 |
| 随机出兵点 | 横向通道另一端 | 可攻击争夺目标,占领后定时随机产出单位 | | 右下资源据点 | 我方城堡一侧 | 可攻击争夺,双方均可进攻;作为我方近点、敌方远点 |
| 主通道 | 各目标之间 | 基于NavMesh自由寻路,不设置强制固定路线 |
### 2.3 寻路规则 ### 2.3 寻路规则
- 基于NavMesh实现自由寻路,仅十字区域为可通行烘焙区,障碍物完全阻挡; - 基于NavMesh实现自由寻路,仅十字形主通道和中央交战区为可通行烘焙区,外围障碍物完全阻挡;
- 单位自动计算最短路径前往目标,途中自动避让友军与地形; - 单位自动计算前往绑定目标的最短路径,途中自动避让友军与地形;
- 无强制固定路径,单位可在十字区域内任意移动,避免排队式战斗。 - 无强制固定路线,单位可在主通道和中央交战区内自由移动,远点部队可能在中央区域遭遇拦截。
## 三、资源系统 ## 三、资源系统
### 3.1 法力水晶 ### 3.1 法力水晶
- 战斗内唯一资源,用于召唤单位、释放技能; - 法力是玩家主动召唤单位、释放技能使用的基础资源;
- 基础自动回复,开局默认速度,上限10点; - 法力基础自动回复,开局默认速度,上限10点;
- 占领水晶矿可提升回复速度,具体回复加成数值以测试为准; - 主动出兵始终受到法力上限和回复速度限制,避免玩家无限堆叠单位;
- 水晶矿产出的水晶是地图据点收益,不直接修改城堡或法力的基础回复速度,具体转化方式以测试为准;
### 3.2 资源据点争夺规则 ### 3.2 资源据点争夺规则
- 水晶矿与随机出兵点均为可攻击目标,不设置生命值,使用**红蓝争夺进度条**(0~100); - 水晶矿与随机出兵点均为可攻击目标,不设置生命值,使用**红蓝争夺进度条**(0~100);
@@ -62,9 +84,10 @@
- 据点翻转后,按相同规则由新的占有方获得对应产出。 - 据点翻转后,按相同规则由新的占有方获得对应产出。
### 3.3 水晶矿产出 ### 3.3 水晶矿产出
- 水晶矿归属己方后,持续提升己方法力回复速度; - 水晶矿归属己方后,按固定间隔产出一个水晶;
- 水晶矿被对方完全翻转后,法力回复加成立即转移给对方; - 水晶产出归属当前占领方,不直接提升城堡或法力的基础回复速度;
- 单个水晶矿的回复加成与多个据点叠加规则,以战斗测试结果为准。 - 水晶矿被对方完全翻转后,后续水晶产出立即转移给新的占领方;
- 水晶的具体用途、是否自动计入资源以及储存上限,以战斗测试结果为准。
### 3.4 随机出兵点产出 ### 3.4 随机出兵点产出
- 随机出兵点归属己方后,按固定间隔在出兵点附近自动生成1个单位; - 随机出兵点归属己方后,按固定间隔在出兵点附近自动生成1个单位;
@@ -167,5 +190,5 @@
## 九、开发落地建议 ## 九、开发落地建议
1. **寻路复用**:直接复用现有NavMesh寻路逻辑,仅需烘焙十字形可行走区域; 1. **寻路复用**:直接复用现有NavMesh寻路逻辑,仅需烘焙十字形可行走区域;
2. **AI简化**:保留原有单位战斗状态机,仅新增「出生目标绑定」字段,无需新增驻守状态; 2. **AI简化**:保留原有单位战斗状态机,仅新增「出生目标绑定」字段,无需新增驻守状态;
3. **据点实现**:水晶矿与随机出兵点作为特殊可攻击目标,共用红蓝争夺进度数值;据点达到己方100%后开始产出,只有被对方完全推到0才翻转并转移产出;水晶矿提供法力回复加成,随机出兵点按费用权重从玩家出战卡组中自动生成单位; 3. **据点实现**:水晶矿与随机出兵点作为特殊可攻击目标,共用红蓝争夺进度数值;据点达到己方100%后开始产出,只有被对方完全推到0才翻转并转移产出;水晶矿按固定间隔产出水晶,随机出兵点按费用权重从玩家出战卡组中自动生成单位;
4. **UI优先**:先实现底部目标按钮+召唤面板的核心交互,再扩展技能、特效等内容。 4. **UI优先**:先实现底部目标按钮+召唤面板的核心交互,再扩展技能、特效等内容。