Merge branch 'feature/animator' into 'develop'

动画片段匹配工具

See merge request aibis-dream/aibis-dream!504
This commit is contained in:
2025-07-08 07:23:27 +00:00
17 changed files with 488 additions and 556 deletions
-528
View File
@@ -1,528 +0,0 @@
<linker>
<assembly fullname="AllIn1SpriteShaderAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="AllIn1SpriteShader.AllIn1Shader" preserve="all" />
</assembly>
<assembly fullname="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="AibisDream.ActiveScenePart" preserve="all" />
<type fullname="AibisDream.ActorAnima" preserve="all" />
<type fullname="AibisDream.ActorManager" preserve="all" />
<type fullname="AibisDream.ActorSlot" preserve="all" />
<type fullname="AibisDream.AnimaMobileObject" preserve="all" />
<type fullname="AibisDream.BatchSpawner" preserve="all" />
<type fullname="AibisDream.BoolButton" preserve="all" />
<type fullname="AibisDream.Bubble" preserve="all" />
<type fullname="AibisDream.BubbleGroup" preserve="all" />
<type fullname="AibisDream.BubbleOption" preserve="all" />
<type fullname="AibisDream.BubbleOptionSlot" preserve="all" />
<type fullname="AibisDream.BubbleSlot" preserve="all" />
<type fullname="AibisDream.BubbleSlotGroup" preserve="all" />
<type fullname="AibisDream.BubbleStyle" preserve="all" />
<type fullname="AibisDream.CenterOption" preserve="all" />
<type fullname="AibisDream.CenterText" preserve="all" />
<type fullname="AibisDream.ClinicSystem" preserve="all" />
<type fullname="AibisDream.ColorTintButton" preserve="all" />
<type fullname="AibisDream.CordPull" preserve="all" />
<type fullname="AibisDream.CursorManager" preserve="all" />
<type fullname="AibisDream.CutLine" preserve="all" />
<type fullname="AibisDream.CuttingManager" preserve="all" />
<type fullname="AibisDream.DeepInClock" preserve="all" />
<type fullname="AibisDream.DemoTimer" preserve="all" />
<type fullname="AibisDream.DialogBox" preserve="all" />
<type fullname="AibisDream.DialogCanvasManager" preserve="all" />
<type fullname="AibisDream.DialogController" preserve="all" />
<type fullname="AibisDream.EmoManager" preserve="all" />
<type fullname="AibisDream.EndPanel" preserve="all" />
<type fullname="AibisDream.EngineSystem" preserve="all" />
<type fullname="AibisDream.EnvironmentManager" preserve="all" />
<type fullname="AibisDream.ExpressionCable" preserve="all" />
<type fullname="AibisDream.ExpressionCableSystem" preserve="all" />
<type fullname="AibisDream.ExpressionManager" preserve="all" />
<type fullname="AibisDream.ExpressionPlug" preserve="all" />
<type fullname="AibisDream.ExpressionPowerSource" preserve="all" />
<type fullname="AibisDream.ExpressionSocket" preserve="all" />
<type fullname="AibisDream.ExpressionSubSystem" preserve="all" />
<type fullname="AibisDream.EyeSystem" preserve="all" />
<type fullname="AibisDream.FixSystem.BodyModule" preserve="all" />
<type fullname="AibisDream.FixSystem.BodyModuleSystem" preserve="all" />
<type fullname="AibisDream.FixSystem.Cable" preserve="all" />
<type fullname="AibisDream.FixSystem.CableReel" preserve="all" />
<type fullname="AibisDream.FixSystem.CableSystem" preserve="all" />
<type fullname="AibisDream.FixSystem.FixLightSystem" preserve="all" />
<type fullname="AibisDream.FixSystem.FixSystemCenter" preserve="all" />
<type fullname="AibisDream.FixSystem.Plug" preserve="all" />
<type fullname="AibisDream.FixSystem.ScreenSystem" preserve="all" />
<type fullname="AibisDream.Framework.EventTriggerEx" preserve="all" />
<type fullname="AibisDream.Framework.MonoCenter" preserve="all" />
<type fullname="AibisDream.Framework.SpriteGroupKit" preserve="all" />
<type fullname="AibisDream.Framework.TextBubble" preserve="all" />
<type fullname="AibisDream.Framework.UICamera" preserve="all" />
<type fullname="AibisDream.GameManager" preserve="all" />
<type fullname="AibisDream.Gear" preserve="all" />
<type fullname="AibisDream.GearSystem" preserve="all" />
<type fullname="AibisDream.Kit.ActionKitMonoBehaviourEvents" preserve="all" />
<type fullname="AibisDream.Kit.AudioManager" preserve="all" />
<type fullname="AibisDream.Kit.MonoUpdateActionExecutor" preserve="all" />
<type fullname="AibisDream.Kit.RepeatTrack" preserve="all" />
<type fullname="AibisDream.Kit.SpriteLooper" preserve="all" />
<type fullname="AibisDream.Kit.VerText" preserve="all" />
<type fullname="AibisDream.LanguageItem" preserve="all" />
<type fullname="AibisDream.LightRoom" preserve="all" />
<type fullname="AibisDream.LineView" preserve="all" />
<type fullname="AibisDream.LocalisedLineProvider" preserve="all" />
<type fullname="AibisDream.LocalizedText" preserve="all" />
<type fullname="AibisDream.MainPanel" preserve="all" />
<type fullname="AibisDream.MinHand" preserve="all" />
<type fullname="AibisDream.MouseFollowAndZoom" preserve="all" />
<type fullname="AibisDream.MoveablePartGroup" preserve="all" />
<type fullname="AibisDream.OpenSystem" preserve="all" />
<type fullname="AibisDream.OutsideCenter" preserve="all" />
<type fullname="AibisDream.PlayToolPanel" preserve="all" />
<type fullname="AibisDream.PrefabMobileObject" preserve="all" />
<type fullname="AibisDream.RecordPanel" preserve="all" />
<type fullname="AibisDream.SavesPanel" preserve="all" />
<type fullname="AibisDream.SceneLoader" preserve="all" />
<type fullname="AibisDream.SelectItem" preserve="all" />
<type fullname="AibisDream.SettingForm" preserve="all" />
<type fullname="AibisDream.SettingPanel" preserve="all" />
<type fullname="AibisDream.Shaft" preserve="all" />
<type fullname="AibisDream.SliderItem" preserve="all" />
<type fullname="AibisDream.Spawner" preserve="all" />
<type fullname="AibisDream.SpawnScenePart" preserve="all" />
<type fullname="AibisDream.SpeedDashboard" preserve="all" />
<type fullname="AibisDream.SpriteActor" preserve="all" />
<type fullname="AibisDream.SpriteFlashSystem" preserve="all" />
<type fullname="AibisDream.SpriteMobileObject" preserve="all" />
<type fullname="AibisDream.SpriteScenePart" preserve="all" />
<type fullname="AibisDream.StartPanel" preserve="all" />
<type fullname="AibisDream.StorageSystem" preserve="all" />
<type fullname="AibisDream.SubwayCenter" preserve="all" />
<type fullname="AibisDream.TalkSceneSO" preserve="all" />
<type fullname="AibisDream.TaskScreen" preserve="all" />
<type fullname="AibisDream.TextBubbleGroup" preserve="all" />
<type fullname="AibisDream.UIManager" preserve="all" />
<type fullname="AibisDream.Vehicle" preserve="all" />
<type fullname="ChipModule" preserve="all" />
<type fullname="ClueBaordNew" preserve="all" />
<type fullname="ClueInteraction" preserve="all" />
<type fullname="ClueItem" preserve="all" />
<type fullname="ClueManager" preserve="all" />
<type fullname="DraggableUI" preserve="all" />
<type fullname="ExplosionEffect" preserve="all" />
<type fullname="EyeTarget" preserve="all" />
<type fullname="EyeTransitionManager" preserve="all" />
<type fullname="FavoritesManager" preserve="all" />
<type fullname="GearFollower" preserve="all" />
<type fullname="HeatMapController" preserve="all" />
<type fullname="LakeLineDrawer" preserve="all" />
<type fullname="LineInteraction" preserve="all" />
<type fullname="MemoryClueSlot" preserve="all" />
<type fullname="MemoryProcess" preserve="all" />
<type fullname="PhysicCable" preserve="all" />
<type fullname="PhysicLineSegment" preserve="all" />
<type fullname="PunchTapeSystem" preserve="all" />
<type fullname="RobotECGWave" preserve="all" />
<type fullname="ScreenEffectManager" preserve="all" />
<type fullname="ShockSystem" preserve="all" />
<type fullname="TimelineManager" preserve="all" />
<type fullname="UFModule" preserve="all" />
<type fullname="UFSystem" preserve="all" />
<type fullname="ViewCameraManager" preserve="all" />
<type fullname="AibisDream.BoolButtonData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.UIFormOption" preserve="nothing" serialized="true" />
<type fullname="AibisDream.AddressArray" preserve="nothing" serialized="true" />
<type fullname="AibisDream.BubbleOptionSlotData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.BubbleSlotData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.BubbleSlotGroupData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.FixSystem.BodyModuleData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.FixSystem.CableConfig" preserve="nothing" serialized="true" />
<type fullname="AibisDream.Framework.SpriteGroupConfig" preserve="nothing" serialized="true" />
<type fullname="AibisDream.Framework.SpriteGroupData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.MobileObjectData" preserve="nothing" serialized="true" />
<type fullname="AibisDream.SpawnerPartAsset" preserve="nothing" serialized="true" />
<type fullname="AibisDream.SpritePartAsset" preserve="nothing" serialized="true" />
<type fullname="EyeTransitionManager/ViewConfig" preserve="nothing" serialized="true" />
<type fullname="PunchTape" preserve="nothing" serialized="true" />
<type fullname="AibisDream.ActivePartAsset" preserve="nothing" serialized="true" />
<type fullname="AibisDream.CableConfig" preserve="nothing" serialized="true" />
<type fullname="AibisDream.EngineConfig" preserve="nothing" serialized="true" />
<type fullname="AibisDream.EngineGear" preserve="nothing" serialized="true" />
<type fullname="LakeLineDrawer/Obstacle" preserve="nothing" serialized="true" />
<type fullname="LakeLineDrawer/TargetPoint" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="MeadowGames.UINodeConnect4.Extension.StartPlusEndNodeIDsRule" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.Extra.ConstantUpdateLines" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.Extra.HandlerRenderer" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.UICLineRenderer" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.GraphManager" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.InputManager_LegacyInputSystem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.Node" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.Port" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.PortControlPoint" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.SampleScene.ScrollViewGraph.CustomScrollRect" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.SampleScene.ScrollViewGraph.Zoom" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.AddNodeButtonItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.ContextMenuManager" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.DefaultConnectionWidthInputItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.DefaultCurveStyleDropdownItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.DuplicateNodeButtonItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.EmptyContextItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.RemoveElementsButtonItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SelectedElementLabelItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetConnectionAnimationActiveToggleItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetConnectionAnimationPointsSliderItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetConnectionWidthInputItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetCurveStyleDropdownItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetElementsColorItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICContextMenu.SetNodesAlignmentItem" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.UICSystemManager" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.ButtonTransition" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.ModalWindow" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.ModalWindowProgressBar" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.Notification" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.ProgressBar" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.ProgressBarGridCircular" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.ProgressBarGridLinear" preserve="all" />
<type fullname="RainbowArt.CleanFlatUI.SliderTransition" preserve="all" />
<type fullname="MeadowGames.UINodeConnect4.Connection" preserve="nothing" serialized="true" />
<type fullname="MeadowGames.UINodeConnect4.DragSelection" preserve="nothing" serialized="true" />
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.Line" preserve="nothing" serialized="true" />
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.Line/LineCap" preserve="nothing" serialized="true" />
<type fullname="MeadowGames.UINodeConnect4.GraphicRenderer.LineAnimation" preserve="nothing" serialized="true" />
<type fullname="MeadowGames.UINodeConnect4.Pointer" preserve="nothing" serialized="true" />
<type fullname="RainbowArt.CleanFlatUI.ModalWindow/ModalWindowEvent" preserve="nothing" serialized="true" />
<type fullname="RainbowArt.CleanFlatUI.ModalWindowProgressBar/ModalWindowEvent" preserve="nothing" serialized="true" />
<type fullname="RainbowArt.CleanFlatUI.Notification/NotificationEvent" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Cinemachine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="Cinemachine.CinemachineBlenderSettings" preserve="all" />
<type fullname="Cinemachine.CinemachineBrain" preserve="all" />
<type fullname="Cinemachine.CinemachinePipeline" preserve="all" />
<type fullname="Cinemachine.CinemachineVirtualCamera" preserve="all" />
<type fullname="Cinemachine.NoiseSettings" preserve="all" />
<type fullname="Cinemachine.CinemachineBlendDefinition" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.CinemachineBlenderSettings/CustomBlend" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.CinemachineBrain/BrainEvent" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.CinemachineBrain/VcamActivatedEvent" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.CinemachineVirtualCameraBase/TransitionParams" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.LensSettings" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.NoiseSettings/NoiseParams" preserve="nothing" serialized="true" />
<type fullname="Cinemachine.NoiseSettings/TransformNoiseParams" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Febucci.TextAnimator.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="Febucci.UI.Actions.ActionDatabase" preserve="all" />
<type fullname="Febucci.UI.Actions.SpeedAction" preserve="all" />
<type fullname="Febucci.UI.Actions.WaitAnyInputAction" preserve="all" />
<type fullname="Febucci.UI.Actions.WaitForAction" preserve="all" />
<type fullname="Febucci.UI.Effects.AnimationsDatabase" preserve="all" />
<type fullname="Febucci.UI.Effects.BounceBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.DangleBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.DiagonalExpandAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.FadeAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.FadeBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.HorizontalExpandAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.OffsetAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.PendulumBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.RainbowBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.RandomDirectionAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.RotatingAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.RotationBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.ShakeBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.SizeAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.SizeBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.SlideBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.SwingBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.VerticalExpandAppearance" preserve="all" />
<type fullname="Febucci.UI.Effects.WaveBehavior" preserve="all" />
<type fullname="Febucci.UI.Effects.WiggleBehavior" preserve="all" />
<type fullname="Febucci.UI.TypewriterByCharacter" preserve="all" />
<type fullname="Febucci.UI.Core.CharacterEvent" preserve="nothing" serialized="true" />
<type fullname="Febucci.UI.Core.MessageEvent" preserve="nothing" serialized="true" />
<type fullname="Febucci.UI.TimeData" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Febucci.TextAnimator.TMP.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="Febucci.UI.TextAnimator_TMP" preserve="all" />
</assembly>
<assembly fullname="FMODUnity, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="FMODUnity.FMODEventPlayable" preserve="all" />
<type fullname="FMODUnity.FMODEventTrack" preserve="all" />
<type fullname="FMODUnity.StudioListener" preserve="all" />
<type fullname="FMOD.GUID" preserve="nothing" serialized="true" />
<type fullname="FMODUnity.AutomatableSlots" preserve="nothing" serialized="true" />
<type fullname="FMODUnity.EventReference" preserve="nothing" serialized="true" />
<type fullname="FMODUnity.FMODEventMixerBehaviour" preserve="nothing" serialized="true" />
<type fullname="FMODUnity.FMODEventPlayableBehavior" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="ScreenFx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="ScreenFx.CameraTrack" preserve="all" />
<type fullname="ScreenFx.MoveAsset" preserve="all" />
<type fullname="ScreenFx.NoiseAsset" preserve="all" />
<type fullname="ScreenFx.ScreenAsset" preserve="all" />
<type fullname="ScreenFx.ScreenFx" preserve="all" />
<type fullname="ScreenFx.ScreenFxPool" preserve="all" />
<type fullname="ScreenFx.ScreenTrack" preserve="all" />
<type fullname="ScreenFx.VolumeAsset" preserve="all" />
<type fullname="ScreenFx.VolumeTrack" preserve="all" />
<type fullname="ScreenFx.CameraBehaviour" preserve="nothing" serialized="true" />
<type fullname="ScreenFx.NoiseBehaviour" preserve="nothing" serialized="true" />
<type fullname="ScreenFx.Optional`1[Cinemachine.NoiseSettings]" preserve="nothing" serialized="true" />
<type fullname="ScreenFx.Optional`1[UnityEngine.Sprite]" preserve="nothing" serialized="true" />
<type fullname="ScreenFx.ScreenBehaviour" preserve="nothing" serialized="true" />
<type fullname="ScreenFx.VolumeBehaviour" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.U2D.SpriteShape" preserve="all" />
<type fullname="UnityEngine.U2D.SpriteShapeController" preserve="all" />
<type fullname="UnityEngine.U2D.AngleRange" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.U2D.CornerSprite" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.U2D.Spline" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.U2D.SplineControlPoint" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Unity.Addressables, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
<type fullname="UnityEngine.AddressableAssets.Addressables" preserve="all" />
</assembly>
<assembly fullname="Unity.Localization, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Localization.Components.LocalizeStringEvent" preserve="all" />
<type fullname="UnityEngine.Localization.Locale" preserve="all" />
<type fullname="UnityEngine.Localization.Tables.SharedTableData" preserve="all" />
<type fullname="UnityEngine.Localization.Tables.StringTable" preserve="all" />
<type fullname="UnityEngine.Localization.Events.UnityEventString" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.LocalizedString" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.SmartFormat.PersistentVariables.StringVariable" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.SmartFormat.PersistentVariables.VariableNameValuePair" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Tables.TableEntryReference" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Tables.TableReference" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.LocaleIdentifier" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Metadata.MetadataCollection" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Metadata.Comment" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Tables.DistributedUIDGenerator" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Tables.SharedTableData/SharedTableEntry" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Metadata.SmartFormatTag" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Localization.Tables.TableEntryData" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Rendering.Volume" preserve="all" />
<type fullname="UnityEngine.Rendering.VolumeProfile" preserve="all" />
<type fullname="UnityEngine.Rendering.BoolParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.ClampedFloatParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.ClampedIntParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.ColorParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.FloatParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.MinFloatParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Vector2Parameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Vector4Parameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.NoInterpClampedFloatParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.NoInterpClampedIntParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.NoInterpColorParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Texture2DParameter" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Unity.RenderPipelines.Universal.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Rendering.Universal.ColorAdjustments" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.DepthOfField" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.LensDistortion" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.LiftGammaGain" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.Light2D" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.PaniniProjection" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.Tonemapping" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.UniversalAdditionalCameraData" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.Vignette" preserve="all" />
<type fullname="UnityEngine.Rendering.Universal.DepthOfFieldModeParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Universal.HDRACESPresetParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Universal.NeutralRangeReductionModeParameter" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Universal.TemporalAA/Settings" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Rendering.Universal.TonemappingModeParameter" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.AtlasSpriteProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.LegacyResourcesProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.SceneProvider" preserve="all" />
</assembly>
<assembly fullname="Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="TMPro.TextMeshPro" preserve="all" />
<type fullname="TMPro.TextMeshProUGUI" preserve="all" />
<type fullname="TMPro.TMP_Dropdown" preserve="all" />
<type fullname="TMPro.TMP_FontAsset" preserve="all" />
<type fullname="TMPro.TMP_InputField" preserve="all" />
<type fullname="TMPro.FaceInfo_Legacy" preserve="nothing" serialized="true" />
<type fullname="TMPro.FontAssetCreationSettings" preserve="nothing" serialized="true" />
<type fullname="TMPro.KerningTable" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_Character" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_Dropdown/DropdownEvent" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_Dropdown/OptionData" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_Dropdown/OptionDataList" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_FontFeatureTable" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_FontWeightPair" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_GlyphAdjustmentRecord" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_GlyphPairAdjustmentRecord" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_GlyphValueRecord" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_InputField/OnChangeEvent" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_InputField/SelectionEvent" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_InputField/SubmitEvent" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_InputField/TextSelectionEvent" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_InputField/TouchScreenKeyboardEvent" preserve="nothing" serialized="true" />
<type fullname="TMPro.VertexGradient" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="Unity.Timeline, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Timeline.ActivationPlayableAsset" preserve="all" />
<type fullname="UnityEngine.Timeline.ActivationTrack" preserve="all" />
<type fullname="UnityEngine.Timeline.AnimationPlayableAsset" preserve="all" />
<type fullname="UnityEngine.Timeline.AnimationTrack" preserve="all" />
<type fullname="UnityEngine.Timeline.GroupTrack" preserve="all" />
<type fullname="UnityEngine.Timeline.MarkerTrack" preserve="all" />
<type fullname="UnityEngine.Timeline.SignalAsset" preserve="all" />
<type fullname="UnityEngine.Timeline.SignalEmitter" preserve="all" />
<type fullname="UnityEngine.Timeline.SignalReceiver" preserve="all" />
<type fullname="UnityEngine.Timeline.SignalTrack" preserve="all" />
<type fullname="UnityEngine.Timeline.TimelineAsset" preserve="all" />
<type fullname="UnityEngine.Timeline.MarkerList" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Timeline.TimelineAsset/EditorSettings" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Timeline.TimelineClip" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Timeline.SignalReceiver/EventKeyValue" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEngine.AnimationModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.AnimationClip" preserve="all" />
<type fullname="UnityEngine.Animator" preserve="all" />
<type fullname="UnityEngine.RuntimeAnimatorController" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Camera" preserve="all" />
<type fullname="UnityEngine.ComputeShader" preserve="all" />
<type fullname="UnityEngine.GameObject" preserve="all" />
<type fullname="UnityEngine.LightmapSettings" preserve="all" />
<type fullname="UnityEngine.LineRenderer" preserve="all" />
<type fullname="UnityEngine.Material" preserve="all" />
<type fullname="UnityEngine.Mesh" preserve="all" />
<type fullname="UnityEngine.MeshFilter" preserve="all" />
<type fullname="UnityEngine.MeshRenderer" preserve="all" />
<type fullname="UnityEngine.MonoBehaviour" preserve="all" />
<type fullname="UnityEngine.Object" preserve="all" />
<type fullname="UnityEngine.RectTransform" preserve="all" />
<type fullname="UnityEngine.RenderSettings" preserve="all" />
<type fullname="UnityEngine.RenderTexture" preserve="all" />
<type fullname="UnityEngine.Shader" preserve="all" />
<type fullname="UnityEngine.Sprite" preserve="all" />
<type fullname="UnityEngine.SpriteRenderer" preserve="all" />
<type fullname="UnityEngine.Texture2D" preserve="all" />
<type fullname="UnityEngine.Transform" preserve="all" />
<type fullname="UnityEngine.U2D.SpriteAtlas" preserve="all" />
<type fullname="UnityEngine.Events.ArgumentCache" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Events.PersistentCallGroup" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Events.PersistentListenerMode" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Events.UnityEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Events.UnityEvent`2[System.String,System.String]" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.RectOffset" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.Events.UnityEvent`2[System.Single,System.Single]" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEngine.DirectorModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Playables.PlayableDirector" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.ParticleSystemModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.ParticleSystem" preserve="all" />
<type fullname="UnityEngine.ParticleSystemRenderer" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.Physics2DModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.BoxCollider2D" preserve="all" />
<type fullname="UnityEngine.CircleCollider2D" preserve="all" />
<type fullname="UnityEngine.PolygonCollider2D" preserve="all" />
<type fullname="UnityEngine.Rigidbody2D" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.BoxCollider" preserve="all" />
<type fullname="UnityEngine.Rigidbody" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.SpriteMaskModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.SpriteMask" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.SpriteShapeModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.U2D.SpriteShapeRenderer" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.TextRenderingModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Font" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.EventSystems.EventSystem" preserve="all" />
<type fullname="UnityEngine.EventSystems.EventTrigger" preserve="all" />
<type fullname="UnityEngine.EventSystems.Physics2DRaycaster" preserve="all" />
<type fullname="UnityEngine.EventSystems.StandaloneInputModule" preserve="all" />
<type fullname="UnityEngine.UI.Button" preserve="all" />
<type fullname="UnityEngine.UI.CanvasScaler" preserve="all" />
<type fullname="UnityEngine.UI.ContentSizeFitter" preserve="all" />
<type fullname="UnityEngine.UI.GraphicRaycaster" preserve="all" />
<type fullname="UnityEngine.UI.GridLayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.HorizontalLayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.Image" preserve="all" />
<type fullname="UnityEngine.UI.LayoutElement" preserve="all" />
<type fullname="UnityEngine.UI.Mask" preserve="all" />
<type fullname="UnityEngine.UI.Outline" preserve="all" />
<type fullname="UnityEngine.UI.RawImage" preserve="all" />
<type fullname="UnityEngine.UI.RectMask2D" preserve="all" />
<type fullname="UnityEngine.UI.Scrollbar" preserve="all" />
<type fullname="UnityEngine.UI.ScrollRect" preserve="all" />
<type fullname="UnityEngine.UI.Slider" preserve="all" />
<type fullname="UnityEngine.UI.Text" preserve="all" />
<type fullname="UnityEngine.UI.Toggle" preserve="all" />
<type fullname="UnityEngine.UI.VerticalLayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.AnimationTriggers" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Button/ButtonClickedEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.ColorBlock" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.FontData" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.MaskableGraphic/CullStateChangedEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Navigation" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.ScrollRect/ScrollRectEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Scrollbar/ScrollEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Slider/SliderEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.SpriteState" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Toggle/ToggleEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.EventSystems.EventTrigger/Entry" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.EventSystems.EventTrigger/TriggerEvent" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEngine.UIModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Canvas" preserve="all" />
<type fullname="UnityEngine.CanvasGroup" preserve="all" />
<type fullname="UnityEngine.CanvasRenderer" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.VFXModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.VFX.VFXRenderer" preserve="all" />
<type fullname="UnityEngine.VFX.VisualEffect" preserve="all" />
<type fullname="UnityEngine.VFX.VisualEffectAsset" preserve="all" />
</assembly>
<assembly fullname="VolFx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="VolFx.AsciiVol" preserve="all" />
<type fullname="VolFx.BloomVol" preserve="all" />
<type fullname="VolFx.BlurVol" preserve="all" />
<type fullname="VolFx.ChromaticVol" preserve="all" />
<type fullname="VolFx.DistortVol" preserve="all" />
<type fullname="VolFx.DitherVol" preserve="all" />
<type fullname="VolFx.GlitchVol" preserve="all" />
<type fullname="VolFx.OutlineVol" preserve="all" />
<type fullname="VolFx.PixelationVol" preserve="all" />
<type fullname="VolFx.VhsVol" preserve="all" />
<type fullname="VolFx.CurveParameter" preserve="nothing" serialized="true" />
<type fullname="VolFx.CurveValue" preserve="nothing" serialized="true" />
<type fullname="VolFx.DitherVol/NoiseModeParameter" preserve="nothing" serialized="true" />
<type fullname="VolFx.GradientParameter" preserve="nothing" serialized="true" />
<type fullname="VolFx.GradientValue" preserve="nothing" serialized="true" />
<type fullname="VolFx.OutlineVol/ModeParameter" preserve="nothing" serialized="true" />
<type fullname="VolFx.OutlineVol/RemapParameter" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="YarnSpinner.Unity, Version=2.4.2.0, Culture=neutral, PublicKeyToken=null">
<type fullname="Yarn.Unity.DialogueRunner" preserve="all" />
<type fullname="Yarn.Unity.Localization" preserve="all" />
<type fullname="Yarn.Unity.YarnProject" preserve="all" />
<type fullname="Yarn.Unity.LineMetadata" preserve="nothing" serialized="true" />
<type fullname="Yarn.Unity.LineMetadata/StringDictionary" preserve="nothing" serialized="true" />
<type fullname="Yarn.Unity.Localization/AssetDictionary" preserve="nothing" serialized="true" />
<type fullname="Yarn.Unity.Localization/StringDictionary" preserve="nothing" serialized="true" />
<type fullname="Yarn.Unity.DialogueRunner/StringUnityEvent" preserve="nothing" serialized="true" />
<type fullname="Yarn.Unity.UnityLocalization.LineMetadata" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEngine.TextCoreFontEngineModule">
<type fullname="UnityEngine.TextCore.FaceInfo" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.TextCore.Glyph" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.TextCore.GlyphMetrics" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.TextCore.GlyphRect" preserve="nothing" serialized="true" />
</assembly>
</linker>
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 48b54d35ebbd16042a546482cf57c917
TextScriptImporter:
guid: afc01321d5046a141bba1f84dd41e8cc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
@@ -0,0 +1,298 @@
using System;
using System.IO;
using System.Linq;
using JetBrains.Annotations;
using UnityEditor;
using UnityEditor.Animations;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;
using Object = UnityEngine.Object;
namespace AibisDream.SystemEditor
{
public class AnimatorClipLink : EditorWindow
{
[SerializeField] private VisualTreeAsset visualTreeAsset;
private ObjectField _animatorField;
private Label _animatorMessage;
private ListView _stateInfoView;
private TextField _clipsPathField;
private Label _clipsMessage;
private ListView _clipsNameList;
private HelpBox _matchMessageBox;
#region
private static AnimatorController _animatorCache;
private static string _clipsPathCache;
private ChildAnimatorState[] _statesCache;
private string[] _clipsCache;
private bool _isChecked;
private bool _allMatched;
private bool _isAllLoad;
#endregion
[MenuItem("Tools/AnimatorClipLink")]
public static void ShowExample()
{
AnimatorClipLink wnd = GetWindow<AnimatorClipLink>();
wnd.titleContent = new GUIContent("AnimatorClipLink");
}
public void CreateGUI()
{
// Each editor window contains a root VisualElement object
VisualElement root = rootVisualElement;
// Instantiate UXML
root.Add(visualTreeAsset.Instantiate());
// 注册一些事件
_animatorField = root.Q<ObjectField>("animator-field");
_animatorField.RegisterValueChangedCallback(OnAnimatorChanged);
_animatorMessage = root.Q<Label>("animator-message");
_stateInfoView = root.Q<ListView>("state-info-list");
_clipsPathField = root.Q<TextField>("clips-path-field");
_clipsPathField.RegisterValueChangedCallback(OnClipsPathChanged);
_clipsMessage = root.Q<Label>("clips-message");
_clipsNameList = root.Q<ListView>("clips-name-list");
_matchMessageBox = root.Q<HelpBox>("match-message-box");
root.Q<Button>("import-merge-button").clicked += ImportMerge;
// 初始化
_animatorMessage.text = "请添加AnimatorController";
_clipsMessage.text = "请输入Clips路径";
// 加载AnimatorState
if (_animatorCache != null)
{
_animatorField.value = _animatorCache;
LoadAnimatorController(_animatorCache);
}
else
{
UpdateStateInfos(Array.Empty<ChildAnimatorState>());
}
// 加载路径下的Clips
if (!string.IsNullOrWhiteSpace(_clipsPathCache))
{
_clipsPathField.value = _clipsPathCache;
LoadClipPath(_clipsPathCache);
}
else
{
UpdateClipInFolder(Array.Empty<string>());
}
}
private void UpdateStateInfos(ChildAnimatorState[] states)
{
_statesCache = states;
// 总条目
var stateList = states.ToList();
_stateInfoView.makeItem = MakeItem;
_stateInfoView.bindItem = BindItem;
_stateInfoView.itemsSource = stateList;
_stateInfoView.selectionType = UnityEngine.UIElements.SelectionType.None;
MatchStateAndClip();
return;
// 链接
void BindItem(VisualElement item, int index)
{
if (index >= stateList.Count) return;
var state = stateList[index];
if (item is ObjectField field)
{
field.value = state.state.motion;
field.label = state.state.name;
}
}
// 创建
VisualElement MakeItem()
{
var item = new ObjectField
{
objectType = typeof(AnimationClip)
};
item.SetEnabled(false);
return item;
}
}
private void OnAnimatorChanged(ChangeEvent<Object> evt)
{
if (evt.newValue is AnimatorController animatorController)
{
LoadAnimatorController(animatorController);
}
else
{
LoadAnimatorController(null);
}
}
private void LoadAnimatorController([CanBeNull] AnimatorController animatorController)
{
// 判断新的值是不是空的,是就清空State信息
if (animatorController == null)
{
_animatorCache = null;
_animatorMessage.text = "AnimatorController 为空";
// 清空State信息
UpdateStateInfos(Array.Empty<ChildAnimatorState>());
return;
}
_animatorCache = animatorController;
// 值更新的时候,更新State信息
var states = animatorController.layers[0].stateMachine.states;
_animatorMessage.text = $"BaseLayer共有{states.Length}个State";
UpdateStateInfos(states);
}
private void OnClipsPathChanged(ChangeEvent<string> evt)
{
LoadClipPath(evt.newValue);
}
private void LoadClipPath([CanBeNull] string clipsPath)
{
_clipsPathCache = clipsPath;
// 先判断路径是否存在
if (!AssetDatabase.IsValidFolder(clipsPath))
{
_clipsMessage.text = "路径不存在";
// 清空Clip信息
UpdateClipInFolder(Array.Empty<string>());
return;
}
// 从路径中获取Clip
var clipIds = AssetDatabase.FindAssets("t:AnimationClip", new[] { clipsPath });
// 获取名称
var clipNames = clipIds.Select(AssetDatabase.GUIDToAssetPath)
.Where(item => item.EndsWith(".anim"))
.ToArray();
_clipsMessage.text = $"共有{clipNames.Length}个Clip";
UpdateClipInFolder(clipNames);
}
private void UpdateClipInFolder(string[] clipNames)
{
_clipsCache = clipNames;
var clipNameList = clipNames.Select(Path.GetFileNameWithoutExtension).ToList();
_clipsNameList.makeItem = MakeItem;
_clipsNameList.bindItem = BindItem;
_clipsNameList.itemsSource = clipNameList;
MatchStateAndClip();
return;
void BindItem(VisualElement item, int index)
{
if (index >= clipNameList.Count) return;
var clipName = clipNameList[index];
if (item is Label label)
{
label.text = clipName;
}
}
VisualElement MakeItem() => new Label();
}
private void MatchStateAndClip()
{
if (_statesCache is not { Length: > 0 } || _clipsCache is not { Length: > 0 })
{
_matchMessageBox.text = "请先选择AnimatorController和Clips路径";
_matchMessageBox.messageType = HelpBoxMessageType.Warning;
_allMatched = false;
_isAllLoad = false;
return;
}
var clipNames = _clipsCache.Select(Path.GetFileNameWithoutExtension).ToArray();
// 匹配state和clips
var notMatchStates =
(from state in _statesCache where !clipNames.Contains(state.state.name) select state.state.name)
.ToList();
if (notMatchStates.Count == 0)
{
_matchMessageBox.messageType = HelpBoxMessageType.Info;
_matchMessageBox.text = "所有State都已经匹配";
_allMatched = true;
}
else
{
_matchMessageBox.messageType = HelpBoxMessageType.Warning;
_matchMessageBox.text = $"未匹配的State有{notMatchStates.Count}个:\n{string.Join(", ", notMatchStates)}";
_allMatched = false;
}
_isAllLoad = true;
_isChecked = false;
}
private void ImportMerge()
{
if (!_isAllLoad)
{
_matchMessageBox.messageType = HelpBoxMessageType.Warning;
_matchMessageBox.text = "请先选择AnimatorController和Clips路径";
return;
}
if (_isChecked || _allMatched)
{
MergeClips();
_isChecked = false;
_matchMessageBox.messageType = HelpBoxMessageType.Info;
_matchMessageBox.text = "匹配完成";
}
else
{
_matchMessageBox.messageType = HelpBoxMessageType.Warning;
_matchMessageBox.text = "仍有未匹配到Clip的State,确认要继续吗?";
_isChecked = true;
}
}
private void MergeClips()
{
var clipNames = _clipsCache.Select(Path.GetFileNameWithoutExtension).ToArray();
foreach (var state in _statesCache)
{
var idx = Array.IndexOf(clipNames, state.state.name);
if (idx != -1)
{
var newClip = AssetDatabase.LoadAssetAtPath<AnimationClip>(_clipsCache[idx]);
Debug.Log(_clipsCache[idx]);
state.state.motion = newClip;
}
}
LoadAnimatorController(_animatorCache);
}
}
}
@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 0182e64fe4acdbf4aae853bf35db2105
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- m_ViewDataDictionary: {instanceID: 0}
- visualTreeAsset: {fileID: 9197481963319205126, guid: 6fd39d76275817945b272053a20f2c43, type: 3}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,5 @@
.custom-label {
font-size: 20px;
-unity-font-style: bold;
color: rgb(68, 138, 255);
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ec4ca5fe3cf523d4a88253be45a8f5c1
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
disableValidation: 0
@@ -0,0 +1,22 @@
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="True">
<Style src="project://database/Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.uss?fileID=7433441132597879392&amp;guid=ec4ca5fe3cf523d4a88253be45a8f5c1&amp;type=3#AnimatorClipLink" />
<ui:Label text="Animator 动画片段导入" class="custom-label" style="align-items: center; justify-content: flex-start; -unity-text-align: upper-center; height: auto;" />
<ui:VisualElement style="flex-grow: 1; flex-direction: row; height: auto;">
<ui:VisualElement name="Animator" picking-mode="Ignore" style="flex-grow: 1; width: 50%; align-items: stretch;">
<ui:Label tabindex="-1" text="Animator" parse-escape-sequences="true" display-tooltip-when-elided="true" />
<uie:ObjectField label="动画控制器" name="animator-field" object-type="UnityEngine.AnimatorController" style="align-items: auto;" />
<ui:Label tabindex="-1" text="Label" parse-escape-sequences="true" display-tooltip-when-elided="true" name="animator-message" />
<ui:ListView focusable="true" name="state-info-list" selection-type="None" show-add-remove-footer="false" />
</ui:VisualElement>
<ui:VisualElement name="Clips" picking-mode="Ignore" style="flex-grow: 1; width: 50%;">
<ui:Label tabindex="-1" text="Clips路径" parse-escape-sequences="true" display-tooltip-when-elided="false" />
<ui:TextField label="路径名" name="clips-path-field" style="align-items: auto;" />
<ui:Label tabindex="-1" text="Label" parse-escape-sequences="true" display-tooltip-when-elided="true" name="clips-message" />
<ui:ListView focusable="true" name="clips-name-list" selection-type="None" show-add-remove-footer="false" />
</ui:VisualElement>
</ui:VisualElement>
<ui:VisualElement style="flex-grow: 1; justify-content: space-around; align-items: center; align-self: stretch; height: auto; flex-direction: row; max-height: none;">
<ui:HelpBox text="请先选择AnimatorController和Clips路径" message-type="Warning" name="match-message-box" style="width: 50%;" />
<ui:Button text="保存" parse-escape-sequences="true" display-tooltip-when-elided="true" name="import-merge-button" style="align-items: auto;" />
</ui:VisualElement>
</ui:UXML>
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8a5ee516385fd674b82eb78367c8e7ac
guid: 6fd39d76275817945b272053a20f2c43
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 349305695e512ac4aa4fa63995c55809
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,83 @@
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;
using UnityEngine.UIElements;
public class SimpleCustomEditor : EditorWindow
{
[MenuItem("Window/UI Toolkit/MyCustomEditor")]
public static void ShowExample()
{
SimpleCustomEditor wnd = GetWindow<SimpleCustomEditor>();
wnd.titleContent = new GUIContent("MyCustomEditor");
}
[SerializeField]
private VisualTreeAsset m_UXMLTree = default;
private int m_ClickCount = 0;
private const string m_ButtonPrefix = "button";
public void CreateGUI()
{
// Each editor window contains a root VisualElement object
VisualElement root = rootVisualElement;
// VisualElements objects can contain other VisualElement following a tree hierarchy.
Label label = new Label("These controls were created using C# code.");
root.Add(label);
Button button = new Button();
button.name = "button3";
button.text = "This is button3.";
root.Add(button);
Toggle toggle = new Toggle();
toggle.name = "toggle3";
toggle.label = "Number?";
root.Add(toggle);
// Instantiate UXML created automatically which is set as the default VisualTreeAsset.
root.Add(m_UXMLTree.Instantiate());
// Import UXML created manually.
var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/UXML/Editor Simple/SimpleCustomEditor_uxml.uxml");
VisualElement labelFromUXML_uxml = visualTree.Instantiate();
root.Add(labelFromUXML_uxml);
//Call the event handler
SetupButtonHandler();
}
//Functions as the event handlers for your button click and number counts
private void SetupButtonHandler()
{
VisualElement root = rootVisualElement;
var buttons = root.Query<Button>();
buttons.ForEach(RegisterHandler);
}
private void RegisterHandler(Button button)
{
button.RegisterCallback<ClickEvent>(PrintClickMessage);
}
private void PrintClickMessage(ClickEvent evt)
{
VisualElement root = rootVisualElement;
++m_ClickCount;
//Because of the names we gave the buttons and toggles, we can use the
//button name to find the toggle name.
Button button = evt.currentTarget as Button;
string buttonNumber = button.name.Substring(m_ButtonPrefix.Length);
string toggleName = "toggle" + buttonNumber;
Toggle toggle = root.Q<Toggle>(toggleName);
Debug.Log("Button was clicked!" +
(toggle.value ? " Count: " + m_ClickCount : ""));
}
}
@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 0465714253b841b4284cdd223157ac53
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- m_ViewDataDictionary: {instanceID: 0}
- m_UXMLTree: {fileID: 9197481963319205126, guid: 070bb0363fb0b0f4c85a9c529a716276, type: 3}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,5 @@
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<ui:Label text="These controls were created in UI Builder." />
<ui:Button text="This is button1" name="button1"/>
<ui:Toggle label="Number?" name="toggle1"/>
</ui:UXML>
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 070bb0363fb0b0f4c85a9c529a716276
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
@@ -0,0 +1,5 @@
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<ui:Label text="These controls were created with UXML." />
<ui:Button text="This is button2" name="button2"/>
<ui:Toggle label="Number?" name="toggle2"/>
</ui:UXML>
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 208c3b2cf9e22504689a630983c0b2bc
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
@@ -1,24 +0,0 @@
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False">
<ui:VisualElement style="flex-grow: 1;">
<ui:Label tabindex="-1" text="加载图片集" parse-escape-sequences="true" display-tooltip-when-elided="true" />
<ui:TextField picking-mode="Ignore" label="Text Field" value="filler text" />
<ui:TextField picking-mode="Ignore" label="Text Field" value="filler text" />
<ui:VisualElement usage-hints="None" style="flex-grow: 1; flex-direction: row; justify-content: space-around; height: auto; opacity: 1; bottom: initial; min-height: auto; align-self: auto; align-items: center;">
<ui:Button text="按PSD加载" parse-escape-sequences="true" display-tooltip-when-elided="true" style="position: relative; align-items: auto;" />
<ui:Button text="按Key加载" parse-escape-sequences="true" display-tooltip-when-elided="true" />
</ui:VisualElement>
<ui:VisualElement style="flex-grow: 1; align-items: flex-start; height: auto; align-self: auto; justify-content: flex-start; min-width: auto; min-height: auto; flex-direction: column;">
<ui:Label tabindex="-1" text="状态相关" parse-escape-sequences="true" display-tooltip-when-elided="true" />
<ui:DropdownField label="状态选项" index="-1" choices="选项" />
<ui:TextField picking-mode="Ignore" value="手动输入状态名" />
<ui:VisualElement usage-hints="None" style="flex-grow: 1; flex-direction: row; justify-content: space-around; height: auto; opacity: 1; bottom: initial; min-height: auto; align-self: auto; align-items: center;">
<ui:Button text="保存为状态" parse-escape-sequences="true" display-tooltip-when-elided="true" style="position: relative; align-items: auto;" />
<ui:Button text="加载该状态" parse-escape-sequences="true" display-tooltip-when-elided="true" />
</ui:VisualElement>
<ui:Label tabindex="-1" text="保存图片集" parse-escape-sequences="true" display-tooltip-when-elided="true" />
</ui:VisualElement>
<ui:VisualElement usage-hints="None" style="flex-grow: 1; flex-direction: row; justify-content: space-around; height: auto; opacity: 1; bottom: initial; min-height: auto; align-self: auto; align-items: center;">
<ui:Button text="保存" parse-escape-sequences="true" display-tooltip-when-elided="true" />
</ui:VisualElement>
</ui:VisualElement>
</ui:UXML>
+1 -1
View File
@@ -133,7 +133,7 @@ PlayerSettings:
vulkanEnableLateAcquireNextImage: 0
vulkanEnableCommandBufferRecycling: 1
loadStoreDebugModeEnabled: 0
bundleVersion: 0.3.0.32-20250626-204941
bundleVersion: 0.3.1.0-20250626-204941
preloadedAssets:
- {fileID: 11400000, guid: 0fb2bc2476953fc43a74f0ab8879077c, type: 2}
metroInputSource: 0