bian instance

main
Vinny 2025-11-06 21:34:42 +08:00
parent 7041ad47a3
commit c054a60cb4
9 changed files with 208 additions and 35 deletions

View File

@ -0,0 +1,93 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Gfx_obj_074_CC_Instance
m_Shader: {fileID: 4800000, guid: 37cbd3ea696507a49adcc6ac78a96e42, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: 1e6edb01d14d116408153df9ed97b514, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BaseMap2:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DissolveMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DistortionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 1e6edb01d14d116408153df9ed97b514, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaClip: 0
- _BaseColorScale: 1
- _BlendDst: 10
- _BlendProgress: 0.5
- _BlendSrc: 5
- _CullMode: 0
- _CycleInterval: 1
- _DissolveLength: 0.1
- _DissolveProgress: 0
- _DistortionMaxStrength: 0.1
- _DistortionMoveX: 1
- _DistortionMoveY: 1
- _DistortionStrength: 0
- _Duration: 1
- _FadeInTime: 0.5
- _FadeOutTime: 0.55
- _InvFade: 1
- _MaskMoveX: 1
- _MaskMoveY: 1
- _MaskStrength: 0.1
- _PolarScale: 0
- _StartTime: 0
- _TimeOffsetRange: 0
- _TimeScale: 1
- _Toggle1: 0
- _Toggle2: 0
- _Toggle3: 0
- _Toggle4: 0
- _Toggle5: 0
- _Toggle6: 0
- _UVMove2X: 0
- _UVMove2Y: 0
- _UVMoveX: 0
- _UVMoveY: 0
- _ZTestMode: 4
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 2, g: 2, b: 2, a: 1}
- _BaseColor2: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.6, g: 0.8039216, b: 0.9254902, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a7d7ac6c373cd8241863d0e3dec490d2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -15,7 +15,7 @@ Shader "FlashEffect"
SubShader
{
Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "Queue"="Opaque" }
Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "Queue"="Geometry" }
Pass
{

View File

@ -18,7 +18,7 @@ Shader "Flipbook"
SubShader
{
Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "Queue"="Opaque" }
Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "Queue"="Geometry" }
Pass
{

View File

@ -13,7 +13,7 @@ GameObject:
- component: {fileID: 7836820455966116632}
- component: {fileID: 8017106059653889432}
m_Layer: 0
m_Name: Quad
m_Name: Gun_glow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -50,7 +50,7 @@ MeshRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 259840295999112379}
m_Enabled: 1
m_CastShadows: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
@ -97,7 +97,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
autoSetOnEnable: 1
useMaterialInstance: 0
usePropertyBlock: 1
includeChildren: 0
--- !u!1 &475169996762385239
GameObject:

View File

@ -17,7 +17,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &6636192011913510588
Transform:
m_ObjectHideFlags: 0
@ -4920,6 +4920,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6636192011913510588}
- {fileID: 343780441075837655}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!198 &2866125410947838970
@ -9719,3 +9720,102 @@ ParticleSystemRenderer:
m_MeshWeighting2: 1
m_MeshWeighting3: 1
m_MaskInteraction: 0
--- !u!1 &6182495793321323306
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 343780441075837655}
- component: {fileID: 8063774226779057091}
- component: {fileID: 3361126846636397534}
- component: {fileID: 970371312842410621}
m_Layer: 0
m_Name: bian
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &343780441075837655
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6182495793321323306}
serializedVersion: 2
m_LocalRotation: {x: -0.18646735, y: -0.68207765, z: 0.68207765, w: -0.18646735}
m_LocalPosition: {x: 0.744, y: 0, z: -1.29}
m_LocalScale: {x: 1.7677249, y: 0.39, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4228499984140644560}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 210.58}
--- !u!33 &8063774226779057091
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6182495793321323306}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3361126846636397534
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6182495793321323306}
m_Enabled: 1
m_CastShadows: 0
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_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a7d7ac6c373cd8241863d0e3dec490d2, 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: 0
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}
--- !u!114 &970371312842410621
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6182495793321323306}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d9aca55876490b6449de8f38a029b7b1, type: 3}
m_Name:
m_EditorClassIdentifier:
autoSetOnEnable: 1
usePropertyBlock: 1
includeChildren: 0

View File

@ -1,14 +1,5 @@
using UnityEngine;
/// <summary>
/// Flipbook动画启动器
/// 用于非循环的Flipbook动画在对象激活时自动设置_StartTime使动画从当前时间开始播放
///
/// 使用说明:
/// 1. 推荐使用 MaterialPropertyBlock默认- 支持 GPU Instancing
/// 2. 如果需要手动控制每个实例的开始时间,使用此脚本
/// 3. 如果只需要循环播放不需要此脚本shader 会自动处理
/// </summary>
public class FlipbookAnimationStarter : MonoBehaviour
{
[Header("设置")]
@ -27,13 +18,11 @@ public class FlipbookAnimationStarter : MonoBehaviour
private void Awake()
{
// 初始化 MaterialPropertyBlock支持 GPU Instancing
if (usePropertyBlock)
{
_propertyBlock = new MaterialPropertyBlock();
}
// 获取所有Renderer
if (includeChildren)
{
_renderers = GetComponentsInChildren<Renderer>(true);
@ -53,17 +42,11 @@ public class FlipbookAnimationStarter : MonoBehaviour
}
}
/// <summary>
/// 手动设置动画开始时间
/// </summary>
public void SetStartTime()
{
SetStartTime(Time.time);
}
/// <summary>
/// 设置指定的开始时间
/// </summary>
public void SetStartTime(float startTime)
{
foreach (var renderer in _renderers)
@ -72,33 +55,22 @@ public class FlipbookAnimationStarter : MonoBehaviour
if (usePropertyBlock)
{
// 方式1: 使用MaterialPropertyBlock推荐
// 优点:支持 GPU Instancing不创建材质实例性能最优
renderer.GetPropertyBlock(_propertyBlock);
_propertyBlock.SetFloat(StartTimePropertyID, startTime);
renderer.SetPropertyBlock(_propertyBlock);
}
else
{
// 方式2: 使用Material实例会创建材质副本破坏批处理
// 注意renderer.material 会自动创建材质实例
// 仅在需要永久修改材质时使用
renderer.material.SetFloat(StartTimePropertyID, startTime);
}
}
}
/// <summary>
/// 重置动画到第一帧
/// </summary>
public void ResetAnimation()
{
SetStartTime(0f);
}
/// <summary>
/// 从当前时间重新播放动画
/// </summary>
public void RestartAnimation()
{
SetStartTime(Time.time);

@ -1 +1 @@
Subproject commit 06f547544e6c927abf39bc3ecdc5933f41c17f5d
Subproject commit c1018435b0850b1ab9201e567986a9758eb6dd8c