Browse Source

增加备份短码功能

liuqilin 7 years ago
parent
commit
20a9076686
32 changed files with 4653 additions and 3766 deletions
  1. BIN
      .vs/Garden5_2017/v15/Server/sqlite3/storage.ide
  2. BIN
      .vs/Garden5_2017/v15/Server/sqlite3/storage.ide-shm
  3. BIN
      .vs/Garden5_2017/v15/Server/sqlite3/storage.ide-wal
  4. 69 0
      Assets/Resource/Animations/Credit.controller
  5. 10 0
      Assets/Resource/Animations/Credit.controller.meta
  6. 155 0
      Assets/Resource/Animations/CreditAnimation.anim
  7. 10 0
      Assets/Resource/Animations/CreditAnimation.anim.meta
  8. 3 4
      Assets/Resource/Logo.unity
  9. 469 178
      Assets/Resource/Prefab/PrefabUI/Canvas.prefab
  10. 2 2
      Assets/Resource/Shader/DragonboneUGUIMat.mat
  11. 1 1
      Assets/Resource/Shader/GrayMat.mat
  12. 1 1
      Assets/Resource/XML/PlayerConfig.xml
  13. 3 0
      Assets/Resource/XML/lan/ChineseSimplified.xml
  14. 2 0
      Assets/Resource/XML/lan/ChineseTraditional.xml
  15. 2 0
      Assets/Resource/XML/lan/English.xml
  16. 16 0
      Assets/Script/Label/CanvasLabel.cs
  17. 33 0
      Assets/Script/Label/LanguageLabel.cs
  18. 3447 3447
      Assets/Script/Manage/AnimManager.cs
  19. 128 21
      Assets/Script/Manage/ConfigManager.cs
  20. 14 0
      Assets/Script/Manage/HttpManager.cs
  21. 3 0
      Assets/Script/Manage/Initializer.cs
  22. 112 0
      Assets/Script/Manage/Panel/BackupIDPanel.cs
  23. 13 0
      Assets/Script/Manage/Panel/BackupIDPanel.cs.meta
  24. 12 0
      Assets/Script/Manage/PlayerManager.cs
  25. 55 38
      Assets/Script/Manage/PlayerPrefManager.cs
  26. 2 2
      Assets/Script/Manage/UIManager.cs
  27. 1 1
      Assets/Script/Social/FashionShowCloseBox.cs
  28. 8 2
      Assets/Script/Tool/Auxiliary.cs
  29. 66 61
      Assets/Script/Tool/Test.cs
  30. 4 4
      Assets/Tookits/LabelUtility/LabelUtility.prefab
  31. 12 0
      ProjectSettings/QualitySettings.asset
  32. 0 4
      第五期.txt

BIN
.vs/Garden5_2017/v15/Server/sqlite3/storage.ide


BIN
.vs/Garden5_2017/v15/Server/sqlite3/storage.ide-shm


BIN
.vs/Garden5_2017/v15/Server/sqlite3/storage.ide-wal


+ 69 - 0
Assets/Resource/Animations/Credit.controller

@@ -0,0 +1,69 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!91 &9100000
+AnimatorController:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_Name: Credit
+  serializedVersion: 5
+  m_AnimatorParameters: []
+  m_AnimatorLayers:
+  - serializedVersion: 5
+    m_Name: Base Layer
+    m_StateMachine: {fileID: 1107703467221588716}
+    m_Mask: {fileID: 0}
+    m_Motions: []
+    m_Behaviours: []
+    m_BlendingMode: 0
+    m_SyncedLayerIndex: -1
+    m_DefaultWeight: 0
+    m_IKPass: 0
+    m_SyncedLayerAffectsTiming: 0
+    m_Controller: {fileID: 9100000}
+--- !u!1102 &1102471154494222088
+AnimatorState:
+  serializedVersion: 5
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_Name: CreditAnimation
+  m_Speed: 0.075
+  m_CycleOffset: 0
+  m_Transitions: []
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7400000, guid: 114751d93e650564083a2133a0704c8c, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
+--- !u!1107 &1107703467221588716
+AnimatorStateMachine:
+  serializedVersion: 5
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_Name: Base Layer
+  m_ChildStates:
+  - serializedVersion: 1
+    m_State: {fileID: 1102471154494222088}
+    m_Position: {x: 312, y: 156, z: 0}
+  m_ChildStateMachines: []
+  m_AnyStateTransitions: []
+  m_EntryTransitions: []
+  m_StateMachineTransitions: {}
+  m_StateMachineBehaviours: []
+  m_AnyStatePosition: {x: 50, y: 20, z: 0}
+  m_EntryPosition: {x: 50, y: 120, z: 0}
+  m_ExitPosition: {x: 800, y: 120, z: 0}
+  m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+  m_DefaultState: {fileID: 1102471154494222088}

+ 10 - 0
Assets/Resource/Animations/Credit.controller.meta

@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 600ce29782a14244cb165426375fe30d
+timeCreated: 1525935167
+licenseType: Pro
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 9100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 155 - 0
Assets/Resource/Animations/CreditAnimation.anim

@@ -0,0 +1,155 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_Name: CreditAnimation
+  serializedVersion: 6
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 2
+        time: 0
+        value: 0.50003
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+      - serializedVersion: 2
+        time: 1
+        value: 0.50003
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_AnchoredPosition.x
+    path: 
+    classID: 224
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 2
+        time: 0
+        value: -500
+        inSlope: 0
+        outSlope: 1372
+        tangentMode: 69
+      - serializedVersion: 2
+        time: 1
+        value: 872
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_AnchoredPosition.y
+    path: 
+    classID: 224
+    script: {fileID: 0}
+  m_PPtrCurves: []
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 538195251
+      script: {fileID: 0}
+      typeID: 224
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 0
+      attribute: 1460864421
+      script: {fileID: 0}
+      typeID: 224
+      customType: 0
+      isPPtrCurve: 0
+    pptrCurveMapping: []
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 1
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 0
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 2
+        time: 0
+        value: 0.50003
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+      - serializedVersion: 2
+        time: 1
+        value: 0.50003
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_AnchoredPosition.x
+    path: 
+    classID: 224
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 2
+        time: 0
+        value: -500
+        inSlope: 0
+        outSlope: 1372
+        tangentMode: 69
+      - serializedVersion: 2
+        time: 1
+        value: 872
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_AnchoredPosition.y
+    path: 
+    classID: 224
+    script: {fileID: 0}
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_GenerateMotionCurves: 0
+  m_Events: []

+ 10 - 0
Assets/Resource/Animations/CreditAnimation.anim.meta

@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 114751d93e650564083a2133a0704c8c
+timeCreated: 1525935197
+licenseType: Pro
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 4
Assets/Resource/Logo.unity

@@ -654,10 +654,9 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   AuditEdition: 0
-  DebugMode: 1
-  CatchException: 0
-  DebugModeGo: {fileID: 1264531325540048, guid: b22fd2d9abc702d43ac62a412537d4e9,
-    type: 2}
+  DebugMode: 0
+  CatchException: 1
+  DebugModeGo: {fileID: 0}
 --- !u!4 &1833966245
 Transform:
   m_ObjectHideFlags: 0

+ 469 - 178
Assets/Resource/Prefab/PrefabUI/Canvas.prefab

@@ -1785,23 +1785,6 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1091134501069342
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 5
-  m_Component:
-  - component: {fileID: 224553634852416960}
-  - component: {fileID: 222591289977476722}
-  - component: {fileID: 114498475847799550}
-  m_Layer: 5
-  m_Name: Lc_CreditsIcon
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
 --- !u!1 &1091643528477278
 GameObject:
   m_ObjectHideFlags: 1
@@ -2639,6 +2622,25 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
+--- !u!1 &1131116199387150
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224286926421132302}
+  - component: {fileID: 222272580242881480}
+  - component: {fileID: 114623323122334780}
+  - component: {fileID: 225618534348331516}
+  - component: {fileID: 95843128272319654}
+  m_Layer: 5
+  m_Name: Lc_CreditsContent
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
 --- !u!1 &1132029890174958
 GameObject:
   m_ObjectHideFlags: 1
@@ -6543,6 +6545,23 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
+--- !u!1 &1323155070348656
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224292065189125252}
+  - component: {fileID: 222232862086860954}
+  - component: {fileID: 114449281358244130}
+  m_Layer: 5
+  m_Name: Lc_CreditsIcon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!1 &1323557481282122
 GameObject:
   m_ObjectHideFlags: 1
@@ -13061,6 +13080,24 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 0
+--- !u!1 &1628833920433472
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224780924512443308}
+  - component: {fileID: 222946092426614668}
+  - component: {fileID: 95933510365160074}
+  - component: {fileID: 114948230143055576}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
 --- !u!1 &1630288266415220
 GameObject:
   m_ObjectHideFlags: 1
@@ -14565,25 +14602,6 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1725791528168998
-GameObject:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  serializedVersion: 5
-  m_Component:
-  - component: {fileID: 224408829893308590}
-  - component: {fileID: 222761186055659266}
-  - component: {fileID: 114274527194757088}
-  - component: {fileID: 225803287742389922}
-  - component: {fileID: 114506604250666298}
-  m_Layer: 5
-  m_Name: Lc_CreditsContent
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 0
 --- !u!1 &1728263556549688
 GameObject:
   m_ObjectHideFlags: 1
@@ -19736,6 +19754,23 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
+--- !u!1 &1976634780262106
+GameObject:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 224406756361891514}
+  - component: {fileID: 222729875854704396}
+  - component: {fileID: 114061316065326532}
+  m_Layer: 5
+  m_Name: GameObject
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
 --- !u!1 &1978125670239990
 GameObject:
   m_ObjectHideFlags: 1
@@ -20294,6 +20329,23 @@ Animator:
   m_WarningMessage: 
   m_HasTransformHierarchy: 1
   m_AllowConstantClipSamplingOptimization: 1
+--- !u!95 &95843128272319654
+Animator:
+  serializedVersion: 3
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1131116199387150}
+  m_Enabled: 1
+  m_Avatar: {fileID: 0}
+  m_Controller: {fileID: 9100000, guid: 600ce29782a14244cb165426375fe30d, type: 2}
+  m_CullingMode: 0
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 0
+  m_LinearVelocityBlending: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
 --- !u!95 &95862101639255272
 Animator:
   serializedVersion: 3
@@ -20311,6 +20363,23 @@ Animator:
   m_WarningMessage: 
   m_HasTransformHierarchy: 1
   m_AllowConstantClipSamplingOptimization: 1
+--- !u!95 &95933510365160074
+Animator:
+  serializedVersion: 3
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1628833920433472}
+  m_Enabled: 0
+  m_Avatar: {fileID: 0}
+  m_Controller: {fileID: 9100000, guid: 600ce29782a14244cb165426375fe30d, type: 2}
+  m_CullingMode: 0
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 0
+  m_LinearVelocityBlending: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
 --- !u!114 &114000122766530038
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -23031,6 +23100,178 @@ MonoBehaviour:
   m_FillAmount: 1
   m_FillClockwise: 1
   m_FillOrigin: 0
+--- !u!114 &114061316065326532
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1976634780262106}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 1
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: '
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+
+    Test
+
+'
 --- !u!114 &114061384917677244
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -31751,9 +31992,9 @@ MonoBehaviour:
     m_Font: {fileID: 12800000, guid: 0e86defab91f2fb4189708f6dde11005, type: 3}
     m_FontSize: 25
     m_FontStyle: 0
-    m_BestFit: 0
+    m_BestFit: 1
     m_MinSize: 2
-    m_MaxSize: 40
+    m_MaxSize: 25
     m_Alignment: 4
     m_AlignByGeometry: 0
     m_RichText: 0
@@ -31916,39 +32157,6 @@ MonoBehaviour:
       m_Calls: []
     m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
       Culture=neutral, PublicKeyToken=null
---- !u!114 &114274527194757088
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1725791528168998}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_FontData:
-    m_Font: {fileID: 12800000, guid: 0e86defab91f2fb4189708f6dde11005, type: 3}
-    m_FontSize: 25
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 1
-    m_MaxSize: 40
-    m_Alignment: 1
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: "\u5236\u4F5C\u56E2\u961F"
 --- !u!114 &114274576137301818
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -39720,6 +39928,33 @@ MonoBehaviour:
   m_FillAmount: 1
   m_FillClockwise: 1
   m_FillOrigin: 0
+--- !u!114 &114449281358244130
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1323155070348656}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 21300000, guid: 9c5809f759997a043b3c85230b4118d1, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
 --- !u!114 &114451623073177100
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -41906,33 +42141,6 @@ MonoBehaviour:
   m_FillAmount: 1
   m_FillClockwise: 1
   m_FillOrigin: 0
---- !u!114 &114498475847799550
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1091134501069342}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
-      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
-  m_Sprite: {fileID: 21300000, guid: 9c5809f759997a043b3c85230b4118d1, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
 --- !u!114 &114498586538489020
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -42364,19 +42572,6 @@ MonoBehaviour:
   m_FillClockwise: 1
   m_FillOrigin: 0
   Draw: 0
---- !u!114 &114506604250666298
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1725791528168998}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_HorizontalFit: 0
-  m_VerticalFit: 2
 --- !u!114 &114510149324701602
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -46718,6 +46913,39 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_HorizontalFit: 0
   m_VerticalFit: 2
+--- !u!114 &114623323122334780
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1131116199387150}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 0e86defab91f2fb4189708f6dde11005, type: 3}
+    m_FontSize: 25
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 1
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u5236\u4F5C\u56E2\u961F"
 --- !u!114 &114624328544305154
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -55720,9 +55948,9 @@ MonoBehaviour:
     m_Font: {fileID: 12800000, guid: 0e86defab91f2fb4189708f6dde11005, type: 3}
     m_FontSize: 25
     m_FontStyle: 0
-    m_BestFit: 0
+    m_BestFit: 1
     m_MinSize: 2
-    m_MaxSize: 40
+    m_MaxSize: 25
     m_Alignment: 4
     m_AlignByGeometry: 0
     m_RichText: 0
@@ -61288,6 +61516,19 @@ MonoBehaviour:
   m_FillAmount: 1
   m_FillClockwise: 1
   m_FillOrigin: 0
+--- !u!114 &114948230143055576
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1628833920433472}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e806eebc7a2354847bb22ca7e911af4c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Text: {fileID: 0}
+  Texture2D: {fileID: 0}
 --- !u!114 &114948641218748184
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -68129,6 +68370,12 @@ CanvasRenderer:
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   m_GameObject: {fileID: 1219947057274828}
+--- !u!222 &222232862086860954
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1323155070348656}
 --- !u!222 &222235557630267260
 CanvasRenderer:
   m_ObjectHideFlags: 1
@@ -68315,6 +68562,12 @@ CanvasRenderer:
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   m_GameObject: {fileID: 1318742842951880}
+--- !u!222 &222272580242881480
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1131116199387150}
 --- !u!222 &222272899014468454
 CanvasRenderer:
   m_ObjectHideFlags: 1
@@ -70151,12 +70404,6 @@ CanvasRenderer:
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   m_GameObject: {fileID: 1864011496940892}
---- !u!222 &222591289977476722
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1091134501069342}
 --- !u!222 &222591666657782984
 CanvasRenderer:
   m_ObjectHideFlags: 1
@@ -70955,6 +71202,12 @@ CanvasRenderer:
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   m_GameObject: {fileID: 1769975900449792}
+--- !u!222 &222729875854704396
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1976634780262106}
 --- !u!222 &222731109262377048
 CanvasRenderer:
   m_ObjectHideFlags: 1
@@ -71153,12 +71406,6 @@ CanvasRenderer:
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   m_GameObject: {fileID: 1252886990923518}
---- !u!222 &222761186055659266
-CanvasRenderer:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1725791528168998}
 --- !u!222 &222762025779125274
 CanvasRenderer:
   m_ObjectHideFlags: 1
@@ -72281,6 +72528,12 @@ CanvasRenderer:
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   m_GameObject: {fileID: 1883595672544322}
+--- !u!222 &222946092426614668
+CanvasRenderer:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1628833920433472}
 --- !u!222 &222946666638071112
 CanvasRenderer:
   m_ObjectHideFlags: 1
@@ -77670,6 +77923,7 @@ RectTransform:
   - {fileID: 224246756044616158}
   - {fileID: 224694386806689142}
   - {fileID: 224444081237601850}
+  - {fileID: 224780924512443308}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -78923,6 +79177,25 @@ RectTransform:
   m_AnchoredPosition: {x: -174.61551, y: 115.323074}
   m_SizeDelta: {x: 100, y: 100}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &224286926421132302
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1131116199387150}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: -404.73096, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 224292065189125252}
+  m_Father: {fileID: 224750082116704262}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0.000005722046, y: -404.73096}
+  m_SizeDelta: {x: 800, y: 360}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!224 &224289193626966432
 RectTransform:
   m_ObjectHideFlags: 1
@@ -78978,6 +79251,24 @@ RectTransform:
   m_AnchoredPosition: {x: 85.5, y: 0.0000015623}
   m_SizeDelta: {x: 21.4, y: 21.4}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &224292065189125252
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1323155070348656}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: -258.99997, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224286926421132302}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 2.3509886e-38, y: 2.3509886e-38, z: 2.3509886e-38}
+  m_AnchorMin: {x: 0.5, y: 0}
+  m_AnchorMax: {x: 0.5, y: 0}
+  m_AnchoredPosition: {x: 0.00000047683716, y: -78.99997}
+  m_SizeDelta: {x: 514, y: 158}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!224 &224293032258212104
 RectTransform:
   m_ObjectHideFlags: 1
@@ -81286,6 +81577,24 @@ RectTransform:
   m_AnchoredPosition: {x: -55.9, y: 0.00000053644}
   m_SizeDelta: {x: 523.7, y: 62.8}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &224406756361891514
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1976634780262106}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 224780924512443308}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!224 &224408468955924492
 RectTransform:
   m_ObjectHideFlags: 1
@@ -81304,25 +81613,6 @@ RectTransform:
   m_AnchoredPosition: {x: -0.000010013, y: -33.1}
   m_SizeDelta: {x: 302.1, y: 33.1}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224408829893308590
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1725791528168998}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: -224.73111, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children:
-  - {fileID: 224553634852416960}
-  m_Father: {fileID: 224750082116704262}
-  m_RootOrder: 1
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -0.000009536743, y: -224.7311}
-  m_SizeDelta: {x: 800, y: 24.19929}
-  m_Pivot: {x: 0.5, y: 0.99999994}
 --- !u!224 &224409251433423548
 RectTransform:
   m_ObjectHideFlags: 1
@@ -84986,24 +85276,6 @@ RectTransform:
   m_AnchoredPosition: {x: 25.199951, y: -22.7675}
   m_SizeDelta: {x: 50.4, y: 45.535}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!224 &224553634852416960
-RectTransform:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1091134501069342}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: -24.19928, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children: []
-  m_Father: {fileID: 224408829893308590}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0}
-  m_AnchorMax: {x: 0.5, y: 0}
-  m_AnchoredPosition: {x: 0.00000048886, y: 0}
-  m_SizeDelta: {x: 514, y: 158}
-  m_Pivot: {x: 0.5, y: 1.0000004}
 --- !u!224 &224554522440556642
 RectTransform:
   m_ObjectHideFlags: 1
@@ -88789,8 +89061,8 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0.00000047683716}
+  m_SizeDelta: {x: 0, y: -16}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!224 &224711954824664146
 RectTransform:
@@ -89615,7 +89887,7 @@ RectTransform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
   - {fileID: 224787503810527600}
-  - {fileID: 224408829893308590}
+  - {fileID: 224286926421132302}
   m_Father: {fileID: 224509309068479312}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -90190,6 +90462,25 @@ RectTransform:
   m_AnchoredPosition: {x: -90, y: -120}
   m_SizeDelta: {x: 132, y: 43.74}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &224780924512443308
+RectTransform:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1628833920433472}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.25, y: -1693, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 224406756361891514}
+  m_Father: {fileID: 224229560457679016}
+  m_RootOrder: 43
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0.25, y: -1693}
+  m_SizeDelta: {x: 800, y: 2934}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!224 &224781376329263902
 RectTransform:
   m_ObjectHideFlags: 1
@@ -94482,8 +94773,8 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0.00000047683716}
+  m_SizeDelta: {x: 0, y: -16}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!224 &224980600945297986
 RectTransform:
@@ -95400,6 +95691,17 @@ CanvasGroup:
   m_Interactable: 1
   m_BlocksRaycasts: 1
   m_IgnoreParentGroups: 0
+--- !u!225 &225618534348331516
+CanvasGroup:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 1131116199387150}
+  m_Enabled: 1
+  m_Alpha: 0
+  m_Interactable: 1
+  m_BlocksRaycasts: 1
+  m_IgnoreParentGroups: 0
 --- !u!225 &225661652514433424
 CanvasGroup:
   m_ObjectHideFlags: 1
@@ -95609,17 +95911,6 @@ CanvasGroup:
   m_Interactable: 1
   m_BlocksRaycasts: 1
   m_IgnoreParentGroups: 0
---- !u!225 &225803287742389922
-CanvasGroup:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1725791528168998}
-  m_Enabled: 1
-  m_Alpha: 0
-  m_Interactable: 1
-  m_BlocksRaycasts: 1
-  m_IgnoreParentGroups: 0
 --- !u!225 &225804677554189020
 CanvasGroup:
   m_ObjectHideFlags: 1

+ 2 - 2
Assets/Resource/Shader/DragonboneUGUIMat.mat

@@ -8,7 +8,7 @@ Material:
   m_PrefabInternal: {fileID: 0}
   m_Name: DragonboneUGUIMat
   m_Shader: {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
-  m_ShaderKeywords: UNITY_UI_CLIP_RECT _EMISSION
+  m_ShaderKeywords: _EMISSION
   m_LightmapFlags: 1
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
@@ -39,7 +39,7 @@ Material:
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
     - _MainTex:
-        m_Texture: {fileID: 2800000, guid: c0256ea9e745dc544ae7035b55f87b84, type: 3}
+        m_Texture: {fileID: 2800000, guid: c486bd2e1e577b24a86013546709abda, type: 3}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
     - _MetallicGlossMap:

+ 1 - 1
Assets/Resource/Shader/GrayMat.mat

@@ -8,7 +8,7 @@ Material:
   m_PrefabInternal: {fileID: 0}
   m_Name: GrayMat
   m_Shader: {fileID: 4800000, guid: ac390d8200b91bd419e2d7b9e580d07d, type: 3}
-  m_ShaderKeywords: UNITY_UI_CLIP_RECT _EMISSION
+  m_ShaderKeywords: _EMISSION
   m_LightmapFlags: 1
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0

+ 1 - 1
Assets/Resource/XML/PlayerConfig.xml

@@ -1,5 +1,5 @@
 <PlayerConfig>
-  <Version value="39" />
+  <Version value="41" />
   <ReplayVersion value="1" />
   
   <ID value="Default" />

+ 3 - 0
Assets/Resource/XML/lan/ChineseSimplified.xml

@@ -119,6 +119,9 @@
 
 程序 水怪
 ]]></Lc_CreditsContent>
+    <Ld_Title desc=""><![CDATA[备份短码]]></Ld_Title>
+    <Ld_PlaceHolder desc=""><![CDATA[《我的甜蜜花园》
+我的用户短码为 : %NUM%]]></Ld_PlaceHolder>
     <M_Tit desc=""><![CDATA[成就]]></M_Tit>
     <J_Info0 desc=""><![CDATA[获得]]></J_Info0>
     <J_Info1 desc=""><![CDATA[使用技能:]]></J_Info1>

+ 2 - 0
Assets/Resource/XML/lan/ChineseTraditional.xml

@@ -119,6 +119,8 @@
 
 程式 水怪
 ]]></Lc_CreditsContent>
+    <Ld_Title desc=""><![CDATA[]]></Ld_Title>
+    <Ld_PlaceHolder desc=""><![CDATA[]]></Ld_PlaceHolder>
     <M_Tit desc=""><![CDATA[成就]]></M_Tit>
     <J_Info0 desc=""><![CDATA[獲得]]></J_Info0>
     <J_Info1 desc=""><![CDATA[使用技能:]]></J_Info1>

+ 2 - 0
Assets/Resource/XML/lan/English.xml

@@ -119,6 +119,8 @@ Music&Audio 十三叔
 
 Program 水怪
 ]]></Lc_CreditsContent>
+    <Ld_Title desc=""><![CDATA[]]></Ld_Title>
+    <Ld_PlaceHolder desc=""><![CDATA[]]></Ld_PlaceHolder>
     <M_Tit desc=""><![CDATA[Achievement]]></M_Tit>
     <J_Info0 desc=""><![CDATA[Get]]></J_Info0>
     <J_Info1 desc=""><![CDATA[Use skill:]]></J_Info1>

+ 16 - 0
Assets/Script/Label/CanvasLabel.cs

@@ -120,8 +120,11 @@ public class CanvasLabel
     public static string L_User = "L_User";
     public static string L_UserTit = "L_UserTit";
     public static string L_UserLab = "L_UserLab";
+    public static string L_UserBtns = "L_UserBtns";
     public static string L_ChangeBtn = "L_ChangeBtn";
     public static string L_ChangeLab = "L_ChangeLab";
+    public static string L_BackupBtn = "L_BackupBtn";
+    public static string L_BackupLab = "L_BackupLab";
     public static string L_ResetBtn = "L_ResetBtn";
     public static string L_ResetLab = "L_ResetLab";
     public static string L_Audio = "L_Audio";
@@ -176,6 +179,19 @@ public class CanvasLabel
     public static string Lc_Pos = "Lc_Pos";
     public static string Lc_CreditsContent = "Lc_CreditsContent";
     public static string Lc_CreditsIcon = "Lc_CreditsIcon";
+    public static string Ld_Info = "Ld_Info";
+    public static string Ld_Info0 = "Ld_Info0";
+    public static string Ld_Tit = "Ld_Tit";
+    public static string Ld_Cancel = "Ld_Cancel";
+    public static string Ld_CancelLab = "Ld_CancelLab";
+    public static string Ld_Confirm = "Ld_Confirm";
+    public static string Ld_ConfirmLab = "Ld_ConfirmLab";
+    public static string Ld_InputField0 = "Ld_InputField0";
+    public static string Ld_InputLab0 = "Ld_InputLab0";
+    public static string Ld_Placeholder0 = "Ld_Placeholder0";
+    public static string Ld_InputField = "Ld_InputField";
+    public static string Ld_InputLab = "Ld_InputLab";
+    public static string Ld_Placeholder = "Ld_Placeholder";
     public static string La_Info = "La_Info";
     public static string La_Info0 = "La_Info0";
     public static string La_Tit = "La_Tit";

+ 33 - 0
Assets/Script/Label/LanguageLabel.cs

@@ -134,6 +134,8 @@ public class LanguageLabel
     	public static string UI__Lb_Send2 = "UI__Lb_Send2";
     	public static string UI__Lb_Send3 = "UI__Lb_Send3";
     	public static string UI__Lc_CreditsContent = "UI__Lc_CreditsContent";
+    	public static string UI__Ld_Title = "UI__Ld_Title";
+    	public static string UI__Ld_PlaceHolder = "UI__Ld_PlaceHolder";
     	public static string UI__M_Tit = "UI__M_Tit";
     	public static string UI__J_Info0 = "UI__J_Info0";
     	public static string UI__J_Info1 = "UI__J_Info1";
@@ -399,6 +401,21 @@ public class LanguageLabel
     	public static string FlowerName__Flower48 = "FlowerName__Flower48";
     	public static string FlowerName__Flower49 = "FlowerName__Flower49";
     	public static string FlowerName__Flower50 = "FlowerName__Flower50";
+    	public static string FlowerName__Flower51 = "FlowerName__Flower51";
+    	public static string FlowerName__Flower52 = "FlowerName__Flower52";
+    	public static string FlowerName__Flower53 = "FlowerName__Flower53";
+    	public static string FlowerName__Flower54 = "FlowerName__Flower54";
+    	public static string FlowerName__Flower55 = "FlowerName__Flower55";
+    	public static string FlowerName__Flower56 = "FlowerName__Flower56";
+    	public static string FlowerName__Flower57 = "FlowerName__Flower57";
+    	public static string FlowerName__Flower58 = "FlowerName__Flower58";
+    	public static string FlowerName__Flower59 = "FlowerName__Flower59";
+    	public static string FlowerName__Flower60 = "FlowerName__Flower60";
+    	public static string FlowerName__Flower61 = "FlowerName__Flower61";
+    	public static string FlowerName__Flower62 = "FlowerName__Flower62";
+    	public static string FlowerName__Flower63 = "FlowerName__Flower63";
+    	public static string FlowerName__Flower64 = "FlowerName__Flower64";
+    	public static string FlowerName__Flower65 = "FlowerName__Flower65";
     	public static string FlowerColor = "FlowerColor";
     	public static string FlowerColor__Flower0 = "FlowerColor__Flower0";
     	public static string FlowerColor__Flower1 = "FlowerColor__Flower1";
@@ -451,6 +468,21 @@ public class LanguageLabel
     	public static string FlowerColor__Flower48 = "FlowerColor__Flower48";
     	public static string FlowerColor__Flower49 = "FlowerColor__Flower49";
     	public static string FlowerColor__Flower50 = "FlowerColor__Flower50";
+    	public static string FlowerColor__Flower51 = "FlowerColor__Flower51";
+    	public static string FlowerColor__Flower52 = "FlowerColor__Flower52";
+    	public static string FlowerColor__Flower53 = "FlowerColor__Flower53";
+    	public static string FlowerColor__Flower54 = "FlowerColor__Flower54";
+    	public static string FlowerColor__Flower55 = "FlowerColor__Flower55";
+    	public static string FlowerColor__Flower56 = "FlowerColor__Flower56";
+    	public static string FlowerColor__Flower57 = "FlowerColor__Flower57";
+    	public static string FlowerColor__Flower58 = "FlowerColor__Flower58";
+    	public static string FlowerColor__Flower59 = "FlowerColor__Flower59";
+    	public static string FlowerColor__Flower60 = "FlowerColor__Flower60";
+    	public static string FlowerColor__Flower61 = "FlowerColor__Flower61";
+    	public static string FlowerColor__Flower62 = "FlowerColor__Flower62";
+    	public static string FlowerColor__Flower63 = "FlowerColor__Flower63";
+    	public static string FlowerColor__Flower64 = "FlowerColor__Flower64";
+    	public static string FlowerColor__Flower65 = "FlowerColor__Flower65";
     	public static string SkillName = "SkillName";
     	public static string SkillName__Pack1 = "SkillName__Pack1";
     	public static string SkillName__Pack2 = "SkillName__Pack2";
@@ -990,6 +1022,7 @@ public class LanguageLabel
     	public static string Tip__Tip8 = "Tip__Tip8";
     	public static string Tip__Tip9 = "Tip__Tip9";
     	public static string Tip__Tip10 = "Tip__Tip10";
+    	public static string Tip__Tip11 = "Tip__Tip11";
     	public static string MinigameName = "MinigameName";
     	public static string MinigameName__Punch = "MinigameName__Punch";
     	public static string MinigameName__Memory = "MinigameName__Memory";

+ 3447 - 3447
Assets/Script/Manage/AnimManager.cs

@@ -1,3448 +1,3448 @@
-using UnityEngine;
-using UnityEngine.UI;
-using UnityEngine.Events;
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-public enum Curve
-{
-    Linear,
-    EaseOutQuad,
-}
-
-public enum EventType
-{
-    ForwardStart,
-    BackwardStart,
-    ForwardFinish,
-    BackwardFinish,
-}
-
-
-public delegate float TimerFunction(float value, float duration, float start, float delta);
-
-
-public delegate float ShakeFunctionF(float timer, float duration, int repeat, float start, float strength);
-
-public delegate Color ShakeFunctionC(float timer, float duration, int repeat, Color start, Color strength);
-
-public delegate Vector3 ShakeFunctionV(float timer, float duration, int repeat, Vector3 start, Vector3 strength);
-
-
-public delegate float CurveFunctionF(float timer, float duration, float start, float delta);
-
-public delegate Color CurveFunctionC(float timer, float duration, Color start, Color delta);
-
-public delegate Vector3 CurveFunctionV(float timer, float duration, Vector3 start, Vector3 delta);
-
-
-public class MaterialUnit
-{
-    public Material Material;
-    public Transform Transform;
-
-    public List<string> PropertyList;
-
-    public MaterialUnit(Material material, Transform transform, List<string> propertyList)
-    {
-        Material = material;
-        Transform = transform;
-        PropertyList = propertyList;
-    }
-
-
-    public void SetFloat(float value)
-    {
-        for (int i = 0; i < PropertyList.Count; i++)
-        {
-            Material.SetFloat(PropertyList[i], value);
-        }
-    }
-
-    public void SetColor(Color value)
-    {
-        for (int i = 0; i < PropertyList.Count; i++)
-        {
-            Material.SetColor(PropertyList[i], value);
-        }
-    }
-
-    public float GetFloat()
-    {
-        return Material.GetFloat(PropertyList[0]);
-    }
-
-    public Color GetColor()
-    {
-        return Material.GetColor(PropertyList[0]);
-    }
-}
-
-public class AnimManager : Regist
-{
-    #region 变量
-
-    public static List<MoveRoot> MoveForList = new List<MoveRoot>();
-    public static List<MoveRoot> MoveBacList = new List<MoveRoot>();
-
-    public static Dictionary<Curve, TimerFunction> TimerFunctionDic = new Dictionary<Curve, TimerFunction>();
-
-    public static Dictionary<Curve, ShakeFunctionF> ShakeFuncDicF = new Dictionary<Curve, ShakeFunctionF>();
-    public static Dictionary<Curve, ShakeFunctionC> ShakeFuncDicC = new Dictionary<Curve, ShakeFunctionC>();
-    public static Dictionary<Curve, ShakeFunctionV> ShakeFuncDicV = new Dictionary<Curve, ShakeFunctionV>();
-
-    public static Dictionary<Curve, CurveFunctionF> CurveFuncDicF = new Dictionary<Curve, CurveFunctionF>();
-    public static Dictionary<Curve, CurveFunctionC> CurveFuncDicC = new Dictionary<Curve, CurveFunctionC>();
-    public static Dictionary<Curve, CurveFunctionV> CurveFuncDicV = new Dictionary<Curve, CurveFunctionV>();
-
-    public static Dictionary<Transform, Shake> ShakeDic = new Dictionary<Transform, Shake>();
-    public static Dictionary<Transform, Move2D> MoveDic2D = new Dictionary<Transform, Move2D>();
-    public static Dictionary<Transform, Move3D> MoveDic3D = new Dictionary<Transform, Move3D>();
-    public static Dictionary<Transform, Zoom2D> ZoomDic2D = new Dictionary<Transform, Zoom2D>();
-
-    public static Dictionary<Transform, TweenSr> TweenSrDic = new Dictionary<Transform, TweenSr>();
-    public static Dictionary<Transform, TweenCG> TweenCgDic = new Dictionary<Transform, TweenCG>();
-    public static Dictionary<Transform, TweenGra> TweenGraDic = new Dictionary<Transform, TweenGra>();
-    public static Dictionary<Transform, TweenVec> TweenVecDic = new Dictionary<Transform, TweenVec>();
-    public static Dictionary<Transform, TweenEuler> TweenEulerDic = new Dictionary<Transform, TweenEuler>();
-    public static Dictionary<Transform, TweenFont> TweenFontDic = new Dictionary<Transform, TweenFont>();
-    public static Dictionary<Transform, TweenRect> TweenRectDic = new Dictionary<Transform, TweenRect>();
-    public static Dictionary<Transform, TweenScale> TweenScaleDic = new Dictionary<Transform, TweenScale>();
-    public static Dictionary<Transform, TweenOutline> TweenOutlineDic = new Dictionary<Transform, TweenOutline>();
-    public static Dictionary<Transform, TweenNumber> TweenNumberDic = new Dictionary<Transform, TweenNumber>();
-    public static Dictionary<Renderer, TweenRenderer> TweenRendererDic = new Dictionary<Renderer, TweenRenderer>();
-    public static Dictionary<AudioSource, TweenAudio> TweenAudioDic = new Dictionary<AudioSource, TweenAudio>();
-
-    public static Dictionary<MaterialUnit, TweenMatColor> TweenMatColorDic = new Dictionary<MaterialUnit, TweenMatColor>();
-    public static Dictionary<MaterialUnit, TweenMatFloat> TweenMatFloatDic = new Dictionary<MaterialUnit, TweenMatFloat>();
-    public static Dictionary<MeshFilter, TweenGrayMesh> TweenGrayMeshDic = new Dictionary<MeshFilter, TweenGrayMesh>();
-
-    public static Dictionary<Transform, StreamScale> StreamScaleDic = new Dictionary<Transform, StreamScale>();
-
-    #endregion
-
-    public void Update()
-    {
-        for (int i = 0; i < MoveForList.Count; i++)
-        {
-            MoveRoot move = MoveForList[i];
-
-            if (move.DoForward())
-            {
-                if (MoveForList.Remove(move))
-                {
-                    i--;
-                }
-            }
-        }
-
-        for (int i = 0; i < MoveBacList.Count; i++)
-        {
-            MoveRoot move = MoveBacList[i];
-
-            if (move.DoBackward())
-            {
-                if (MoveBacList.Remove(move))
-                {
-                    i--;
-                }
-            }
-        }
-    }
-
-
-    public override bool InitAtOnce()
-    {
-        if (base.InitAtOnce())
-        {
-            return true;
-        }
-
-        TimerFunctionDic.Add(Curve.Linear, LinearTimer);
-        TimerFunctionDic.Add(Curve.EaseOutQuad, EaseOutQuadTimer);
-
-        ShakeFuncDicF.Add(Curve.Linear, ShakeLinear);
-        ShakeFuncDicF.Add(Curve.EaseOutQuad, ShakeEaseOutQuad);
-
-        ShakeFuncDicC.Add(Curve.Linear, ShakeLinear);
-        ShakeFuncDicC.Add(Curve.EaseOutQuad, ShakeEaseOutQuad);
-
-        ShakeFuncDicV.Add(Curve.Linear, ShakeLinear);
-        ShakeFuncDicV.Add(Curve.EaseOutQuad, ShakeEaseOutQuad);
-
-        CurveFuncDicF.Add(Curve.Linear, Linear);
-        CurveFuncDicF.Add(Curve.EaseOutQuad, EaseOutQuad);
-
-        CurveFuncDicC.Add(Curve.Linear, Linear);
-        CurveFuncDicC.Add(Curve.EaseOutQuad, EaseOutQuad);
-
-        CurveFuncDicV.Add(Curve.Linear, Linear);
-        CurveFuncDicV.Add(Curve.EaseOutQuad, EaseOutQuad);
-
-        enabled = true;
-
-        return false;
-    }
-
-
-    #region 曲线
-
-    public static float LinearTimer(float value, float duration, float start, float delta)
-    {
-        return (value - start)*duration/delta;
-    }
-
-    public static float EaseOutQuadTimer(float value, float duration, float start, float delta)
-    {
-        return ((2 - Mathf.Sqrt(4 - 4*(value - start)/delta))/2)*duration;
-    }
-
-
-    public static float ShakeLinear(float timer, float duration, int repeat, float start, float strength)
-    {
-        float sliceTime = duration/(4*repeat);
-
-        for (int i = 0; i < repeat*4; i += 4)
-        {
-            if (timer > duration)
-            {
-                return start;
-            }
-
-            if (timer <= (i + 1)*sliceTime)
-            {
-                timer -= (i)*sliceTime;
-
-                return Linear(timer, sliceTime, start, strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 3)*sliceTime)
-            {
-                timer -= (i + 1)*sliceTime;
-
-                return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 4)*sliceTime)
-            {
-                timer -= (i + 3)*sliceTime;
-
-                return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
-            }
-        }
-
-        throw new Exception();
-    }
-
-    public static Color ShakeLinear(float timer, float duration, int repeat, Color start, Color strength)
-    {
-        float sliceTime = duration/(4*repeat);
-
-        for (int i = 0; i < repeat*4; i += 4)
-        {
-            if (timer > duration)
-            {
-                return start;
-            }
-
-            if (timer <= (i + 1)*sliceTime)
-            {
-                timer -= (i)*sliceTime;
-
-                return Linear(timer, sliceTime, start, strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 3)*sliceTime)
-            {
-                timer -= (i + 1)*sliceTime;
-
-                return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 4)*sliceTime)
-            {
-                timer -= (i + 3)*sliceTime;
-
-                return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
-            }
-        }
-
-        throw new Exception();
-    }
-
-    public static Vector3 ShakeLinear(float timer, float duration, int repeat, Vector3 start, Vector3 strength)
-    {
-        float sliceTime = duration/(4*repeat);
-
-        for (int i = 0; i < repeat*4; i += 4)
-        {
-            if (timer > duration)
-            {
-                return start;
-            }
-
-            if (timer <= (i + 1)*sliceTime)
-            {
-                timer -= (i)*sliceTime;
-
-                return Linear(timer, sliceTime, start, strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 3)*sliceTime)
-            {
-                timer -= (i + 1)*sliceTime;
-
-                return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 4)*sliceTime)
-            {
-                timer -= (i + 3)*sliceTime;
-
-                return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
-            }
-        }
-
-        throw new Exception();
-    }
-
-
-    public static float ShakeEaseOutQuad(float timer, float duration, int repeat, float start, float strength)
-    {
-        float sliceTime = duration/(4*repeat);
-
-        for (int i = 0; i < repeat*4; i += 4)
-        {
-            if (timer > duration)
-            {
-                return start;
-            }
-
-            if (timer <= (i + 1)*sliceTime)
-            {
-                timer -= (i)*sliceTime;
-
-                return EaseOutQuad(timer, sliceTime, start, strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 3)*sliceTime)
-            {
-                timer -= (i + 1)*sliceTime;
-
-                return EaseOutQuad(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 4)*sliceTime)
-            {
-                timer -= (i + 3)*sliceTime;
-
-                return EaseOutQuad(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
-            }
-        }
-
-        throw new Exception();
-    }
-
-    public static Color ShakeEaseOutQuad(float timer, float duration, int repeat, Color start, Color strength)
-    {
-        float sliceTime = duration/(4*repeat);
-
-        for (int i = 0; i < repeat*4; i += 4)
-        {
-            if (timer > duration)
-            {
-                return start;
-            }
-
-            if (timer <= (i + 1)*sliceTime)
-            {
-                timer -= (i)*sliceTime;
-
-                return EaseOutQuad(timer, sliceTime, start, strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 3)*sliceTime)
-            {
-                timer -= (i + 1)*sliceTime;
-
-                return EaseOutQuad(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 4)*sliceTime)
-            {
-                timer -= (i + 3)*sliceTime;
-
-                return EaseOutQuad(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
-            }
-        }
-
-        throw new Exception();
-    }
-
-    public static Vector3 ShakeEaseOutQuad(float timer, float duration, int repeat, Vector3 start, Vector3 strength)
-    {
-        float sliceTime = duration/(4*repeat);
-
-        for (int i = 0; i < repeat*4; i += 4)
-        {
-            if (timer > duration)
-            {
-                return start;
-            }
-
-            if (timer <= (i + 1)*sliceTime)
-            {
-                timer -= (i)*sliceTime;
-
-                return EaseOutQuad(timer, sliceTime, start, strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 3)*sliceTime)
-            {
-                timer -= (i + 1)*sliceTime;
-
-                return EaseOutQuad(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
-            }
-            else if (timer <= (i + 4)*sliceTime)
-            {
-                timer -= (i + 3)*sliceTime;
-
-                return EaseOutQuad(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
-            }
-        }
-
-        throw new Exception();
-    }
-
-
-    public static float Linear(float timer, float duration, float start, float delta)
-    {
-        if (timer >= duration)
-        {
-            return start + delta;
-        }
-
-        if (duration.Equal(0))
-        {
-            return delta + start;
-        }
-        else
-        {
-            return delta*timer/duration + start;
-        }
-    }
-
-    public static Color Linear(float timer, float duration, Color start, Color delta)
-    {
-        return new Color(Linear(timer, duration, start.r, delta.r), Linear(timer, duration, start.g, delta.g), Linear(timer, duration, start.b, delta.b), Linear(timer, duration, start.a, delta.a));
-    }
-
-    public static Vector3 Linear(float timer, float duration, Vector3 start, Vector3 delta)
-    {
-        return new Vector3(Linear(timer, duration, start.x, delta.x), Linear(timer, duration, start.y, delta.y), Linear(timer, duration, start.z, delta.z));
-    }
-
-
-    public static float EaseOutQuad(float timer, float duration, float start, float delta)
-    {
-        if (timer >= duration)
-        {
-            return start + delta;
-        }
-
-        if (duration.Equal(0))
-        {
-            return delta + start;
-        }
-        else
-        {
-            timer /= duration;
-            
-            return -delta*timer*(timer - 2) + start;
-        }
-    }
-
-    public static Color EaseOutQuad(float timer, float duration, Color start, Color delta)
-    {
-        return new Color(EaseOutQuad(timer, duration, start.r, delta.r), EaseOutQuad(timer, duration, start.g, delta.g), EaseOutQuad(timer, duration, start.b, delta.b), EaseOutQuad(timer, duration, start.a, delta.a));
-    }
-
-    public static Vector3 EaseOutQuad(float timer, float duration, Vector3 start, Vector3 delta)
-    {
-        return new Vector3(EaseOutQuad(timer, duration, start.x, delta.x), EaseOutQuad(timer, duration, start.y, delta.y), EaseOutQuad(timer, duration, start.z, delta.z));
-    }
-
-    #endregion
-
-    #region 播放动画
-
-    public static Shake Shake(Transform target, float duration, int repeat, Vector3 strength, Curve curve)
-    {
-        Shake move;
-
-        if (ShakeDic.TryGetValue(target, out move))
-        {
-            move.StartShake(repeat, duration, strength, curve);
-        }
-        else
-        {
-            move = CreateShake(target);
-
-            move.StartShake(repeat, duration, strength, curve);
-        }
-
-        return move;
-    }
-
-
-    public static Move2D Move2D(Transform target, Vector3 destination, float duration, bool local, Curve curve)
-    {
-        Move2D move;
-
-        if (local)
-        {
-            destination.z = target.localPosition.z;
-        }
-        else
-        {
-            destination.z = target.position.z;
-        }
-
-        if (MoveDic2D.TryGetValue(target, out move))
-        {
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-        else
-        {
-            move = CreateMove2D(target);
-
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-    }
-
-    public static Move3D Move3D(Transform target, Vector3 destination, float duration, bool local, Curve curve)
-    {
-        Move3D move;
-
-        if (MoveDic3D.TryGetValue(target, out move))
-        {
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-        else
-        {
-            move = CreateMove3D(target);
-
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-    }
-
-    public static Move2D MoveOffset2D(Transform target, Vector3 offset, float duration, bool local, Curve curve)
-    {
-        Move2D move;
-
-        Vector3 destination;
-
-        if (local)
-        {
-            destination = target.localPosition + offset;
-
-            destination.z = target.localPosition.z;
-        }
-        else
-        {
-            destination = target.position + offset;
-
-            destination.z = target.position.z;
-        }
-
-        if (MoveDic2D.TryGetValue(target, out move))
-        {
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-        else
-        {
-            move = CreateMove2D(target);
-
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-    }
-
-    public static Move3D MoveOffset3D(Transform target, Vector3 offset, float duration, bool local, Curve curve)
-    {
-        Move3D move;
-
-        Vector3 destination;
-
-        if (local)
-        {
-            destination = target.localPosition + offset;
-        }
-        else
-        {
-            destination = target.position + offset;
-        }
-
-        if (MoveDic3D.TryGetValue(target, out move))
-        {
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-        else
-        {
-            move = CreateMove3D(target);
-
-            move.StartMove(destination, duration, local, curve);
-
-            return move;
-        }
-    }
-
-
-    public static Zoom2D Zoom2D(Transform target, float origin, float destination, float duration, float stay, Transform zoom, Curve curve)
-    {
-        Zoom2D move;
-
-        if (ZoomDic2D.TryGetValue(target, out move))
-        {
-            move.StartZoom(origin, destination, duration, stay, zoom, curve);
-        }
-        else
-        {
-            move = CreateZoom2D(target);
-
-            move.StartZoom(origin, destination, duration, stay, zoom, curve);
-        }
-
-        return move;
-    }
-
-    public static Zoom2D Zoom2D(Transform target, float destination, float duration, float stay, Transform zoom, Curve curve)
-    {
-        Zoom2D move;
-
-        Camera camera = target.GetComponent<Camera>();
-
-        if (ZoomDic2D.TryGetValue(target, out move))
-        {
-            move.StartZoom(camera.orthographicSize, destination, duration, stay, zoom, curve);
-        }
-        else
-        {
-            move = CreateZoom2D(target);
-
-            move.StartZoom(camera.orthographicSize, destination, duration, stay, zoom, curve);
-        }
-
-        return move;
-    }
-
-
-    public static StreamScale StreamForScale(Transform target)
-    {
-        StreamScale stream;
-
-        if (StreamScaleDic.TryGetValue(target, out stream))
-        {
-            stream.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return stream;
-    }
-
-    public static StreamScale StreamBacScale(Transform target)
-    {
-        StreamScale stream;
-
-        if (StreamScaleDic.TryGetValue(target, out stream))
-        {
-            stream.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return stream;
-    }
-
-    public static StreamScale StreamReForScale(Transform target)
-    {
-        StreamScale stream;
-
-        if (StreamScaleDic.TryGetValue(target, out stream))
-        {
-            stream.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return stream;
-    }
-
-    public static StreamScale StreamReBacScale(Transform target)
-    {
-        StreamScale stream;
-
-        if (StreamScaleDic.TryGetValue(target, out stream))
-        {
-            stream.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return stream;
-    }
-
-
-    public static TweenSr TweenForSr(Transform target)
-    {
-        TweenSr tween;
-
-        if (TweenSrDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRenderer TweenForRenderer(Renderer target)
-    {
-        TweenRenderer tween;
-
-        if (TweenRendererDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenCG TweenForCG(Transform target)
-    {
-        TweenCG tween;
-
-        if (TweenCgDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenGra TweenForGra(Transform target)
-    {
-        TweenGra tween;
-
-        if (TweenGraDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenEuler TweenForEuler(Transform target)
-    {
-        TweenEuler tween;
-
-        if (TweenEulerDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenVec TweenForVec(Transform target)
-    {
-        TweenVec tween;
-
-        if (TweenVecDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenFont TweenForFont(Transform target)
-    {
-        TweenFont tween;
-
-        if (TweenFontDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRect TweenForRect(Transform target)
-    {
-        TweenRect tween;
-
-        if (TweenRectDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenScale TweenForScale(Transform target)
-    {
-        TweenScale tween;
-
-        if (TweenScaleDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenForAudio(Transform target)
-    {
-        TweenAudio tween;
-        AudioSource audioSource = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenForAudio(AudioSource audioSource)
-    {
-        TweenAudio tween;
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenOutline TweenForOutline(Transform target)
-    {
-        TweenOutline tween;
-
-        if (TweenOutlineDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenNumber TweenForNumber(Transform target)
-    {
-        TweenNumber tween;
-
-        if (TweenNumberDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatFloat TweenForMatFloat(MaterialUnit target)
-    {
-        TweenMatFloat tween;
-
-        if (TweenMatFloatDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatColor TweenForMatColor(MaterialUnit target)
-    {
-        TweenMatColor tween;
-
-        if (TweenMatColorDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenGrayMesh TweenForGrayMesh(MeshFilter target)
-    {
-        TweenGrayMesh tween;
-
-        if (TweenGrayMeshDic.TryGetValue(target, out tween))
-        {
-            tween.StartForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-
-    public static TweenSr TweenBacSr(Transform target)
-    {
-        TweenSr tween;
-
-        if (TweenSrDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRenderer TweenBacRenderer(Renderer target)
-    {
-        TweenRenderer tween;
-
-        if (TweenRendererDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenCG TweenBacCG(Transform target)
-    {
-        TweenCG tween;
-
-        if (TweenCgDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenGra TweenBacGra(Transform target)
-    {
-        TweenGra tween;
-
-        if (TweenGraDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception(target.name);
-        }
-
-        return tween;
-    }
-
-    public static TweenVec TweenBacVec(Transform target)
-    {
-        TweenVec tween;
-
-        if (TweenVecDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception(target.name);
-        }
-
-        return tween;
-    }
-
-    public static TweenEuler TweenBacEuler(Transform target)
-    {
-        TweenEuler tween;
-
-        if (TweenEulerDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception(target.name);
-        }
-
-        return tween;
-    }
-
-    public static TweenFont TweenBacFont(Transform target)
-    {
-        TweenFont tween;
-
-        if (TweenFontDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRect TweenBacRect(Transform target)
-    {
-        TweenRect tween;
-
-        if (TweenRectDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenScale TweenBacScale(Transform target)
-    {
-        TweenScale tween;
-
-        if (TweenScaleDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenBacAudio(Transform target)
-    {
-        TweenAudio tween;
-        AudioSource audioSource = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenBacAudio(AudioSource audioSource)
-    {
-        TweenAudio tween;
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenOutline TweenBacOutline(Transform target)
-    {
-        TweenOutline tween;
-
-        if (TweenOutlineDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenNumber TweenBacNumber(Transform target)
-    {
-        TweenNumber tween;
-
-        if (TweenNumberDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatFloat TweenBacMatFloat(MaterialUnit target)
-    {
-        TweenMatFloat tween;
-
-        if (TweenMatFloatDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatColor TweenBacMatColor(MaterialUnit target)
-    {
-        TweenMatColor tween;
-
-        if (TweenMatColorDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenGrayMesh TweenBacGrayMesh(MeshFilter target)
-    {
-        TweenGrayMesh tween;
-
-        if (TweenGrayMeshDic.TryGetValue(target, out tween))
-        {
-            tween.StartBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-
-    public static TweenSr TweenReForSr(Transform target)
-    {
-        TweenSr tween;
-
-        if (TweenSrDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRenderer TweenReForRenderer(Renderer target)
-    {
-        TweenRenderer tween;
-
-        if (TweenRendererDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenCG TweenReForCG(Transform target)
-    {
-        TweenCG tween;
-
-        if (TweenCgDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenGra TweenReForGra(Transform target)
-    {
-        TweenGra tween;
-
-        if (TweenGraDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenVec TweenReForVec(Transform target)
-    {
-        TweenVec tween;
-
-        if (TweenVecDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenEuler TweenReForEuler(Transform target)
-    {
-        TweenEuler tween;
-
-        if (TweenEulerDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenFont TweenReForFont(Transform target)
-    {
-        TweenFont tween;
-
-        if (TweenFontDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRect TweenReForRect(Transform target)
-    {
-        TweenRect tween;
-
-        if (TweenRectDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenScale TweenReForScale(Transform target)
-    {
-        TweenScale tween;
-
-        if (TweenScaleDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenReForAudio(Transform target)
-    {
-        TweenAudio tween;
-        AudioSource audioSource = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenReForAudio(AudioSource audioSource)
-    {
-        TweenAudio tween;
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenOutline TweenReForOutline(Transform target)
-    {
-        TweenOutline tween;
-
-        if (TweenOutlineDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenNumber TweenReForNumber(Transform target)
-    {
-        TweenNumber tween;
-
-        if (TweenNumberDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatFloat TweenReForMatFloat(MaterialUnit target)
-    {
-        TweenMatFloat tween;
-
-        if (TweenMatFloatDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatColor TweenReForMatColor(MaterialUnit target)
-    {
-        TweenMatColor tween;
-
-        if (TweenMatColorDic.TryGetValue(target, out tween))
-        {
-            tween.ReForward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-
-    public static TweenSr TweenReBacSr(Transform target)
-    {
-        TweenSr tween;
-
-        if (TweenSrDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRenderer TweenReBacRenderer(Renderer target)
-    {
-        TweenRenderer tween;
-
-        if (TweenRendererDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenCG TweenReBacCG(Transform target)
-    {
-        TweenCG tween;
-
-        if (TweenCgDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenGra TweenReBacGra(Transform target)
-    {
-        TweenGra tween;
-
-        if (TweenGraDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception(target.name);
-        }
-
-        return tween;
-    }
-
-    public static TweenVec TweenReBacVec(Transform target)
-    {
-        TweenVec tween;
-
-        if (TweenVecDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception(target.name);
-        }
-
-        return tween;
-    }
-
-    public static TweenEuler TweenReBacEuler(Transform target)
-    {
-        TweenEuler tween;
-
-        if (TweenEulerDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception(target.name);
-        }
-
-        return tween;
-    }
-
-    public static TweenFont TweenReBacFont(Transform target)
-    {
-        TweenFont tween;
-
-        if (TweenFontDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenRect TweenReBacRect(Transform target)
-    {
-        TweenRect tween;
-
-        if (TweenRectDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenScale TweenReBacScale(Transform target)
-    {
-        TweenScale tween;
-
-        if (TweenScaleDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenReBacAudio(Transform target)
-    {
-        TweenAudio tween;
-        AudioSource audioSource = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenAudio TweenReBacAudio(AudioSource audioSource)
-    {
-        TweenAudio tween;
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenOutline TweenReBacOutline(Transform target)
-    {
-        TweenOutline tween;
-
-        if (TweenOutlineDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenNumber TweenReBacNumber(Transform target)
-    {
-        TweenNumber tween;
-
-        if (TweenNumberDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatFloat TweenReBacMatFloat(MaterialUnit target)
-    {
-        TweenMatFloat tween;
-
-        if (TweenMatFloatDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    public static TweenMatColor TweenReBacMatColor(MaterialUnit target)
-    {
-        TweenMatColor tween;
-
-        if (TweenMatColorDic.TryGetValue(target, out tween))
-        {
-            tween.ReBackward();
-        }
-        else
-        {
-            throw new Exception();
-        }
-
-        return tween;
-    }
-
-    #endregion
-
-    #region 获取动画
-
-    public static float GetTimerVec(Vector3 value, float duration, Vector3 start, Vector3 delta, Curve curve)
-    {
-        if (!delta.x.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.x, duration, start.x, delta.x);
-        }
-        else if (!delta.y.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.y, duration, start.y, delta.y);
-        }
-        else if (!delta.z.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.z, duration, start.z, delta.z);
-        }
-        else
-        {
-            throw new Exception();
-        }
-    }
-
-    public static float GetTimerFloat(float value, float duration, float start, float delta, Curve curve)
-    {
-        return TimerFunctionDic[curve](value, duration, start, delta);
-    }
-
-    public static float GetTimerColor(Color value, float duration, Color start, Color delta, Curve curve)
-    {
-        if (!delta.r.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.r, duration, start.r, delta.r);
-        }
-        else if (!delta.g.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.g, duration, start.g, delta.g);
-        }
-        else if (!delta.b.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.b, duration, start.b, delta.b);
-        }
-        else if (!delta.a.Equal(0))
-        {
-            return TimerFunctionDic[curve](value.a, duration, start.a, delta.a);
-        }
-        else
-        {
-            throw new Exception();
-        }
-    }
-
-
-    public static Shake GetShake(Transform target)
-    {
-        Shake move;
-
-        if (ShakeDic.TryGetValue(target, out move))
-        {
-            return move;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static Move2D GetMove2D(Transform target)
-    {
-        Move2D move;
-
-        if (MoveDic2D.TryGetValue(target, out move))
-        {
-            return move;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static Move3D GetMove3D(Transform target)
-    {
-        Move3D move;
-
-        if (MoveDic3D.TryGetValue(target, out move))
-        {
-            return move;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static Zoom2D GetZoom2D(Transform target)
-    {
-        Zoom2D move;
-
-        if (ZoomDic2D.TryGetValue(target, out move))
-        {
-            return move;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-
-    public static StreamScale GetStreamScale(Transform target)
-    {
-        StreamScale stream;
-
-        if (StreamScaleDic.TryGetValue(target, out stream))
-        {
-            return stream;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-
-    public static TweenSr GetTweenSr(Transform target)
-    {
-        TweenSr tween;
-
-        if (TweenSrDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenRenderer GetTweenRenderer(Renderer target)
-    {
-        TweenRenderer tween;
-
-        if (TweenRendererDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenCG GetTweenCG(Transform target)
-    {
-        TweenCG tween;
-
-        if (TweenCgDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenGra GetTweenGra(Transform target)
-    {
-        TweenGra tween;
-
-        if (TweenGraDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenVec GetTweenVec(Transform target)
-    {
-        TweenVec tween;
-
-        if (TweenVecDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenEuler GetTweenEuler(Transform target)
-    {
-        TweenEuler tween;
-
-        if (TweenEulerDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenFont GetTweenFont(Transform target)
-    {
-        TweenFont tween;
-
-        if (TweenFontDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenRect GetTweenRect(Transform target)
-    {
-        TweenRect tween;
-
-        if (TweenRectDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenScale GetTweenScale(Transform target)
-    {
-        TweenScale tween;
-
-        if (TweenScaleDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenAudio GetTweenAudio(Transform target)
-    {
-        TweenAudio tween;
-        AudioSource audioSource = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenAudio GetTweenAudio(AudioSource audioSource)
-    {
-        TweenAudio tween;
-
-        if (TweenAudioDic.TryGetValue(audioSource, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenOutline GetTweenOutline(Transform target)
-    {
-        TweenOutline tween;
-
-        if (TweenOutlineDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenNumber GetTweenNumber(Transform target)
-    {
-        TweenNumber tween;
-
-        if (TweenNumberDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenMatFloat GetTweenMatFloat(MaterialUnit target)
-    {
-        TweenMatFloat tween;
-
-        if (TweenMatFloatDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenMatColor GetTweenMatColor(MaterialUnit target)
-    {
-        TweenMatColor tween;
-
-        if (TweenMatColorDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    public static TweenGrayMesh GetTweenGrayMesh(MeshFilter target)
-    {
-        TweenGrayMesh tween;
-
-        if (TweenGrayMeshDic.TryGetValue(target, out tween))
-        {
-            return tween;
-        }
-        else
-        {
-            return null;
-        }
-    }
-
-    #endregion
-
-    #region 创建动画
-
-    public static Shake CreateShake(Transform target)
-    {
-        if (ShakeDic.ContainsKey(target))
-        {
-            Shake shake = ShakeDic[target];
-
-            shake.Pause();
-
-            ShakeDic[target] = new Shake(target);
-
-            return ShakeDic[target];
-        }
-        else
-        {
-            Shake shake = new Shake(target);
-
-            ShakeDic.Add(target, shake);
-
-            return shake;
-        }
-    }
-
-    public static Move2D CreateMove2D(Transform target)
-    {
-        if (MoveDic2D.ContainsKey(target))
-        {
-            Move2D move2D = MoveDic2D[target];
-
-            move2D.Pause();
-
-            MoveDic2D[target] = new Move2D(target);
-
-            return MoveDic2D[target];
-        }
-        else
-        {
-            Move2D move2D = new Move2D(target);
-
-            MoveDic2D.Add(target, move2D);
-
-            return move2D;
-        }
-    }
-
-    public static Move3D CreateMove3D(Transform target)
-    {
-        if (MoveDic3D.ContainsKey(target))
-        {
-            Move3D move3D = MoveDic3D[target];
-
-            move3D.Pause();
-
-            MoveDic3D[target] = new Move3D(target);
-
-            return MoveDic3D[target];
-        }
-        else
-        {
-            Move3D move3D = new Move3D(target);
-
-            MoveDic3D.Add(target, move3D);
-
-            return move3D;
-        }
-    }
-
-    public static Zoom2D CreateZoom2D(Transform target)
-    {
-        if (ZoomDic2D.ContainsKey(target))
-        {
-            Zoom2D zoom2D = ZoomDic2D[target];
-
-            zoom2D.Pause();
-
-            ZoomDic2D[target] = new Zoom2D(target.GetComponent<Camera>());
-
-            return ZoomDic2D[target];
-        }
-        else
-        {
-            Zoom2D zoom2D = new Zoom2D(target.GetComponent<Camera>());
-
-            ZoomDic2D.Add(target, zoom2D);
-
-            return zoom2D;
-        }
-    }
-
-
-    public static StreamScale CreateStreamScale(Transform target, List<float> delayList, List<float> durationList, List<VecPair> destKvList, bool originActive, bool destActive, Curve curve, bool cg = false, List<UnityAction> startActionList = null, List<UnityAction> finishActionList = null)
-    {
-        StreamScale streamScale;
-
-        if (StreamScaleDic.ContainsKey(target))
-        {
-            streamScale = StreamScaleDic[target];
-
-            streamScale.Pause();
-
-            StreamScaleDic[target] = new StreamScale(target, delayList, durationList, destKvList, originActive, destActive, curve, cg, startActionList, finishActionList);
-
-            return StreamScaleDic[target];
-        }
-        else
-        {
-            streamScale = new StreamScale(target, delayList, durationList, destKvList, originActive, destActive, curve, cg, startActionList, finishActionList);
-
-            StreamScaleDic.Add(target, streamScale);
-
-            return streamScale;
-        }
-    }
-
-    public static StreamScale CreateStreamScale(Transform target, List<float> delayList, List<float> durationList, List<Vector3> destList, bool originActive, bool destActive, Curve curve, bool cg = false, List<UnityAction> startActionList = null, List<UnityAction> finishActionList = null)
-    {
-        StreamScale streamScale;
-
-        if (StreamScaleDic.ContainsKey(target))
-        {
-            streamScale = StreamScaleDic[target];
-
-            streamScale.Pause();
-
-            StreamScaleDic[target] = new StreamScale(target, delayList, durationList, destList, originActive, destActive, curve, cg, startActionList, finishActionList);
-
-            return StreamScaleDic[target];
-        }
-        else
-        {
-            streamScale = new StreamScale(target, delayList, durationList, destList, originActive, destActive, curve, cg, startActionList, finishActionList);
-
-            StreamScaleDic.Add(target, streamScale);
-
-            return streamScale;
-        }
-    }
-
-
-    public static TweenSr CreateTweenSr(Transform target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenSr tweenSr;
-        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
-
-        Color origin = sr.color;
-        Color destination = sr.color;
-
-        origin.a = originAlpha;
-        destination.a = destAlpha;
-
-        if (TweenSrDic.ContainsKey(target))
-        {
-            tweenSr = TweenSrDic[target];
-
-            tweenSr.Pause();
-
-            TweenSrDic[target] = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenSrDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenSrDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-    public static TweenSr CreateTweenSr(Transform target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenSr tweenSr;
-        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
-
-        Color destination = sr.color;
-
-        destination.a = destAlpha;
-
-        if (TweenSrDic.ContainsKey(target))
-        {
-            tweenSr = TweenSrDic[target];
-
-            tweenSr.Pause();
-
-            TweenSrDic[target] = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenSrDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenSrDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-    public static TweenSr CreateTweenSr(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenSr tweenSr;
-        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
-
-        if (TweenSrDic.ContainsKey(target))
-        {
-            tweenSr = TweenSrDic[target];
-
-            tweenSr.Pause();
-
-            TweenSrDic[target] = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenSrDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenSrDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-    public static TweenSr CreateTweenSr(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenSr tweenSr;
-        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
-
-        if (TweenSrDic.ContainsKey(target))
-        {
-            tweenSr = TweenSrDic[target];
-
-            tweenSr.Pause();
-
-            TweenSrDic[target] = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenSrDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenSrDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-
-    public static TweenRenderer CreateTweenRenderer(Renderer target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenRenderer tweenSr;
-        Color origin = target.sharedMaterial.GetColor("_Color");
-        Color destination = target.sharedMaterial.GetColor("_Color");
-
-        origin.a = originAlpha;
-        destination.a = destAlpha;
-
-        if (TweenRendererDic.ContainsKey(target))
-        {
-            tweenSr = TweenRendererDic[target];
-
-            tweenSr.Pause();
-
-            TweenRendererDic[target] = new TweenRenderer(target, origin, destination, duration, originActive, destActive, curve, cg, group);
-            tweenSr.AlphaOnly = true;
-            return TweenRendererDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenRenderer(target, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenRendererDic.Add(target, tweenSr);
-            tweenSr.AlphaOnly = true;
-            return tweenSr;
-        }
-    }
-
-    public static TweenRenderer CreateTweenRenderer(Renderer target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenRenderer tweenSr;
-        Renderer sr = target.GetComponent<Renderer>();
-
-        Color destination = sr.material.GetColor("_Color");
-
-        destination.a = destAlpha;
-
-        if (TweenRendererDic.ContainsKey(target))
-        {
-            tweenSr = TweenRendererDic[target];
-
-            tweenSr.Pause();
-
-            TweenRendererDic[target] = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenRendererDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenRendererDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-    public static TweenRenderer CreateTweenRenderer(Renderer target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenRenderer tweenSr;
-        Renderer sr = target.GetComponent<Renderer>();
-
-        if (TweenRendererDic.ContainsKey(target))
-        {
-            tweenSr = TweenRendererDic[target];
-
-            tweenSr.Pause();
-
-            TweenRendererDic[target] = new TweenRenderer(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenRendererDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenRenderer(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenRendererDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-    public static TweenRenderer CreateTweenRenderer(Renderer target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
-    {
-        TweenRenderer tweenSr;
-        Renderer sr = target.GetComponent<Renderer>();
-
-        if (TweenRendererDic.ContainsKey(target))
-        {
-            tweenSr = TweenRendererDic[target];
-
-            tweenSr.Pause();
-
-            TweenRendererDic[target] = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
-
-            return TweenRendererDic[target];
-        }
-        else
-        {
-            tweenSr = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
-
-            TweenRendererDic.Add(target, tweenSr);
-
-            return tweenSr;
-        }
-    }
-
-
-    public static TweenCG CreateTweenCG(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
-    {
-        TweenCG tweenCg;
-        CanvasGroup cg = target.GetComponent<CanvasGroup>();
-
-        if (TweenCgDic.ContainsKey(target))
-        {
-            tweenCg = TweenCgDic[target];
-
-            tweenCg.Pause();
-
-            TweenCgDic[target] = new TweenCG(cg, origin, destination, duration, originActive, destActive, curve);
-
-            return TweenCgDic[target];
-        }
-        else
-        {
-            tweenCg = new TweenCG(cg, origin, destination, duration, originActive, destActive, curve);
-
-            TweenCgDic.Add(target, tweenCg);
-
-            return tweenCg;
-        }
-    }
-
-    public static TweenCG CreateTweenCG(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve)
-    {
-        TweenCG tweenCg;
-        CanvasGroup cg = target.GetComponent<CanvasGroup>();
-
-        if (TweenCgDic.ContainsKey(target))
-        {
-            tweenCg = TweenCgDic[target];
-
-            tweenCg.Pause();
-
-            TweenCgDic[target] = new TweenCG(cg, cg.alpha, destination, duration, originActive, destActive, curve);
-
-            return TweenCgDic[target];
-        }
-        else
-        {
-            tweenCg = new TweenCG(cg, cg.alpha, destination, duration, originActive, destActive, curve);
-
-            TweenCgDic.Add(target, tweenCg);
-
-            return tweenCg;
-        }
-    }
-
-
-    public static TweenGra CreateTweenGra(Transform target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Graphic graphic = target.GetComponent<Graphic>();
-        TweenGra tweenGra;
-
-        Color origin = graphic.color;
-        Color destination = graphic.color;
-
-        origin.a = originAlpha;
-        destination.a = destAlpha;
-
-        if (TweenGraDic.ContainsKey(target))
-        {
-            tweenGra = TweenGraDic[target];
-
-            tweenGra.Pause();
-
-            TweenGraDic[target] = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenGraDic[target];
-        }
-        else
-        {
-            tweenGra = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenGraDic.Add(target, tweenGra);
-
-            return tweenGra;
-        }
-    }
-
-    public static TweenGra CreateTweenGra(Transform target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Graphic graphic = target.GetComponent<Graphic>();
-        TweenGra tweenGra;
-
-        Color destination = graphic.color;
-
-        destination.a = destAlpha;
-
-        if (TweenGraDic.ContainsKey(target))
-        {
-            tweenGra = TweenGraDic[target];
-
-            tweenGra.Pause();
-
-            TweenGraDic[target] = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenGraDic[target];
-        }
-        else
-        {
-            tweenGra = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
-
-            TweenGraDic.Add(target, tweenGra);
-
-            return tweenGra;
-        }
-    }
-
-    public static TweenGra CreateTweenGra(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Graphic graphic = target.GetComponent<Graphic>();
-        TweenGra tweenGra;
-
-        if (TweenGraDic.ContainsKey(target))
-        {
-            tweenGra = TweenGraDic[target];
-
-            tweenGra.Pause();
-
-            TweenGraDic[target] = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenGraDic[target];
-        }
-        else
-        {
-            tweenGra = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenGraDic.Add(target, tweenGra);
-
-            return tweenGra;
-        }
-    }
-
-    public static TweenGra CreateTweenGra(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Graphic graphic = target.GetComponent<Graphic>();
-        TweenGra tweenGra;
-
-        if (TweenGraDic.ContainsKey(target))
-        {
-            tweenGra = TweenGraDic[target];
-
-            tweenGra.Pause();
-
-            TweenGraDic[target] = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenGraDic[target];
-        }
-        else
-        {
-            tweenGra = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
-
-            TweenGraDic.Add(target, tweenGra);
-
-            return tweenGra;
-        }
-    }
-
-
-    public static TweenVec CreateTweenVec2D(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenVec tweenVec2D;
-
-        if (local)
-        {
-            origin.z = target.localPosition.z;
-            destination.z = target.localPosition.z;
-        }
-        else
-        {
-            origin.z = target.position.z;
-            destination.z = target.position.z;
-        }
-
-        if (TweenVecDic.ContainsKey(target))
-        {
-            tweenVec2D = TweenVecDic[target];
-
-            tweenVec2D.Pause();
-
-            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenVecDic[target];
-        }
-        else
-        {
-            tweenVec2D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenVecDic.Add(target, tweenVec2D);
-
-            return tweenVec2D;
-        }
-    }
-
-    public static TweenVec CreateTweenVec2D(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenVec tweenVec2D;
-
-        Vector3 origin;
-
-        if (local)
-        {
-            origin = target.localPosition;
-
-            destination.z = target.localPosition.z;
-        }
-        else
-        {
-            origin = target.position;
-
-            destination.z = target.position.z;
-        }
-
-
-        if (TweenVecDic.ContainsKey(target))
-        {
-            tweenVec2D = TweenVecDic[target];
-
-            tweenVec2D.Pause();
-
-            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenVecDic[target];
-        }
-        else
-        {
-            tweenVec2D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenVecDic.Add(target, tweenVec2D);
-
-            return tweenVec2D;
-        }
-    }
-
-    public static TweenVec CreateTweenVecOffset2D(Transform target, Vector3 offset, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenVec tweenVec2D;
-
-        Vector3 origin;
-        Vector3 destination;
-
-        if (local)
-        {
-            origin = target.localPosition;
-            destination = target.localPosition + offset;
-
-            destination.z = target.localPosition.z;
-        }
-        else
-        {
-            origin = target.position;
-            destination = target.position + offset;
-
-            destination.z = target.position.z;
-        }
-
-        if (TweenVecDic.ContainsKey(target))
-        {
-            tweenVec2D = TweenVecDic[target];
-
-            tweenVec2D.Pause();
-
-            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenVecDic[target];
-        }
-        else
-        {
-            tweenVec2D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenVecDic.Add(target, tweenVec2D);
-
-            return tweenVec2D;
-        }
-    }
-
-
-    public static TweenVec CreateTweenVec3D(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenVec tweenVec3D;
-
-        if (TweenVecDic.ContainsKey(target))
-        {
-            tweenVec3D = TweenVecDic[target];
-
-            tweenVec3D.Pause();
-
-            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenVecDic[target];
-        }
-        else
-        {
-            tweenVec3D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenVecDic.Add(target, tweenVec3D);
-
-            return tweenVec3D;
-        }
-    }
-
-    public static TweenVec CreateTweenVec3D(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenVec tweenVec3D;
-
-        Vector3 origin;
-
-        if (local)
-        {
-            origin = target.localPosition;
-        }
-        else
-        {
-            origin = target.position;
-        }
-
-        if (TweenVecDic.ContainsKey(target))
-        {
-            tweenVec3D = TweenVecDic[target];
-
-            tweenVec3D.Pause();
-
-            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenVecDic[target];
-        }
-        else
-        {
-            tweenVec3D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenVecDic.Add(target, tweenVec3D);
-
-            return tweenVec3D;
-        }
-    }
-
-    public static TweenVec CreateTweenVecOffset3D(Transform target, Vector3 offset, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenVec tweenVec3D;
-
-        Vector3 origin;
-        Vector3 destination;
-
-        if (local)
-        {
-            origin = target.localPosition;
-            destination = target.localPosition + offset;
-        }
-        else
-        {
-            origin = target.position;
-            destination = target.position + offset;
-        }
-
-        if (TweenVecDic.ContainsKey(target))
-        {
-            tweenVec3D = TweenVecDic[target];
-
-            tweenVec3D.Pause();
-
-            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenVecDic[target];
-        }
-        else
-        {
-            tweenVec3D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenVecDic.Add(target, tweenVec3D);
-
-            return tweenVec3D;
-        }
-    }
-
-
-    public static TweenEuler CreateTweenEuler(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenEuler tweenEuler;
-
-        if (TweenEulerDic.ContainsKey(target))
-        {
-            tweenEuler = TweenEulerDic[target];
-
-            tweenEuler.Pause();
-
-            TweenEulerDic[target] = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenEulerDic[target];
-        }
-        else
-        {
-            tweenEuler = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenEulerDic.Add(target, tweenEuler);
-
-            return tweenEuler;
-        }
-    }
-
-    public static TweenEuler CreateTweenEuler(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenEuler tweenEuler;
-
-        Vector3 origin;
-
-        if (local)
-        {
-            origin = target.localEulerAngles;
-        }
-        else
-        {
-            origin = target.eulerAngles;
-        }
-
-        if (TweenEulerDic.ContainsKey(target))
-        {
-            tweenEuler = TweenEulerDic[target];
-
-            tweenEuler.Pause();
-
-            TweenEulerDic[target] = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            return TweenEulerDic[target];
-        }
-        else
-        {
-            tweenEuler = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
-
-            TweenEulerDic.Add(target, tweenEuler);
-
-            return tweenEuler;
-        }
-    }
-
-
-    public static TweenFont CreateTweenFont(Transform target, int origin, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Text text = target.GetComponent<Text>();
-        TweenFont tweenFont;
-
-        if (TweenRectDic.ContainsKey(target))
-        {
-            tweenFont = TweenFontDic[target];
-
-            tweenFont.Pause();
-
-            TweenFontDic[target] = new TweenFont(text, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenFontDic[target];
-        }
-        else
-        {
-            tweenFont = new TweenFont(text, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenFontDic.Add(target, tweenFont);
-
-            return tweenFont;
-        }
-    }
-
-    public static TweenFont CreateTweenFont(Transform target, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Text text = target.GetComponent<Text>();
-        TweenFont tweenFont;
-
-        if (TweenRectDic.ContainsKey(target))
-        {
-            tweenFont = TweenFontDic[target];
-
-            tweenFont.Pause();
-
-            TweenFontDic[target] = new TweenFont(text, text.fontSize, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenFontDic[target];
-        }
-        else
-        {
-            tweenFont = new TweenFont(text, text.fontSize, destination, duration, originActive, destActive, curve, cg);
-
-            TweenFontDic.Add(target, tweenFont);
-
-            return tweenFont;
-        }
-    }
-
-
-    public static TweenRect CreateTweenRect(Transform target, Vector2 origin, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenRect tweenRect;
-        RectTransform rectTra = target.GetComponent<RectTransform>();
-
-        if (TweenRectDic.ContainsKey(target))
-        {
-            tweenRect = TweenRectDic[target];
-
-            tweenRect.Pause();
-
-            TweenRectDic[target] = new TweenRect(rectTra, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenRectDic[target];
-        }
-        else
-        {
-            tweenRect = new TweenRect(rectTra, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenRectDic.Add(target, tweenRect);
-
-            return tweenRect;
-        }
-    }
-
-    public static TweenRect CreateTweenRect(Transform target, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenRect tweenRect;
-        RectTransform rectTra = target.GetComponent<RectTransform>();
-
-        if (TweenRectDic.ContainsKey(target))
-        {
-            tweenRect = TweenRectDic[target];
-
-            tweenRect.Pause();
-
-            TweenRectDic[target] = new TweenRect(rectTra, rectTra.rect.size, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenRectDic[target];
-        }
-        else
-        {
-            tweenRect = new TweenRect(rectTra, rectTra.rect.size, destination, duration, originActive, destActive, curve, cg);
-
-            TweenRectDic.Add(target, tweenRect);
-
-            return tweenRect;
-        }
-    }
-
-
-    public static TweenScale CreateTweenScale(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Vector3 destScale = new Vector3(destination, destination, destination);
-        Vector3 originScale = new Vector3(origin, origin, origin);
-
-
-        TweenScale tweenScale;
-
-        if (TweenScaleDic.ContainsKey(target))
-        {
-            tweenScale = TweenScaleDic[target];
-
-            tweenScale.Pause();
-
-            TweenScaleDic[target] = new TweenScale(target, originScale, destScale, duration, originActive, destActive, curve, cg);
-
-            return TweenScaleDic[target];
-        }
-        else
-        {
-            tweenScale = new TweenScale(target, originScale, destScale, duration, originActive, destActive, curve, cg);
-
-            TweenScaleDic.Add(target, tweenScale);
-
-            return tweenScale;
-        }
-    }
-
-    public static TweenScale CreateTweenScale(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Vector3 destScale = new Vector3(destination, destination, destination);
-
-
-        TweenScale tweenScale;
-
-        if (TweenScaleDic.ContainsKey(target))
-        {
-            tweenScale = TweenScaleDic[target];
-
-            tweenScale.Pause();
-
-            TweenScaleDic[target] = new TweenScale(target, target.localScale, destScale, duration, originActive, destActive, curve, cg);
-
-            return TweenScaleDic[target];
-        }
-        else
-        {
-            tweenScale = new TweenScale(target, target.localScale, destScale, duration, originActive, destActive, curve, cg);
-
-            TweenScaleDic.Add(target, tweenScale);
-
-            return tweenScale;
-        }
-    }
-
-    public static TweenScale CreateTweenScale(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenScale tweenScale;
-
-        if (TweenScaleDic.ContainsKey(target))
-        {
-            tweenScale = TweenScaleDic[target];
-
-            tweenScale.Pause();
-
-            TweenScaleDic[target] = new TweenScale(target, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenScaleDic[target];
-        }
-        else
-        {
-            tweenScale = new TweenScale(target, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenScaleDic.Add(target, tweenScale);
-
-            return tweenScale;
-        }
-    }
-
-    public static TweenScale CreateTweenScale(Transform target, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenScale tweenScale;
-
-        if (TweenScaleDic.ContainsKey(target))
-        {
-            tweenScale = TweenScaleDic[target];
-
-            tweenScale.Pause();
-
-            TweenScaleDic[target] = new TweenScale(target, target.localScale, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenScaleDic[target];
-        }
-        else
-        {
-            tweenScale = new TweenScale(target, target.localScale, destination, duration, originActive, destActive, curve, cg);
-
-            TweenScaleDic.Add(target, tweenScale);
-
-            return tweenScale;
-        }
-    }
-
-
-    public static TweenAudio CreateTweenAudio(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenAudio tweenAudio;
-        AudioSource audio = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.ContainsKey(audio))
-        {
-            tweenAudio = TweenAudioDic[audio];
-
-            tweenAudio.Pause();
-
-            TweenAudioDic[audio] = new TweenAudio(audio, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenAudioDic[audio];
-        }
-        else
-        {
-            tweenAudio = new TweenAudio(audio, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenAudioDic.Add(audio, tweenAudio);
-
-            return tweenAudio;
-        }
-    }
-
-    public static TweenAudio CreateTweenAudio(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenAudio tweenAudio;
-        AudioSource audio = target.GetComponent<AudioSource>();
-
-        if (TweenAudioDic.ContainsKey(audio))
-        {
-            tweenAudio = TweenAudioDic[audio];
-
-            tweenAudio.Pause();
-
-            TweenAudioDic[audio] = new TweenAudio(audio, audio.volume, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenAudioDic[audio];
-        }
-        else
-        {
-            tweenAudio = new TweenAudio(audio, audio.volume, destination, duration, originActive, destActive, curve, cg);
-
-            TweenAudioDic.Add(audio, tweenAudio);
-
-            return tweenAudio;
-        }
-    }
-
-    public static TweenAudio CreateTweenAudio(AudioSource audioSource, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenAudio tweenAudio;
-
-        if (TweenAudioDic.ContainsKey(audioSource))
-        {
-            tweenAudio = TweenAudioDic[audioSource];
-
-            tweenAudio.Pause();
-
-            TweenAudioDic[audioSource] = new TweenAudio(audioSource, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenAudioDic[audioSource];
-        }
-        else
-        {
-            tweenAudio = new TweenAudio(audioSource, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenAudioDic.Add(audioSource, tweenAudio);
-
-            return tweenAudio;
-        }
-    }
-
-    public static TweenAudio CreateTweenAudio(AudioSource audioSource, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenAudio tweenAudio;
-
-        if (TweenAudioDic.ContainsKey(audioSource))
-        {
-            tweenAudio = TweenAudioDic[audioSource];
-
-            tweenAudio.Pause();
-
-            TweenAudioDic[audioSource] = new TweenAudio(audioSource, audioSource.volume, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenAudioDic[audioSource];
-        }
-        else
-        {
-            tweenAudio = new TweenAudio(audioSource, audioSource.volume, destination, duration, originActive, destActive, curve, cg);
-            
-            TweenAudioDic.Add(audioSource, tweenAudio);
-
-            return tweenAudio;
-        }
-    }
-
-
-    public static TweenOutline CreateTweenOutline(Transform target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Outline outline = target.GetComponent<Outline>();
-        TweenOutline tweenOutline;
-
-        Color origin = outline.effectColor;
-        Color destination = outline.effectColor;
-
-        origin.a = originAlpha;
-        destination.a = destAlpha;
-
-        if (TweenOutlineDic.ContainsKey(target))
-        {
-            tweenOutline = TweenOutlineDic[target];
-
-            tweenOutline.Pause();
-
-            TweenOutlineDic[target] = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenOutlineDic[target];
-        }
-        else
-        {
-            tweenOutline = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenOutlineDic.Add(target, tweenOutline);
-
-            return tweenOutline;
-        }
-    }
-
-    public static TweenOutline CreateTweenOutline(Transform target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Outline graphic = target.GetComponent<Outline>();
-        TweenOutline tweenOutline;
-
-        Color destination = graphic.effectColor;
-
-        destination.a = destAlpha;
-
-        if (TweenOutlineDic.ContainsKey(target))
-        {
-            tweenOutline = TweenOutlineDic[target];
-
-            tweenOutline.Pause();
-
-            TweenOutlineDic[target] = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenOutlineDic[target];
-        }
-        else
-        {
-            tweenOutline = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
-
-            TweenOutlineDic.Add(target, tweenOutline);
-
-            return tweenOutline;
-        }
-    }
-
-    public static TweenOutline CreateTweenOutline(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Outline outline = target.GetComponent<Outline>();
-        TweenOutline tweenOutline;
-
-        if (TweenOutlineDic.ContainsKey(target))
-        {
-            tweenOutline = TweenOutlineDic[target];
-
-            tweenOutline.Pause();
-
-            TweenOutlineDic[target] = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenOutlineDic[target];
-        }
-        else
-        {
-            tweenOutline = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenOutlineDic.Add(target, tweenOutline);
-
-            return tweenOutline;
-        }
-    }
-
-    public static TweenOutline CreateTweenOutline(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Outline graphic = target.GetComponent<Outline>();
-        TweenOutline tweenOutline;
-
-        if (TweenOutlineDic.ContainsKey(target))
-        {
-            tweenOutline = TweenOutlineDic[target];
-
-            tweenOutline.Pause();
-
-            TweenOutlineDic[target] = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenOutlineDic[target];
-        }
-        else
-        {
-            tweenOutline = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
-
-            TweenOutlineDic.Add(target, tweenOutline);
-
-            return tweenOutline;
-        }
-    }
-
-
-    public static TweenNumber CreateTweenNumber(Transform target, int origin, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Text text = target.GetComponent<Text>();
-        TweenNumber tweenNumber;
-
-        if (TweenNumberDic.ContainsKey(target))
-        {
-            tweenNumber = TweenNumberDic[target];
-
-            tweenNumber.Pause();
-
-            TweenNumberDic[target] = new TweenNumber(text, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenNumberDic[target];
-        }
-        else
-        {
-            tweenNumber = new TweenNumber(text, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenNumberDic.Add(target, tweenNumber);
-
-            return tweenNumber;
-        }
-    }
-
-    public static TweenNumber CreateTweenNumber(Transform target, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        Text text = target.GetComponent<Text>();
-        TweenNumber tweenNumber;
-
-        if (TweenNumberDic.ContainsKey(target))
-        {
-            tweenNumber = TweenNumberDic[target];
-
-            tweenNumber.Pause();
-
-            TweenNumberDic[target] = new TweenNumber(text, int.Parse(text.text), destination, duration, originActive, destActive, curve, cg);
-
-            return TweenNumberDic[target];
-        }
-        else
-        {
-            tweenNumber = new TweenNumber(text, int.Parse(text.text), destination, duration, originActive, destActive, curve, cg);
-
-            TweenNumberDic.Add(target, tweenNumber);
-
-            return tweenNumber;
-        }
-    }
-
-
-    public static TweenMatColor CreateTweenMatColor(MaterialUnit target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenMatColor tweenMatColor;
-
-        if (TweenMatColorDic.ContainsKey(target))
-        {
-            tweenMatColor = TweenMatColorDic[target];
-
-            tweenMatColor.Pause();
-
-            TweenMatColorDic[target] = new TweenMatColor(target, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenMatColorDic[target];
-        }
-        else
-        {
-            tweenMatColor = new TweenMatColor(target, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenMatColorDic.Add(target, tweenMatColor);
-
-            return tweenMatColor;
-        }
-    }
-
-    public static TweenMatColor CreateTweenMatColor(MaterialUnit target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenMatColor tweenMatColor;
-
-        if (TweenMatColorDic.ContainsKey(target))
-        {
-            tweenMatColor = TweenMatColorDic[target];
-
-            tweenMatColor.Pause();
-
-            TweenMatColorDic[target] = new TweenMatColor(target, target.GetColor(), destination, duration, originActive, destActive, curve, cg);
-
-            return TweenMatColorDic[target];
-        }
-        else
-        {
-            tweenMatColor = new TweenMatColor(target, target.GetColor(), destination, duration, originActive, destActive, curve, cg);
-
-            TweenMatColorDic.Add(target, tweenMatColor);
-
-            return tweenMatColor;
-        }
-    }
-
-    public static TweenMatFloat CreateTweenMatFloat(MaterialUnit target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenMatFloat tweenMatFloat;
-
-        if (TweenMatFloatDic.ContainsKey(target))
-        {
-            tweenMatFloat = TweenMatFloatDic[target];
-
-            tweenMatFloat.Pause();
-
-            TweenMatFloatDic[target] = new TweenMatFloat(target, origin, destination, duration, originActive, destActive, curve, cg);
-
-            return TweenMatFloatDic[target];
-        }
-        else
-        {
-            tweenMatFloat = new TweenMatFloat(target, origin, destination, duration, originActive, destActive, curve, cg);
-
-            TweenMatFloatDic.Add(target, tweenMatFloat);
-
-            return tweenMatFloat;
-        }
-    }
-
-    public static TweenMatFloat CreateTweenMatFloat(MaterialUnit target, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
-    {
-        TweenMatFloat tweenMatFloat;
-
-        if (TweenMatFloatDic.ContainsKey(target))
-        {
-            tweenMatFloat = TweenMatFloatDic[target];
-
-            tweenMatFloat.Pause();
-
-            TweenMatFloatDic[target] = new TweenMatFloat(target, target.GetFloat(), destination, duration, originActive, destActive, curve, cg);
-
-            return TweenMatFloatDic[target];
-        }
-        else
-        {
-            tweenMatFloat = new TweenMatFloat(target, target.GetFloat(), destination, duration, originActive, destActive, curve, cg);
-
-            TweenMatFloatDic.Add(target, tweenMatFloat);
-
-            return tweenMatFloat;
-        }
-    }
-
-
-    public static TweenGrayMesh CreateTweenGrayMesh(MeshFilter target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
-    {
-        TweenGrayMesh tweenGrayMesh;
-
-        if (TweenGrayMeshDic.ContainsKey(target))
-        {
-            tweenGrayMesh = TweenGrayMeshDic[target];
-
-            tweenGrayMesh.Pause();
-
-            TweenGrayMeshDic[target] = new TweenGrayMesh(target, origin, destination, duration, originActive, destActive, curve);
-
-            return TweenGrayMeshDic[target];
-        }
-        else
-        {
-            tweenGrayMesh = new TweenGrayMesh(target, origin, destination, duration, originActive, destActive, curve);
-
-            TweenGrayMeshDic.Add(target, tweenGrayMesh);
-
-            return tweenGrayMesh;
-        }
-    }
-
-    #endregion
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.Events;
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public enum Curve
+{
+    Linear,
+    EaseOutQuad,
+}
+
+public enum EventType
+{
+    ForwardStart,
+    BackwardStart,
+    ForwardFinish,
+    BackwardFinish,
+}
+
+
+public delegate float TimerFunction(float value, float duration, float start, float delta);
+
+
+public delegate float ShakeFunctionF(float timer, float duration, int repeat, float start, float strength);
+
+public delegate Color ShakeFunctionC(float timer, float duration, int repeat, Color start, Color strength);
+
+public delegate Vector3 ShakeFunctionV(float timer, float duration, int repeat, Vector3 start, Vector3 strength);
+
+
+public delegate float CurveFunctionF(float timer, float duration, float start, float delta);
+
+public delegate Color CurveFunctionC(float timer, float duration, Color start, Color delta);
+
+public delegate Vector3 CurveFunctionV(float timer, float duration, Vector3 start, Vector3 delta);
+
+
+public class MaterialUnit
+{
+    public Material Material;
+    public Transform Transform;
+
+    public List<string> PropertyList;
+
+    public MaterialUnit(Material material, Transform transform, List<string> propertyList)
+    {
+        Material = material;
+        Transform = transform;
+        PropertyList = propertyList;
+    }
+
+
+    public void SetFloat(float value)
+    {
+        for (int i = 0; i < PropertyList.Count; i++)
+        {
+            Material.SetFloat(PropertyList[i], value);
+        }
+    }
+
+    public void SetColor(Color value)
+    {
+        for (int i = 0; i < PropertyList.Count; i++)
+        {
+            Material.SetColor(PropertyList[i], value);
+        }
+    }
+
+    public float GetFloat()
+    {
+        return Material.GetFloat(PropertyList[0]);
+    }
+
+    public Color GetColor()
+    {
+        return Material.GetColor(PropertyList[0]);
+    }
+}
+
+public class AnimManager : Regist
+{
+    #region 变量
+
+    public static List<MoveRoot> MoveForList = new List<MoveRoot>();
+    public static List<MoveRoot> MoveBacList = new List<MoveRoot>();
+
+    public static Dictionary<Curve, TimerFunction> TimerFunctionDic = new Dictionary<Curve, TimerFunction>();
+
+    public static Dictionary<Curve, ShakeFunctionF> ShakeFuncDicF = new Dictionary<Curve, ShakeFunctionF>();
+    public static Dictionary<Curve, ShakeFunctionC> ShakeFuncDicC = new Dictionary<Curve, ShakeFunctionC>();
+    public static Dictionary<Curve, ShakeFunctionV> ShakeFuncDicV = new Dictionary<Curve, ShakeFunctionV>();
+
+    public static Dictionary<Curve, CurveFunctionF> CurveFuncDicF = new Dictionary<Curve, CurveFunctionF>();
+    public static Dictionary<Curve, CurveFunctionC> CurveFuncDicC = new Dictionary<Curve, CurveFunctionC>();
+    public static Dictionary<Curve, CurveFunctionV> CurveFuncDicV = new Dictionary<Curve, CurveFunctionV>();
+
+    public static Dictionary<Transform, Shake> ShakeDic = new Dictionary<Transform, Shake>();
+    public static Dictionary<Transform, Move2D> MoveDic2D = new Dictionary<Transform, Move2D>();
+    public static Dictionary<Transform, Move3D> MoveDic3D = new Dictionary<Transform, Move3D>();
+    public static Dictionary<Transform, Zoom2D> ZoomDic2D = new Dictionary<Transform, Zoom2D>();
+
+    public static Dictionary<Transform, TweenSr> TweenSrDic = new Dictionary<Transform, TweenSr>();
+    public static Dictionary<Transform, TweenCG> TweenCgDic = new Dictionary<Transform, TweenCG>();
+    public static Dictionary<Transform, TweenGra> TweenGraDic = new Dictionary<Transform, TweenGra>();
+    public static Dictionary<Transform, TweenVec> TweenVecDic = new Dictionary<Transform, TweenVec>();
+    public static Dictionary<Transform, TweenEuler> TweenEulerDic = new Dictionary<Transform, TweenEuler>();
+    public static Dictionary<Transform, TweenFont> TweenFontDic = new Dictionary<Transform, TweenFont>();
+    public static Dictionary<Transform, TweenRect> TweenRectDic = new Dictionary<Transform, TweenRect>();
+    public static Dictionary<Transform, TweenScale> TweenScaleDic = new Dictionary<Transform, TweenScale>();
+    public static Dictionary<Transform, TweenOutline> TweenOutlineDic = new Dictionary<Transform, TweenOutline>();
+    public static Dictionary<Transform, TweenNumber> TweenNumberDic = new Dictionary<Transform, TweenNumber>();
+    public static Dictionary<Renderer, TweenRenderer> TweenRendererDic = new Dictionary<Renderer, TweenRenderer>();
+    public static Dictionary<AudioSource, TweenAudio> TweenAudioDic = new Dictionary<AudioSource, TweenAudio>();
+
+    public static Dictionary<MaterialUnit, TweenMatColor> TweenMatColorDic = new Dictionary<MaterialUnit, TweenMatColor>();
+    public static Dictionary<MaterialUnit, TweenMatFloat> TweenMatFloatDic = new Dictionary<MaterialUnit, TweenMatFloat>();
+    public static Dictionary<MeshFilter, TweenGrayMesh> TweenGrayMeshDic = new Dictionary<MeshFilter, TweenGrayMesh>();
+
+    public static Dictionary<Transform, StreamScale> StreamScaleDic = new Dictionary<Transform, StreamScale>();
+
+    #endregion
+
+    public void Update()
+    {
+        for (int i = 0; i < MoveForList.Count; i++)
+        {
+            MoveRoot move = MoveForList[i];
+
+            if (move.DoForward())
+            {
+                if (MoveForList.Remove(move))
+                {
+                    i--;
+                }
+            }
+        }
+
+        for (int i = 0; i < MoveBacList.Count; i++)
+        {
+            MoveRoot move = MoveBacList[i];
+
+            if (move.DoBackward())
+            {
+                if (MoveBacList.Remove(move))
+                {
+                    i--;
+                }
+            }
+        }
+    }
+
+
+    public override bool InitAtOnce()
+    {
+        if (base.InitAtOnce())
+        {
+            return true;
+        }
+
+        TimerFunctionDic.Add(Curve.Linear, LinearTimer);
+        TimerFunctionDic.Add(Curve.EaseOutQuad, EaseOutQuadTimer);
+
+        ShakeFuncDicF.Add(Curve.Linear, ShakeLinear);
+        ShakeFuncDicF.Add(Curve.EaseOutQuad, ShakeEaseOutQuad);
+
+        ShakeFuncDicC.Add(Curve.Linear, ShakeLinear);
+        ShakeFuncDicC.Add(Curve.EaseOutQuad, ShakeEaseOutQuad);
+
+        ShakeFuncDicV.Add(Curve.Linear, ShakeLinear);
+        ShakeFuncDicV.Add(Curve.EaseOutQuad, ShakeEaseOutQuad);
+
+        CurveFuncDicF.Add(Curve.Linear, Linear);
+        CurveFuncDicF.Add(Curve.EaseOutQuad, EaseOutQuad);
+
+        CurveFuncDicC.Add(Curve.Linear, Linear);
+        CurveFuncDicC.Add(Curve.EaseOutQuad, EaseOutQuad);
+
+        CurveFuncDicV.Add(Curve.Linear, Linear);
+        CurveFuncDicV.Add(Curve.EaseOutQuad, EaseOutQuad);
+
+        enabled = true;
+
+        return false;
+    }
+
+
+    #region 曲线
+
+    public static float LinearTimer(float value, float duration, float start, float delta)
+    {
+        return (value - start)*duration/delta;
+    }
+
+    public static float EaseOutQuadTimer(float value, float duration, float start, float delta)
+    {
+        return ((2 - Mathf.Sqrt(4 - 4*(value - start)/delta))/2)*duration;
+    }
+
+
+    public static float ShakeLinear(float timer, float duration, int repeat, float start, float strength)
+    {
+        float sliceTime = duration/(4*repeat);
+
+        for (int i = 0; i < repeat*4; i += 4)
+        {
+            if (timer > duration)
+            {
+                return start;
+            }
+
+            if (timer <= (i + 1)*sliceTime)
+            {
+                timer -= (i)*sliceTime;
+
+                return Linear(timer, sliceTime, start, strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 3)*sliceTime)
+            {
+                timer -= (i + 1)*sliceTime;
+
+                return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 4)*sliceTime)
+            {
+                timer -= (i + 3)*sliceTime;
+
+                return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
+            }
+        }
+
+        throw new Exception();
+    }
+
+    public static Color ShakeLinear(float timer, float duration, int repeat, Color start, Color strength)
+    {
+        float sliceTime = duration/(4*repeat);
+
+        for (int i = 0; i < repeat*4; i += 4)
+        {
+            if (timer > duration)
+            {
+                return start;
+            }
+
+            if (timer <= (i + 1)*sliceTime)
+            {
+                timer -= (i)*sliceTime;
+
+                return Linear(timer, sliceTime, start, strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 3)*sliceTime)
+            {
+                timer -= (i + 1)*sliceTime;
+
+                return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 4)*sliceTime)
+            {
+                timer -= (i + 3)*sliceTime;
+
+                return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
+            }
+        }
+
+        throw new Exception();
+    }
+
+    public static Vector3 ShakeLinear(float timer, float duration, int repeat, Vector3 start, Vector3 strength)
+    {
+        float sliceTime = duration/(4*repeat);
+
+        for (int i = 0; i < repeat*4; i += 4)
+        {
+            if (timer > duration)
+            {
+                return start;
+            }
+
+            if (timer <= (i + 1)*sliceTime)
+            {
+                timer -= (i)*sliceTime;
+
+                return Linear(timer, sliceTime, start, strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 3)*sliceTime)
+            {
+                timer -= (i + 1)*sliceTime;
+
+                return Linear(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 4)*sliceTime)
+            {
+                timer -= (i + 3)*sliceTime;
+
+                return Linear(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
+            }
+        }
+
+        throw new Exception();
+    }
+
+
+    public static float ShakeEaseOutQuad(float timer, float duration, int repeat, float start, float strength)
+    {
+        float sliceTime = duration/(4*repeat);
+
+        for (int i = 0; i < repeat*4; i += 4)
+        {
+            if (timer > duration)
+            {
+                return start;
+            }
+
+            if (timer <= (i + 1)*sliceTime)
+            {
+                timer -= (i)*sliceTime;
+
+                return EaseOutQuad(timer, sliceTime, start, strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 3)*sliceTime)
+            {
+                timer -= (i + 1)*sliceTime;
+
+                return EaseOutQuad(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 4)*sliceTime)
+            {
+                timer -= (i + 3)*sliceTime;
+
+                return EaseOutQuad(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
+            }
+        }
+
+        throw new Exception();
+    }
+
+    public static Color ShakeEaseOutQuad(float timer, float duration, int repeat, Color start, Color strength)
+    {
+        float sliceTime = duration/(4*repeat);
+
+        for (int i = 0; i < repeat*4; i += 4)
+        {
+            if (timer > duration)
+            {
+                return start;
+            }
+
+            if (timer <= (i + 1)*sliceTime)
+            {
+                timer -= (i)*sliceTime;
+
+                return EaseOutQuad(timer, sliceTime, start, strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 3)*sliceTime)
+            {
+                timer -= (i + 1)*sliceTime;
+
+                return EaseOutQuad(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 4)*sliceTime)
+            {
+                timer -= (i + 3)*sliceTime;
+
+                return EaseOutQuad(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
+            }
+        }
+
+        throw new Exception();
+    }
+
+    public static Vector3 ShakeEaseOutQuad(float timer, float duration, int repeat, Vector3 start, Vector3 strength)
+    {
+        float sliceTime = duration/(4*repeat);
+
+        for (int i = 0; i < repeat*4; i += 4)
+        {
+            if (timer > duration)
+            {
+                return start;
+            }
+
+            if (timer <= (i + 1)*sliceTime)
+            {
+                timer -= (i)*sliceTime;
+
+                return EaseOutQuad(timer, sliceTime, start, strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 3)*sliceTime)
+            {
+                timer -= (i + 1)*sliceTime;
+
+                return EaseOutQuad(timer, 2*sliceTime, start + strength/(i/4 + 1), -2*strength/(i/4 + 1));
+            }
+            else if (timer <= (i + 4)*sliceTime)
+            {
+                timer -= (i + 3)*sliceTime;
+
+                return EaseOutQuad(timer, sliceTime, start - strength/(i/4 + 1), strength/(i/4 + 1));
+            }
+        }
+
+        throw new Exception();
+    }
+
+
+    public static float Linear(float timer, float duration, float start, float delta)
+    {
+        if (timer >= duration)
+        {
+            return start + delta;
+        }
+
+        if (duration.Equal(0))
+        {
+            return delta + start;
+        }
+        else
+        {
+            return delta*timer/duration + start;
+        }
+    }
+
+    public static Color Linear(float timer, float duration, Color start, Color delta)
+    {
+        return new Color(Linear(timer, duration, start.r, delta.r), Linear(timer, duration, start.g, delta.g), Linear(timer, duration, start.b, delta.b), Linear(timer, duration, start.a, delta.a));
+    }
+
+    public static Vector3 Linear(float timer, float duration, Vector3 start, Vector3 delta)
+    {
+        return new Vector3(Linear(timer, duration, start.x, delta.x), Linear(timer, duration, start.y, delta.y), Linear(timer, duration, start.z, delta.z));
+    }
+
+
+    public static float EaseOutQuad(float timer, float duration, float start, float delta)
+    {
+        if (timer >= duration)
+        {
+            return start + delta;
+        }
+
+        if (duration.Equal(0))
+        {
+            return delta + start;
+        }
+        else
+        {
+            timer /= duration;
+            
+            return -delta*timer*(timer - 2) + start;
+        }
+    }
+
+    public static Color EaseOutQuad(float timer, float duration, Color start, Color delta)
+    {
+        return new Color(EaseOutQuad(timer, duration, start.r, delta.r), EaseOutQuad(timer, duration, start.g, delta.g), EaseOutQuad(timer, duration, start.b, delta.b), EaseOutQuad(timer, duration, start.a, delta.a));
+    }
+
+    public static Vector3 EaseOutQuad(float timer, float duration, Vector3 start, Vector3 delta)
+    {
+        return new Vector3(EaseOutQuad(timer, duration, start.x, delta.x), EaseOutQuad(timer, duration, start.y, delta.y), EaseOutQuad(timer, duration, start.z, delta.z));
+    }
+
+    #endregion
+
+    #region 播放动画
+
+    public static Shake Shake(Transform target, float duration, int repeat, Vector3 strength, Curve curve)
+    {
+        Shake move;
+
+        if (ShakeDic.TryGetValue(target, out move))
+        {
+            move.StartShake(repeat, duration, strength, curve);
+        }
+        else
+        {
+            move = CreateShake(target);
+
+            move.StartShake(repeat, duration, strength, curve);
+        }
+
+        return move;
+    }
+
+
+    public static Move2D Move2D(Transform target, Vector3 destination, float duration, bool local, Curve curve)
+    {
+        Move2D move;
+
+        if (local)
+        {
+            destination.z = target.localPosition.z;
+        }
+        else
+        {
+            destination.z = target.position.z;
+        }
+
+        if (MoveDic2D.TryGetValue(target, out move))
+        {
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+        else
+        {
+            move = CreateMove2D(target);
+
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+    }
+
+    public static Move3D Move3D(Transform target, Vector3 destination, float duration, bool local, Curve curve)
+    {
+        Move3D move;
+
+        if (MoveDic3D.TryGetValue(target, out move))
+        {
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+        else
+        {
+            move = CreateMove3D(target);
+
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+    }
+
+    public static Move2D MoveOffset2D(Transform target, Vector3 offset, float duration, bool local, Curve curve)
+    {
+        Move2D move;
+
+        Vector3 destination;
+
+        if (local)
+        {
+            destination = target.localPosition + offset;
+
+            destination.z = target.localPosition.z;
+        }
+        else
+        {
+            destination = target.position + offset;
+
+            destination.z = target.position.z;
+        }
+
+        if (MoveDic2D.TryGetValue(target, out move))
+        {
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+        else
+        {
+            move = CreateMove2D(target);
+
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+    }
+
+    public static Move3D MoveOffset3D(Transform target, Vector3 offset, float duration, bool local, Curve curve)
+    {
+        Move3D move;
+
+        Vector3 destination;
+
+        if (local)
+        {
+            destination = target.localPosition + offset;
+        }
+        else
+        {
+            destination = target.position + offset;
+        }
+
+        if (MoveDic3D.TryGetValue(target, out move))
+        {
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+        else
+        {
+            move = CreateMove3D(target);
+
+            move.StartMove(destination, duration, local, curve);
+
+            return move;
+        }
+    }
+
+
+    public static Zoom2D Zoom2D(Transform target, float origin, float destination, float duration, float stay, Transform zoom, Curve curve)
+    {
+        Zoom2D move;
+
+        if (ZoomDic2D.TryGetValue(target, out move))
+        {
+            move.StartZoom(origin, destination, duration, stay, zoom, curve);
+        }
+        else
+        {
+            move = CreateZoom2D(target);
+
+            move.StartZoom(origin, destination, duration, stay, zoom, curve);
+        }
+
+        return move;
+    }
+
+    public static Zoom2D Zoom2D(Transform target, float destination, float duration, float stay, Transform zoom, Curve curve)
+    {
+        Zoom2D move;
+
+        Camera camera = target.GetComponent<Camera>();
+
+        if (ZoomDic2D.TryGetValue(target, out move))
+        {
+            move.StartZoom(camera.orthographicSize, destination, duration, stay, zoom, curve);
+        }
+        else
+        {
+            move = CreateZoom2D(target);
+
+            move.StartZoom(camera.orthographicSize, destination, duration, stay, zoom, curve);
+        }
+
+        return move;
+    }
+
+
+    public static StreamScale StreamForScale(Transform target)
+    {
+        StreamScale stream;
+
+        if (StreamScaleDic.TryGetValue(target, out stream))
+        {
+            stream.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return stream;
+    }
+
+    public static StreamScale StreamBacScale(Transform target)
+    {
+        StreamScale stream;
+
+        if (StreamScaleDic.TryGetValue(target, out stream))
+        {
+            stream.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return stream;
+    }
+
+    public static StreamScale StreamReForScale(Transform target)
+    {
+        StreamScale stream;
+
+        if (StreamScaleDic.TryGetValue(target, out stream))
+        {
+            stream.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return stream;
+    }
+
+    public static StreamScale StreamReBacScale(Transform target)
+    {
+        StreamScale stream;
+
+        if (StreamScaleDic.TryGetValue(target, out stream))
+        {
+            stream.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return stream;
+    }
+
+
+    public static TweenSr TweenForSr(Transform target)
+    {
+        TweenSr tween;
+
+        if (TweenSrDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRenderer TweenForRenderer(Renderer target)
+    {
+        TweenRenderer tween;
+
+        if (TweenRendererDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenCG TweenForCG(Transform target)
+    {
+        TweenCG tween;
+
+        if (TweenCgDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenGra TweenForGra(Transform target)
+    {
+        TweenGra tween;
+
+        if (TweenGraDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenEuler TweenForEuler(Transform target)
+    {
+        TweenEuler tween;
+
+        if (TweenEulerDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenVec TweenForVec(Transform target)
+    {
+        TweenVec tween;
+
+        if (TweenVecDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenFont TweenForFont(Transform target)
+    {
+        TweenFont tween;
+
+        if (TweenFontDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRect TweenForRect(Transform target)
+    {
+        TweenRect tween;
+
+        if (TweenRectDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenScale TweenForScale(Transform target)
+    {
+        TweenScale tween;
+
+        if (TweenScaleDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenForAudio(Transform target)
+    {
+        TweenAudio tween;
+        AudioSource audioSource = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenForAudio(AudioSource audioSource)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenOutline TweenForOutline(Transform target)
+    {
+        TweenOutline tween;
+
+        if (TweenOutlineDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenNumber TweenForNumber(Transform target)
+    {
+        TweenNumber tween;
+
+        if (TweenNumberDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatFloat TweenForMatFloat(MaterialUnit target)
+    {
+        TweenMatFloat tween;
+
+        if (TweenMatFloatDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatColor TweenForMatColor(MaterialUnit target)
+    {
+        TweenMatColor tween;
+
+        if (TweenMatColorDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenGrayMesh TweenForGrayMesh(MeshFilter target)
+    {
+        TweenGrayMesh tween;
+
+        if (TweenGrayMeshDic.TryGetValue(target, out tween))
+        {
+            tween.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+
+    public static TweenSr TweenBacSr(Transform target)
+    {
+        TweenSr tween;
+
+        if (TweenSrDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRenderer TweenBacRenderer(Renderer target)
+    {
+        TweenRenderer tween;
+
+        if (TweenRendererDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenCG TweenBacCG(Transform target)
+    {
+        TweenCG tween;
+
+        if (TweenCgDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenGra TweenBacGra(Transform target)
+    {
+        TweenGra tween;
+
+        if (TweenGraDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+
+        return tween;
+    }
+
+    public static TweenVec TweenBacVec(Transform target)
+    {
+        TweenVec tween;
+
+        if (TweenVecDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+
+        return tween;
+    }
+
+    public static TweenEuler TweenBacEuler(Transform target)
+    {
+        TweenEuler tween;
+
+        if (TweenEulerDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+
+        return tween;
+    }
+
+    public static TweenFont TweenBacFont(Transform target)
+    {
+        TweenFont tween;
+
+        if (TweenFontDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRect TweenBacRect(Transform target)
+    {
+        TweenRect tween;
+
+        if (TweenRectDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenScale TweenBacScale(Transform target)
+    {
+        TweenScale tween;
+
+        if (TweenScaleDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenBacAudio(Transform target)
+    {
+        TweenAudio tween;
+        AudioSource audioSource = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenBacAudio(AudioSource audioSource)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenOutline TweenBacOutline(Transform target)
+    {
+        TweenOutline tween;
+
+        if (TweenOutlineDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenNumber TweenBacNumber(Transform target)
+    {
+        TweenNumber tween;
+
+        if (TweenNumberDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatFloat TweenBacMatFloat(MaterialUnit target)
+    {
+        TweenMatFloat tween;
+
+        if (TweenMatFloatDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatColor TweenBacMatColor(MaterialUnit target)
+    {
+        TweenMatColor tween;
+
+        if (TweenMatColorDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenGrayMesh TweenBacGrayMesh(MeshFilter target)
+    {
+        TweenGrayMesh tween;
+
+        if (TweenGrayMeshDic.TryGetValue(target, out tween))
+        {
+            tween.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+
+    public static TweenSr TweenReForSr(Transform target)
+    {
+        TweenSr tween;
+
+        if (TweenSrDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRenderer TweenReForRenderer(Renderer target)
+    {
+        TweenRenderer tween;
+
+        if (TweenRendererDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenCG TweenReForCG(Transform target)
+    {
+        TweenCG tween;
+
+        if (TweenCgDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenGra TweenReForGra(Transform target)
+    {
+        TweenGra tween;
+
+        if (TweenGraDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenVec TweenReForVec(Transform target)
+    {
+        TweenVec tween;
+
+        if (TweenVecDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenEuler TweenReForEuler(Transform target)
+    {
+        TweenEuler tween;
+
+        if (TweenEulerDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenFont TweenReForFont(Transform target)
+    {
+        TweenFont tween;
+
+        if (TweenFontDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRect TweenReForRect(Transform target)
+    {
+        TweenRect tween;
+
+        if (TweenRectDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenScale TweenReForScale(Transform target)
+    {
+        TweenScale tween;
+
+        if (TweenScaleDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenReForAudio(Transform target)
+    {
+        TweenAudio tween;
+        AudioSource audioSource = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenReForAudio(AudioSource audioSource)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenOutline TweenReForOutline(Transform target)
+    {
+        TweenOutline tween;
+
+        if (TweenOutlineDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenNumber TweenReForNumber(Transform target)
+    {
+        TweenNumber tween;
+
+        if (TweenNumberDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatFloat TweenReForMatFloat(MaterialUnit target)
+    {
+        TweenMatFloat tween;
+
+        if (TweenMatFloatDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatColor TweenReForMatColor(MaterialUnit target)
+    {
+        TweenMatColor tween;
+
+        if (TweenMatColorDic.TryGetValue(target, out tween))
+        {
+            tween.ReForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+
+    public static TweenSr TweenReBacSr(Transform target)
+    {
+        TweenSr tween;
+
+        if (TweenSrDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRenderer TweenReBacRenderer(Renderer target)
+    {
+        TweenRenderer tween;
+
+        if (TweenRendererDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenCG TweenReBacCG(Transform target)
+    {
+        TweenCG tween;
+
+        if (TweenCgDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenGra TweenReBacGra(Transform target)
+    {
+        TweenGra tween;
+
+        if (TweenGraDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+
+        return tween;
+    }
+
+    public static TweenVec TweenReBacVec(Transform target)
+    {
+        TweenVec tween;
+
+        if (TweenVecDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+
+        return tween;
+    }
+
+    public static TweenEuler TweenReBacEuler(Transform target)
+    {
+        TweenEuler tween;
+
+        if (TweenEulerDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+
+        return tween;
+    }
+
+    public static TweenFont TweenReBacFont(Transform target)
+    {
+        TweenFont tween;
+
+        if (TweenFontDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenRect TweenReBacRect(Transform target)
+    {
+        TweenRect tween;
+
+        if (TweenRectDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenScale TweenReBacScale(Transform target)
+    {
+        TweenScale tween;
+
+        if (TweenScaleDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenReBacAudio(Transform target)
+    {
+        TweenAudio tween;
+        AudioSource audioSource = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenAudio TweenReBacAudio(AudioSource audioSource)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenOutline TweenReBacOutline(Transform target)
+    {
+        TweenOutline tween;
+
+        if (TweenOutlineDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenNumber TweenReBacNumber(Transform target)
+    {
+        TweenNumber tween;
+
+        if (TweenNumberDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatFloat TweenReBacMatFloat(MaterialUnit target)
+    {
+        TweenMatFloat tween;
+
+        if (TweenMatFloatDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    public static TweenMatColor TweenReBacMatColor(MaterialUnit target)
+    {
+        TweenMatColor tween;
+
+        if (TweenMatColorDic.TryGetValue(target, out tween))
+        {
+            tween.ReBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+
+        return tween;
+    }
+
+    #endregion
+
+    #region 获取动画
+
+    public static float GetTimerVec(Vector3 value, float duration, Vector3 start, Vector3 delta, Curve curve)
+    {
+        if (!delta.x.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.x, duration, start.x, delta.x);
+        }
+        else if (!delta.y.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.y, duration, start.y, delta.y);
+        }
+        else if (!delta.z.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.z, duration, start.z, delta.z);
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static float GetTimerFloat(float value, float duration, float start, float delta, Curve curve)
+    {
+        return TimerFunctionDic[curve](value, duration, start, delta);
+    }
+
+    public static float GetTimerColor(Color value, float duration, Color start, Color delta, Curve curve)
+    {
+        if (!delta.r.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.r, duration, start.r, delta.r);
+        }
+        else if (!delta.g.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.g, duration, start.g, delta.g);
+        }
+        else if (!delta.b.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.b, duration, start.b, delta.b);
+        }
+        else if (!delta.a.Equal(0))
+        {
+            return TimerFunctionDic[curve](value.a, duration, start.a, delta.a);
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+
+    public static Shake GetShake(Transform target)
+    {
+        Shake move;
+
+        if (ShakeDic.TryGetValue(target, out move))
+        {
+            return move;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static Move2D GetMove2D(Transform target)
+    {
+        Move2D move;
+
+        if (MoveDic2D.TryGetValue(target, out move))
+        {
+            return move;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static Move3D GetMove3D(Transform target)
+    {
+        Move3D move;
+
+        if (MoveDic3D.TryGetValue(target, out move))
+        {
+            return move;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static Zoom2D GetZoom2D(Transform target)
+    {
+        Zoom2D move;
+
+        if (ZoomDic2D.TryGetValue(target, out move))
+        {
+            return move;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+
+    public static StreamScale GetStreamScale(Transform target)
+    {
+        StreamScale stream;
+
+        if (StreamScaleDic.TryGetValue(target, out stream))
+        {
+            return stream;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+
+    public static TweenSr GetTweenSr(Transform target)
+    {
+        TweenSr tween;
+
+        if (TweenSrDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenRenderer GetTweenRenderer(Renderer target)
+    {
+        TweenRenderer tween;
+
+        if (TweenRendererDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenCG GetTweenCG(Transform target)
+    {
+        TweenCG tween;
+
+        if (TweenCgDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenGra GetTweenGra(Transform target)
+    {
+        TweenGra tween;
+
+        if (TweenGraDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenVec GetTweenVec(Transform target)
+    {
+        TweenVec tween;
+
+        if (TweenVecDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenEuler GetTweenEuler(Transform target)
+    {
+        TweenEuler tween;
+
+        if (TweenEulerDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenFont GetTweenFont(Transform target)
+    {
+        TweenFont tween;
+
+        if (TweenFontDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenRect GetTweenRect(Transform target)
+    {
+        TweenRect tween;
+
+        if (TweenRectDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenScale GetTweenScale(Transform target)
+    {
+        TweenScale tween;
+
+        if (TweenScaleDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenAudio GetTweenAudio(Transform target)
+    {
+        TweenAudio tween;
+        AudioSource audioSource = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenAudio GetTweenAudio(AudioSource audioSource)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(audioSource, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenOutline GetTweenOutline(Transform target)
+    {
+        TweenOutline tween;
+
+        if (TweenOutlineDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenNumber GetTweenNumber(Transform target)
+    {
+        TweenNumber tween;
+
+        if (TweenNumberDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenMatFloat GetTweenMatFloat(MaterialUnit target)
+    {
+        TweenMatFloat tween;
+
+        if (TweenMatFloatDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenMatColor GetTweenMatColor(MaterialUnit target)
+    {
+        TweenMatColor tween;
+
+        if (TweenMatColorDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    public static TweenGrayMesh GetTweenGrayMesh(MeshFilter target)
+    {
+        TweenGrayMesh tween;
+
+        if (TweenGrayMeshDic.TryGetValue(target, out tween))
+        {
+            return tween;
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    #endregion
+
+    #region 创建动画
+
+    public static Shake CreateShake(Transform target)
+    {
+        if (ShakeDic.ContainsKey(target))
+        {
+            Shake shake = ShakeDic[target];
+
+            shake.Pause();
+
+            ShakeDic[target] = new Shake(target);
+
+            return ShakeDic[target];
+        }
+        else
+        {
+            Shake shake = new Shake(target);
+
+            ShakeDic.Add(target, shake);
+
+            return shake;
+        }
+    }
+
+    public static Move2D CreateMove2D(Transform target)
+    {
+        if (MoveDic2D.ContainsKey(target))
+        {
+            Move2D move2D = MoveDic2D[target];
+
+            move2D.Pause();
+
+            MoveDic2D[target] = new Move2D(target);
+
+            return MoveDic2D[target];
+        }
+        else
+        {
+            Move2D move2D = new Move2D(target);
+
+            MoveDic2D.Add(target, move2D);
+
+            return move2D;
+        }
+    }
+
+    public static Move3D CreateMove3D(Transform target)
+    {
+        if (MoveDic3D.ContainsKey(target))
+        {
+            Move3D move3D = MoveDic3D[target];
+
+            move3D.Pause();
+
+            MoveDic3D[target] = new Move3D(target);
+
+            return MoveDic3D[target];
+        }
+        else
+        {
+            Move3D move3D = new Move3D(target);
+
+            MoveDic3D.Add(target, move3D);
+
+            return move3D;
+        }
+    }
+
+    public static Zoom2D CreateZoom2D(Transform target)
+    {
+        if (ZoomDic2D.ContainsKey(target))
+        {
+            Zoom2D zoom2D = ZoomDic2D[target];
+
+            zoom2D.Pause();
+
+            ZoomDic2D[target] = new Zoom2D(target.GetComponent<Camera>());
+
+            return ZoomDic2D[target];
+        }
+        else
+        {
+            Zoom2D zoom2D = new Zoom2D(target.GetComponent<Camera>());
+
+            ZoomDic2D.Add(target, zoom2D);
+
+            return zoom2D;
+        }
+    }
+
+
+    public static StreamScale CreateStreamScale(Transform target, List<float> delayList, List<float> durationList, List<VecPair> destKvList, bool originActive, bool destActive, Curve curve, bool cg = false, List<UnityAction> startActionList = null, List<UnityAction> finishActionList = null)
+    {
+        StreamScale streamScale;
+
+        if (StreamScaleDic.ContainsKey(target))
+        {
+            streamScale = StreamScaleDic[target];
+
+            streamScale.Pause();
+
+            StreamScaleDic[target] = new StreamScale(target, delayList, durationList, destKvList, originActive, destActive, curve, cg, startActionList, finishActionList);
+
+            return StreamScaleDic[target];
+        }
+        else
+        {
+            streamScale = new StreamScale(target, delayList, durationList, destKvList, originActive, destActive, curve, cg, startActionList, finishActionList);
+
+            StreamScaleDic.Add(target, streamScale);
+
+            return streamScale;
+        }
+    }
+
+    public static StreamScale CreateStreamScale(Transform target, List<float> delayList, List<float> durationList, List<Vector3> destList, bool originActive, bool destActive, Curve curve, bool cg = false, List<UnityAction> startActionList = null, List<UnityAction> finishActionList = null)
+    {
+        StreamScale streamScale;
+
+        if (StreamScaleDic.ContainsKey(target))
+        {
+            streamScale = StreamScaleDic[target];
+
+            streamScale.Pause();
+
+            StreamScaleDic[target] = new StreamScale(target, delayList, durationList, destList, originActive, destActive, curve, cg, startActionList, finishActionList);
+
+            return StreamScaleDic[target];
+        }
+        else
+        {
+            streamScale = new StreamScale(target, delayList, durationList, destList, originActive, destActive, curve, cg, startActionList, finishActionList);
+
+            StreamScaleDic.Add(target, streamScale);
+
+            return streamScale;
+        }
+    }
+
+
+    public static TweenSr CreateTweenSr(Transform target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenSr tweenSr;
+        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+        Color origin = sr.color;
+        Color destination = sr.color;
+
+        origin.a = originAlpha;
+        destination.a = destAlpha;
+
+        if (TweenSrDic.ContainsKey(target))
+        {
+            tweenSr = TweenSrDic[target];
+
+            tweenSr.Pause();
+
+            TweenSrDic[target] = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenSrDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenSrDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+    public static TweenSr CreateTweenSr(Transform target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenSr tweenSr;
+        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+        Color destination = sr.color;
+
+        destination.a = destAlpha;
+
+        if (TweenSrDic.ContainsKey(target))
+        {
+            tweenSr = TweenSrDic[target];
+
+            tweenSr.Pause();
+
+            TweenSrDic[target] = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenSrDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenSrDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+    public static TweenSr CreateTweenSr(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenSr tweenSr;
+        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+        if (TweenSrDic.ContainsKey(target))
+        {
+            tweenSr = TweenSrDic[target];
+
+            tweenSr.Pause();
+
+            TweenSrDic[target] = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenSrDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenSrDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+    public static TweenSr CreateTweenSr(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenSr tweenSr;
+        SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+        if (TweenSrDic.ContainsKey(target))
+        {
+            tweenSr = TweenSrDic[target];
+
+            tweenSr.Pause();
+
+            TweenSrDic[target] = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenSrDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenSrDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+
+    public static TweenRenderer CreateTweenRenderer(Renderer target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenRenderer tweenSr;
+        Color origin = target.sharedMaterial.GetColor("_Color");
+        Color destination = target.sharedMaterial.GetColor("_Color");
+
+        origin.a = originAlpha;
+        destination.a = destAlpha;
+
+        if (TweenRendererDic.ContainsKey(target))
+        {
+            tweenSr = TweenRendererDic[target];
+
+            tweenSr.Pause();
+
+            TweenRendererDic[target] = new TweenRenderer(target, origin, destination, duration, originActive, destActive, curve, cg, group);
+            tweenSr.AlphaOnly = true;
+            return TweenRendererDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenRenderer(target, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenRendererDic.Add(target, tweenSr);
+            tweenSr.AlphaOnly = true;
+            return tweenSr;
+        }
+    }
+
+    public static TweenRenderer CreateTweenRenderer(Renderer target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenRenderer tweenSr;
+        Renderer sr = target.GetComponent<Renderer>();
+
+        Color destination = sr.material.GetColor("_Color");
+
+        destination.a = destAlpha;
+
+        if (TweenRendererDic.ContainsKey(target))
+        {
+            tweenSr = TweenRendererDic[target];
+
+            tweenSr.Pause();
+
+            TweenRendererDic[target] = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenRendererDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenRendererDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+    public static TweenRenderer CreateTweenRenderer(Renderer target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenRenderer tweenSr;
+        Renderer sr = target.GetComponent<Renderer>();
+
+        if (TweenRendererDic.ContainsKey(target))
+        {
+            tweenSr = TweenRendererDic[target];
+
+            tweenSr.Pause();
+
+            TweenRendererDic[target] = new TweenRenderer(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenRendererDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenRenderer(sr, origin, destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenRendererDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+    public static TweenRenderer CreateTweenRenderer(Renderer target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false, bool group = false)
+    {
+        TweenRenderer tweenSr;
+        Renderer sr = target.GetComponent<Renderer>();
+
+        if (TweenRendererDic.ContainsKey(target))
+        {
+            tweenSr = TweenRendererDic[target];
+
+            tweenSr.Pause();
+
+            TweenRendererDic[target] = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
+
+            return TweenRendererDic[target];
+        }
+        else
+        {
+            tweenSr = new TweenRenderer(sr, sr.material.GetColor("_Color"), destination, duration, originActive, destActive, curve, cg, group);
+
+            TweenRendererDic.Add(target, tweenSr);
+
+            return tweenSr;
+        }
+    }
+
+
+    public static TweenCG CreateTweenCG(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        TweenCG tweenCg;
+        CanvasGroup cg = target.GetComponent<CanvasGroup>();
+
+        if (TweenCgDic.ContainsKey(target))
+        {
+            tweenCg = TweenCgDic[target];
+
+            tweenCg.Pause();
+
+            TweenCgDic[target] = new TweenCG(cg, origin, destination, duration, originActive, destActive, curve);
+
+            return TweenCgDic[target];
+        }
+        else
+        {
+            tweenCg = new TweenCG(cg, origin, destination, duration, originActive, destActive, curve);
+
+            TweenCgDic.Add(target, tweenCg);
+
+            return tweenCg;
+        }
+    }
+
+    public static TweenCG CreateTweenCG(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        TweenCG tweenCg;
+        CanvasGroup cg = target.GetComponent<CanvasGroup>();
+
+        if (TweenCgDic.ContainsKey(target))
+        {
+            tweenCg = TweenCgDic[target];
+
+            tweenCg.Pause();
+
+            TweenCgDic[target] = new TweenCG(cg, cg.alpha, destination, duration, originActive, destActive, curve);
+
+            return TweenCgDic[target];
+        }
+        else
+        {
+            tweenCg = new TweenCG(cg, cg.alpha, destination, duration, originActive, destActive, curve);
+
+            TweenCgDic.Add(target, tweenCg);
+
+            return tweenCg;
+        }
+    }
+
+
+    public static TweenGra CreateTweenGra(Transform target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Graphic graphic = target.GetComponent<Graphic>();
+        TweenGra tweenGra;
+
+        Color origin = graphic.color;
+        Color destination = graphic.color;
+
+        origin.a = originAlpha;
+        destination.a = destAlpha;
+
+        if (TweenGraDic.ContainsKey(target))
+        {
+            tweenGra = TweenGraDic[target];
+
+            tweenGra.Pause();
+
+            TweenGraDic[target] = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenGraDic[target];
+        }
+        else
+        {
+            tweenGra = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenGraDic.Add(target, tweenGra);
+
+            return tweenGra;
+        }
+    }
+
+    public static TweenGra CreateTweenGra(Transform target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Graphic graphic = target.GetComponent<Graphic>();
+        TweenGra tweenGra;
+
+        Color destination = graphic.color;
+
+        destination.a = destAlpha;
+
+        if (TweenGraDic.ContainsKey(target))
+        {
+            tweenGra = TweenGraDic[target];
+
+            tweenGra.Pause();
+
+            TweenGraDic[target] = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenGraDic[target];
+        }
+        else
+        {
+            tweenGra = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
+
+            TweenGraDic.Add(target, tweenGra);
+
+            return tweenGra;
+        }
+    }
+
+    public static TweenGra CreateTweenGra(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Graphic graphic = target.GetComponent<Graphic>();
+        TweenGra tweenGra;
+
+        if (TweenGraDic.ContainsKey(target))
+        {
+            tweenGra = TweenGraDic[target];
+
+            tweenGra.Pause();
+
+            TweenGraDic[target] = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenGraDic[target];
+        }
+        else
+        {
+            tweenGra = new TweenGra(graphic, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenGraDic.Add(target, tweenGra);
+
+            return tweenGra;
+        }
+    }
+
+    public static TweenGra CreateTweenGra(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Graphic graphic = target.GetComponent<Graphic>();
+        TweenGra tweenGra;
+
+        if (TweenGraDic.ContainsKey(target))
+        {
+            tweenGra = TweenGraDic[target];
+
+            tweenGra.Pause();
+
+            TweenGraDic[target] = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenGraDic[target];
+        }
+        else
+        {
+            tweenGra = new TweenGra(graphic, graphic.color, destination, duration, originActive, destActive, curve, cg);
+
+            TweenGraDic.Add(target, tweenGra);
+
+            return tweenGra;
+        }
+    }
+
+
+    public static TweenVec CreateTweenVec2D(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenVec tweenVec2D;
+
+        if (local)
+        {
+            origin.z = target.localPosition.z;
+            destination.z = target.localPosition.z;
+        }
+        else
+        {
+            origin.z = target.position.z;
+            destination.z = target.position.z;
+        }
+
+        if (TweenVecDic.ContainsKey(target))
+        {
+            tweenVec2D = TweenVecDic[target];
+
+            tweenVec2D.Pause();
+
+            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenVecDic[target];
+        }
+        else
+        {
+            tweenVec2D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenVecDic.Add(target, tweenVec2D);
+
+            return tweenVec2D;
+        }
+    }
+
+    public static TweenVec CreateTweenVec2D(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenVec tweenVec2D;
+
+        Vector3 origin;
+
+        if (local)
+        {
+            origin = target.localPosition;
+
+            destination.z = target.localPosition.z;
+        }
+        else
+        {
+            origin = target.position;
+
+            destination.z = target.position.z;
+        }
+
+
+        if (TweenVecDic.ContainsKey(target))
+        {
+            tweenVec2D = TweenVecDic[target];
+
+            tweenVec2D.Pause();
+
+            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenVecDic[target];
+        }
+        else
+        {
+            tweenVec2D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenVecDic.Add(target, tweenVec2D);
+
+            return tweenVec2D;
+        }
+    }
+
+    public static TweenVec CreateTweenVecOffset2D(Transform target, Vector3 offset, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenVec tweenVec2D;
+
+        Vector3 origin;
+        Vector3 destination;
+
+        if (local)
+        {
+            origin = target.localPosition;
+            destination = target.localPosition + offset;
+
+            destination.z = target.localPosition.z;
+        }
+        else
+        {
+            origin = target.position;
+            destination = target.position + offset;
+
+            destination.z = target.position.z;
+        }
+
+        if (TweenVecDic.ContainsKey(target))
+        {
+            tweenVec2D = TweenVecDic[target];
+
+            tweenVec2D.Pause();
+
+            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenVecDic[target];
+        }
+        else
+        {
+            tweenVec2D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenVecDic.Add(target, tweenVec2D);
+
+            return tweenVec2D;
+        }
+    }
+
+
+    public static TweenVec CreateTweenVec3D(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenVec tweenVec3D;
+
+        if (TweenVecDic.ContainsKey(target))
+        {
+            tweenVec3D = TweenVecDic[target];
+
+            tweenVec3D.Pause();
+
+            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenVecDic[target];
+        }
+        else
+        {
+            tweenVec3D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenVecDic.Add(target, tweenVec3D);
+
+            return tweenVec3D;
+        }
+    }
+
+    public static TweenVec CreateTweenVec3D(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenVec tweenVec3D;
+
+        Vector3 origin;
+
+        if (local)
+        {
+            origin = target.localPosition;
+        }
+        else
+        {
+            origin = target.position;
+        }
+
+        if (TweenVecDic.ContainsKey(target))
+        {
+            tweenVec3D = TweenVecDic[target];
+
+            tweenVec3D.Pause();
+
+            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenVecDic[target];
+        }
+        else
+        {
+            tweenVec3D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenVecDic.Add(target, tweenVec3D);
+
+            return tweenVec3D;
+        }
+    }
+
+    public static TweenVec CreateTweenVecOffset3D(Transform target, Vector3 offset, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenVec tweenVec3D;
+
+        Vector3 origin;
+        Vector3 destination;
+
+        if (local)
+        {
+            origin = target.localPosition;
+            destination = target.localPosition + offset;
+        }
+        else
+        {
+            origin = target.position;
+            destination = target.position + offset;
+        }
+
+        if (TweenVecDic.ContainsKey(target))
+        {
+            tweenVec3D = TweenVecDic[target];
+
+            tweenVec3D.Pause();
+
+            TweenVecDic[target] = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenVecDic[target];
+        }
+        else
+        {
+            tweenVec3D = new TweenVec(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenVecDic.Add(target, tweenVec3D);
+
+            return tweenVec3D;
+        }
+    }
+
+
+    public static TweenEuler CreateTweenEuler(Transform target, Vector3 origin, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenEuler tweenEuler;
+
+        if (TweenEulerDic.ContainsKey(target))
+        {
+            tweenEuler = TweenEulerDic[target];
+
+            tweenEuler.Pause();
+
+            TweenEulerDic[target] = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenEulerDic[target];
+        }
+        else
+        {
+            tweenEuler = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenEulerDic.Add(target, tweenEuler);
+
+            return tweenEuler;
+        }
+    }
+
+    public static TweenEuler CreateTweenEuler(Transform target, Vector3 destination, float duration, bool local, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenEuler tweenEuler;
+
+        Vector3 origin;
+
+        if (local)
+        {
+            origin = target.localEulerAngles;
+        }
+        else
+        {
+            origin = target.eulerAngles;
+        }
+
+        if (TweenEulerDic.ContainsKey(target))
+        {
+            tweenEuler = TweenEulerDic[target];
+
+            tweenEuler.Pause();
+
+            TweenEulerDic[target] = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            return TweenEulerDic[target];
+        }
+        else
+        {
+            tweenEuler = new TweenEuler(target, origin, destination, duration, local, originActive, destActive, curve, cg);
+
+            TweenEulerDic.Add(target, tweenEuler);
+
+            return tweenEuler;
+        }
+    }
+
+
+    public static TweenFont CreateTweenFont(Transform target, int origin, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Text text = target.GetComponent<Text>();
+        TweenFont tweenFont;
+
+        if (TweenRectDic.ContainsKey(target))
+        {
+            tweenFont = TweenFontDic[target];
+
+            tweenFont.Pause();
+
+            TweenFontDic[target] = new TweenFont(text, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenFontDic[target];
+        }
+        else
+        {
+            tweenFont = new TweenFont(text, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenFontDic.Add(target, tweenFont);
+
+            return tweenFont;
+        }
+    }
+
+    public static TweenFont CreateTweenFont(Transform target, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Text text = target.GetComponent<Text>();
+        TweenFont tweenFont;
+
+        if (TweenRectDic.ContainsKey(target))
+        {
+            tweenFont = TweenFontDic[target];
+
+            tweenFont.Pause();
+
+            TweenFontDic[target] = new TweenFont(text, text.fontSize, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenFontDic[target];
+        }
+        else
+        {
+            tweenFont = new TweenFont(text, text.fontSize, destination, duration, originActive, destActive, curve, cg);
+
+            TweenFontDic.Add(target, tweenFont);
+
+            return tweenFont;
+        }
+    }
+
+
+    public static TweenRect CreateTweenRect(Transform target, Vector2 origin, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenRect tweenRect;
+        RectTransform rectTra = target.GetComponent<RectTransform>();
+
+        if (TweenRectDic.ContainsKey(target))
+        {
+            tweenRect = TweenRectDic[target];
+
+            tweenRect.Pause();
+
+            TweenRectDic[target] = new TweenRect(rectTra, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenRectDic[target];
+        }
+        else
+        {
+            tweenRect = new TweenRect(rectTra, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenRectDic.Add(target, tweenRect);
+
+            return tweenRect;
+        }
+    }
+
+    public static TweenRect CreateTweenRect(Transform target, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenRect tweenRect;
+        RectTransform rectTra = target.GetComponent<RectTransform>();
+
+        if (TweenRectDic.ContainsKey(target))
+        {
+            tweenRect = TweenRectDic[target];
+
+            tweenRect.Pause();
+
+            TweenRectDic[target] = new TweenRect(rectTra, rectTra.rect.size, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenRectDic[target];
+        }
+        else
+        {
+            tweenRect = new TweenRect(rectTra, rectTra.rect.size, destination, duration, originActive, destActive, curve, cg);
+
+            TweenRectDic.Add(target, tweenRect);
+
+            return tweenRect;
+        }
+    }
+
+
+    public static TweenScale CreateTweenScale(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Vector3 destScale = new Vector3(destination, destination, destination);
+        Vector3 originScale = new Vector3(origin, origin, origin);
+
+
+        TweenScale tweenScale;
+
+        if (TweenScaleDic.ContainsKey(target))
+        {
+            tweenScale = TweenScaleDic[target];
+
+            tweenScale.Pause();
+
+            TweenScaleDic[target] = new TweenScale(target, originScale, destScale, duration, originActive, destActive, curve, cg);
+
+            return TweenScaleDic[target];
+        }
+        else
+        {
+            tweenScale = new TweenScale(target, originScale, destScale, duration, originActive, destActive, curve, cg);
+
+            TweenScaleDic.Add(target, tweenScale);
+
+            return tweenScale;
+        }
+    }
+
+    public static TweenScale CreateTweenScale(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Vector3 destScale = new Vector3(destination, destination, destination);
+
+
+        TweenScale tweenScale;
+
+        if (TweenScaleDic.ContainsKey(target))
+        {
+            tweenScale = TweenScaleDic[target];
+
+            tweenScale.Pause();
+
+            TweenScaleDic[target] = new TweenScale(target, target.localScale, destScale, duration, originActive, destActive, curve, cg);
+
+            return TweenScaleDic[target];
+        }
+        else
+        {
+            tweenScale = new TweenScale(target, target.localScale, destScale, duration, originActive, destActive, curve, cg);
+
+            TweenScaleDic.Add(target, tweenScale);
+
+            return tweenScale;
+        }
+    }
+
+    public static TweenScale CreateTweenScale(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenScale tweenScale;
+
+        if (TweenScaleDic.ContainsKey(target))
+        {
+            tweenScale = TweenScaleDic[target];
+
+            tweenScale.Pause();
+
+            TweenScaleDic[target] = new TweenScale(target, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenScaleDic[target];
+        }
+        else
+        {
+            tweenScale = new TweenScale(target, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenScaleDic.Add(target, tweenScale);
+
+            return tweenScale;
+        }
+    }
+
+    public static TweenScale CreateTweenScale(Transform target, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenScale tweenScale;
+
+        if (TweenScaleDic.ContainsKey(target))
+        {
+            tweenScale = TweenScaleDic[target];
+
+            tweenScale.Pause();
+
+            TweenScaleDic[target] = new TweenScale(target, target.localScale, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenScaleDic[target];
+        }
+        else
+        {
+            tweenScale = new TweenScale(target, target.localScale, destination, duration, originActive, destActive, curve, cg);
+
+            TweenScaleDic.Add(target, tweenScale);
+
+            return tweenScale;
+        }
+    }
+
+
+    public static TweenAudio CreateTweenAudio(Transform target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenAudio tweenAudio;
+        AudioSource audio = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.ContainsKey(audio))
+        {
+            tweenAudio = TweenAudioDic[audio];
+
+            tweenAudio.Pause();
+
+            TweenAudioDic[audio] = new TweenAudio(audio, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenAudioDic[audio];
+        }
+        else
+        {
+            tweenAudio = new TweenAudio(audio, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenAudioDic.Add(audio, tweenAudio);
+
+            return tweenAudio;
+        }
+    }
+
+    public static TweenAudio CreateTweenAudio(Transform target, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenAudio tweenAudio;
+        AudioSource audio = target.GetComponent<AudioSource>();
+
+        if (TweenAudioDic.ContainsKey(audio))
+        {
+            tweenAudio = TweenAudioDic[audio];
+
+            tweenAudio.Pause();
+
+            TweenAudioDic[audio] = new TweenAudio(audio, audio.volume, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenAudioDic[audio];
+        }
+        else
+        {
+            tweenAudio = new TweenAudio(audio, audio.volume, destination, duration, originActive, destActive, curve, cg);
+
+            TweenAudioDic.Add(audio, tweenAudio);
+
+            return tweenAudio;
+        }
+    }
+
+    public static TweenAudio CreateTweenAudio(AudioSource audioSource, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenAudio tweenAudio;
+
+        if (TweenAudioDic.ContainsKey(audioSource))
+        {
+            tweenAudio = TweenAudioDic[audioSource];
+
+            tweenAudio.Pause();
+
+            TweenAudioDic[audioSource] = new TweenAudio(audioSource, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenAudioDic[audioSource];
+        }
+        else
+        {
+            tweenAudio = new TweenAudio(audioSource, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenAudioDic.Add(audioSource, tweenAudio);
+
+            return tweenAudio;
+        }
+    }
+
+    public static TweenAudio CreateTweenAudio(AudioSource audioSource, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenAudio tweenAudio;
+
+        if (TweenAudioDic.ContainsKey(audioSource))
+        {
+            tweenAudio = TweenAudioDic[audioSource];
+
+            tweenAudio.Pause();
+
+            TweenAudioDic[audioSource] = new TweenAudio(audioSource, audioSource.volume, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenAudioDic[audioSource];
+        }
+        else
+        {
+            tweenAudio = new TweenAudio(audioSource, audioSource.volume, destination, duration, originActive, destActive, curve, cg);
+            
+            TweenAudioDic.Add(audioSource, tweenAudio);
+
+            return tweenAudio;
+        }
+    }
+
+
+    public static TweenOutline CreateTweenOutline(Transform target, float originAlpha, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Outline outline = target.GetComponent<Outline>();
+        TweenOutline tweenOutline;
+
+        Color origin = outline.effectColor;
+        Color destination = outline.effectColor;
+
+        origin.a = originAlpha;
+        destination.a = destAlpha;
+
+        if (TweenOutlineDic.ContainsKey(target))
+        {
+            tweenOutline = TweenOutlineDic[target];
+
+            tweenOutline.Pause();
+
+            TweenOutlineDic[target] = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenOutlineDic[target];
+        }
+        else
+        {
+            tweenOutline = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenOutlineDic.Add(target, tweenOutline);
+
+            return tweenOutline;
+        }
+    }
+
+    public static TweenOutline CreateTweenOutline(Transform target, float destAlpha, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Outline graphic = target.GetComponent<Outline>();
+        TweenOutline tweenOutline;
+
+        Color destination = graphic.effectColor;
+
+        destination.a = destAlpha;
+
+        if (TweenOutlineDic.ContainsKey(target))
+        {
+            tweenOutline = TweenOutlineDic[target];
+
+            tweenOutline.Pause();
+
+            TweenOutlineDic[target] = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenOutlineDic[target];
+        }
+        else
+        {
+            tweenOutline = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
+
+            TweenOutlineDic.Add(target, tweenOutline);
+
+            return tweenOutline;
+        }
+    }
+
+    public static TweenOutline CreateTweenOutline(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Outline outline = target.GetComponent<Outline>();
+        TweenOutline tweenOutline;
+
+        if (TweenOutlineDic.ContainsKey(target))
+        {
+            tweenOutline = TweenOutlineDic[target];
+
+            tweenOutline.Pause();
+
+            TweenOutlineDic[target] = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenOutlineDic[target];
+        }
+        else
+        {
+            tweenOutline = new TweenOutline(outline, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenOutlineDic.Add(target, tweenOutline);
+
+            return tweenOutline;
+        }
+    }
+
+    public static TweenOutline CreateTweenOutline(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Outline graphic = target.GetComponent<Outline>();
+        TweenOutline tweenOutline;
+
+        if (TweenOutlineDic.ContainsKey(target))
+        {
+            tweenOutline = TweenOutlineDic[target];
+
+            tweenOutline.Pause();
+
+            TweenOutlineDic[target] = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenOutlineDic[target];
+        }
+        else
+        {
+            tweenOutline = new TweenOutline(graphic, graphic.effectColor, destination, duration, originActive, destActive, curve, cg);
+
+            TweenOutlineDic.Add(target, tweenOutline);
+
+            return tweenOutline;
+        }
+    }
+
+
+    public static TweenNumber CreateTweenNumber(Transform target, int origin, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Text text = target.GetComponent<Text>();
+        TweenNumber tweenNumber;
+
+        if (TweenNumberDic.ContainsKey(target))
+        {
+            tweenNumber = TweenNumberDic[target];
+
+            tweenNumber.Pause();
+
+            TweenNumberDic[target] = new TweenNumber(text, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenNumberDic[target];
+        }
+        else
+        {
+            tweenNumber = new TweenNumber(text, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenNumberDic.Add(target, tweenNumber);
+
+            return tweenNumber;
+        }
+    }
+
+    public static TweenNumber CreateTweenNumber(Transform target, int destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        Text text = target.GetComponent<Text>();
+        TweenNumber tweenNumber;
+
+        if (TweenNumberDic.ContainsKey(target))
+        {
+            tweenNumber = TweenNumberDic[target];
+
+            tweenNumber.Pause();
+
+            TweenNumberDic[target] = new TweenNumber(text, int.Parse(text.text), destination, duration, originActive, destActive, curve, cg);
+
+            return TweenNumberDic[target];
+        }
+        else
+        {
+            tweenNumber = new TweenNumber(text, int.Parse(text.text), destination, duration, originActive, destActive, curve, cg);
+
+            TweenNumberDic.Add(target, tweenNumber);
+
+            return tweenNumber;
+        }
+    }
+
+
+    public static TweenMatColor CreateTweenMatColor(MaterialUnit target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenMatColor tweenMatColor;
+
+        if (TweenMatColorDic.ContainsKey(target))
+        {
+            tweenMatColor = TweenMatColorDic[target];
+
+            tweenMatColor.Pause();
+
+            TweenMatColorDic[target] = new TweenMatColor(target, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenMatColorDic[target];
+        }
+        else
+        {
+            tweenMatColor = new TweenMatColor(target, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenMatColorDic.Add(target, tweenMatColor);
+
+            return tweenMatColor;
+        }
+    }
+
+    public static TweenMatColor CreateTweenMatColor(MaterialUnit target, Color destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenMatColor tweenMatColor;
+
+        if (TweenMatColorDic.ContainsKey(target))
+        {
+            tweenMatColor = TweenMatColorDic[target];
+
+            tweenMatColor.Pause();
+
+            TweenMatColorDic[target] = new TweenMatColor(target, target.GetColor(), destination, duration, originActive, destActive, curve, cg);
+
+            return TweenMatColorDic[target];
+        }
+        else
+        {
+            tweenMatColor = new TweenMatColor(target, target.GetColor(), destination, duration, originActive, destActive, curve, cg);
+
+            TweenMatColorDic.Add(target, tweenMatColor);
+
+            return tweenMatColor;
+        }
+    }
+
+    public static TweenMatFloat CreateTweenMatFloat(MaterialUnit target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenMatFloat tweenMatFloat;
+
+        if (TweenMatFloatDic.ContainsKey(target))
+        {
+            tweenMatFloat = TweenMatFloatDic[target];
+
+            tweenMatFloat.Pause();
+
+            TweenMatFloatDic[target] = new TweenMatFloat(target, origin, destination, duration, originActive, destActive, curve, cg);
+
+            return TweenMatFloatDic[target];
+        }
+        else
+        {
+            tweenMatFloat = new TweenMatFloat(target, origin, destination, duration, originActive, destActive, curve, cg);
+
+            TweenMatFloatDic.Add(target, tweenMatFloat);
+
+            return tweenMatFloat;
+        }
+    }
+
+    public static TweenMatFloat CreateTweenMatFloat(MaterialUnit target, float destination, float duration, bool originActive, bool destActive, Curve curve, bool cg = false)
+    {
+        TweenMatFloat tweenMatFloat;
+
+        if (TweenMatFloatDic.ContainsKey(target))
+        {
+            tweenMatFloat = TweenMatFloatDic[target];
+
+            tweenMatFloat.Pause();
+
+            TweenMatFloatDic[target] = new TweenMatFloat(target, target.GetFloat(), destination, duration, originActive, destActive, curve, cg);
+
+            return TweenMatFloatDic[target];
+        }
+        else
+        {
+            tweenMatFloat = new TweenMatFloat(target, target.GetFloat(), destination, duration, originActive, destActive, curve, cg);
+
+            TweenMatFloatDic.Add(target, tweenMatFloat);
+
+            return tweenMatFloat;
+        }
+    }
+
+
+    public static TweenGrayMesh CreateTweenGrayMesh(MeshFilter target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        TweenGrayMesh tweenGrayMesh;
+
+        if (TweenGrayMeshDic.ContainsKey(target))
+        {
+            tweenGrayMesh = TweenGrayMeshDic[target];
+
+            tweenGrayMesh.Pause();
+
+            TweenGrayMeshDic[target] = new TweenGrayMesh(target, origin, destination, duration, originActive, destActive, curve);
+
+            return TweenGrayMeshDic[target];
+        }
+        else
+        {
+            tweenGrayMesh = new TweenGrayMesh(target, origin, destination, duration, originActive, destActive, curve);
+
+            TweenGrayMeshDic.Add(target, tweenGrayMesh);
+
+            return tweenGrayMesh;
+        }
+    }
+
+    #endregion
 }

+ 128 - 21
Assets/Script/Manage/ConfigManager.cs

@@ -104,16 +104,27 @@ public class ConfigManager : Regist
             }
             catch (Exception)
             {
-                Debug.LogWarning("Download Archive : MD5 doesn't match");
-                //ManaDebug.Log("Download Archive");
+                string cacheStr = PlayerPrefManager.GetStr(PlayerPrefManager.PLAYER_CONFIG, null);
+                if (cacheStr == null)
+                {
+                    Debug.LogWarning("Download Archive : MD5 doesn't match");
+                    //ManaDebug.Log("Download Archive");
 
-                PlayerDocumentDamageFlag = true;
-                SerialNumberRequestFlag = false;
+                    PlayerDocumentDamageFlag = true;
+                    SerialNumberRequestFlag = false;
 
-                return;
+                    return;
+                }
+                else
+                {
+                    Debug.LogWarning("Recover Archive From PlayerPref : MD5 doesn't match");
+
+                    nativeDoc.LoadXml(cacheStr);
+                }
             }
 
 
+
             TextAsset textAsset = ResourceManager.Load<TextAsset>(ResourceLabel.PlayerConfig, Folder.Default);
 
             DefaultConfigDocument.LoadXml(textAsset.text);
@@ -160,13 +171,30 @@ public class ConfigManager : Regist
 
                     if (PlayerPrefs.GetString(Lib.ConfigPrefs) != UnvalidConfigMD5 && PlayerPrefs.GetString(Lib.ConfigPrefs) != Auxiliary.ToString(md5.ComputeHash(bytes)))
                     {
-                        Debug.LogWarning("Download Archive : MD5 doesn't match");
-                        //ManaDebug.Log("Download Archive");
 
-                        PlayerDocumentDamageFlag = true;
-                        SerialNumberRequestFlag = false;
 
-                        return;
+                        string cacheStr = PlayerPrefManager.GetStr(PlayerPrefManager.PLAYER_CONFIG, null);
+                        if (cacheStr == null)
+                        {
+                            Debug.LogWarning("Download Archive : MD5 doesn't match");
+                            //ManaDebug.Log("Download Archive");
+
+                            PlayerDocumentDamageFlag = true;
+                            SerialNumberRequestFlag = false;
+
+                            return;
+                        }
+                        else
+                        {
+                            Debug.LogWarning("Recover Archive From PlayerPref : MD5 doesn't match");
+
+                            nativeDoc.LoadXml(cacheStr);
+
+                            configDocument = UpdateConfigDocument(nativeVersion, nativeDoc, DefaultConfigDocument);
+                        }
+
+
+
                     }
                     else
                     {
@@ -177,7 +205,7 @@ public class ConfigManager : Regist
                 }
                 else if (nativeVersion > defaultVersion)
                 {
-                    //configDocument = DefaultConfigDocument;
+                    configDocument = nativeDoc;
                 }
                 else
                 {
@@ -187,13 +215,29 @@ public class ConfigManager : Regist
 
                     if (PlayerPrefs.GetString(Lib.ConfigPrefs) != UnvalidConfigMD5 && PlayerPrefs.GetString(Lib.ConfigPrefs) != Auxiliary.ToString(md5.ComputeHash(bytes)))
                     {
-                        Debug.LogWarning("Download Archive : MD5 doesn't match");
-                        //ManaDebug.Log("Download Archive");
 
-                        PlayerDocumentDamageFlag = true;
-                        SerialNumberRequestFlag = false;
 
-                        return;
+
+                        string cacheStr = PlayerPrefManager.GetStr(PlayerPrefManager.PLAYER_CONFIG, null);
+                        if (cacheStr == null)
+                        {
+                            Debug.LogWarning("Download Archive : MD5 doesn't match");
+                            //ManaDebug.Log("Download Archive");
+
+                            PlayerDocumentDamageFlag = true;
+                            SerialNumberRequestFlag = false;
+
+                            return;
+                        }
+                        else
+                        {
+                            Debug.LogWarning("Recover Archive From PlayerPref : MD5 doesn't match");
+
+                            nativeDoc.LoadXml(cacheStr);
+                        }
+
+
+
                     }
 
                     configDocument = nativeDoc;
@@ -206,13 +250,34 @@ public class ConfigManager : Regist
 
             DefaultConfigDocument.LoadXml(textAsset.text);
 
-            Debug.LogWarning("Download Archive");
-            //ManaDebug.Log("Download Archive");
 
-            PlayerDocumentDamageFlag = true;
-            SerialNumberRequestFlag = false;
 
-            return;
+            string cacheStr = PlayerPrefManager.GetStr(PlayerPrefManager.PLAYER_CONFIG, null);
+            if (cacheStr == null)
+            {
+                Debug.LogWarning("Download Archive");
+                //ManaDebug.Log("Download Archive");
+
+                PlayerDocumentDamageFlag = true;
+                SerialNumberRequestFlag = false;
+
+                return;
+            }
+            else
+            {
+                Debug.LogWarning("Recover Archive From PlayerPref : file doesn't exist");
+
+                nativeDoc.LoadXml(cacheStr);
+
+                node = nativeDoc.SelectSingleNode(PlayerConfigLabel.RootNode).SelectSingleNode(PlayerConfigLabel.Version);
+
+                nativeVersion = int.Parse(node.Attributes[0].Value);
+
+                configDocument = UpdateConfigDocument(nativeVersion, nativeDoc, DefaultConfigDocument);
+            }
+
+
+
         }
     }
 
@@ -623,6 +688,8 @@ public class ConfigManager : Regist
     {
         if (Initializer.Inited)
         {
+            PlayerPrefManager.SaveStr(PlayerPrefManager.PLAYER_CONFIG, ConfigDocument.OuterXml);
+
             XmlDocument doc = new XmlDocument();
 
             doc.LoadXml(ConfigDocument.OuterXml);
@@ -1562,6 +1629,20 @@ public class ConfigManager : Regist
             ToVersion39(nativeDoc, defaultDoc);
         }
 
+        if (nativeVersion < 40)
+        {
+            Debug.LogWarning("UpdateArchive to 40");
+
+            ToVersion40(nativeDoc, defaultDoc);
+        }
+
+        if (nativeVersion < 41)
+        {
+            Debug.LogWarning("UpdateArchive to 41");
+
+            ToVersion41(nativeDoc, defaultDoc);
+        }
+
         return nativeDoc;
     }
 
@@ -2120,4 +2201,30 @@ public class ConfigManager : Regist
 
         return nativeDoc;
     }
+
+    public static XmlDocument ToVersion40(XmlDocument nativeDoc, XmlDocument defaultDoc)
+    {
+        nativeDoc.SelectSingleNode(PlayerConfigLabel.RootNode).SelectSingleNode(PlayerConfigLabel.Version).Attributes[0].Value = 40.ToString();
+
+        string persistentFolderPath = string.Format("{0}{1}HotUpdate", Application.persistentDataPath, Path.DirectorySeparatorChar);
+        if (Directory.Exists(persistentFolderPath))
+        {
+            Directory.Delete(persistentFolderPath, true);
+        }
+
+        return nativeDoc;
+    }
+
+    public static XmlDocument ToVersion41(XmlDocument nativeDoc, XmlDocument defaultDoc)
+    {
+        nativeDoc.SelectSingleNode(PlayerConfigLabel.RootNode).SelectSingleNode(PlayerConfigLabel.Version).Attributes[0].Value = 41.ToString();
+
+        string persistentFolderPath = string.Format("{0}{1}HotUpdate", Application.persistentDataPath, Path.DirectorySeparatorChar);
+        if (Directory.Exists(persistentFolderPath))
+        {
+            Directory.Delete(persistentFolderPath, true);
+        }
+
+        return nativeDoc;
+    }
 }

+ 14 - 0
Assets/Script/Manage/HttpManager.cs

@@ -1979,6 +1979,20 @@ public class HttpManager : Regist
         }
     }
 
+    public static void SendEmail(string mainAddress, string content)
+    {
+        MailMessage mailMessage = new MailMessage();
+        mailMessage.To.Add(new MailAddress(mainAddress));
+        mailMessage.From = new MailAddress(ReporterMailAccount);
+        mailMessage.Body = content;
+        mailMessage.Subject = "MyLovelyGargen backup";
+
+        SmtpClient smtpClient = new SmtpClient(SmtpHost);
+
+        smtpClient.Credentials = new MyCredentials(ReporterMailAccount, ReporterMailPassword);
+        smtpClient.SendAsync(mailMessage, "Async");
+    }
+
     public static string GetSystemInfo()
     {
         StringBuilder sb = new StringBuilder();

+ 3 - 0
Assets/Script/Manage/Initializer.cs

@@ -248,6 +248,9 @@ public class Initializer : MonoBehaviour
         gameObject.AddScript<FashionShowHomePage>();
 
         InitScriptProgress = index++.ToString();
+        gameObject.AddScript<BackupIDPanel>();
+
+        InitScriptProgress = index++.ToString();
 
         StartCoroutine(WaitToInit());
     }

+ 112 - 0
Assets/Script/Manage/Panel/BackupIDPanel.cs

@@ -0,0 +1,112 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Mail;
+using System.Text;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class BackupIDPanel : Regist
+{
+    public static Text panelTxt;
+    public static Transform panel;
+
+    public static Text backupTxt;
+    public static Button backupBtn;
+
+    public static Text cancelTxt;
+    public static Button cancelBtn;
+
+    public static Text confirmTxt;
+    public static Button confirmBtn;
+
+    public static Text mailTxt;
+    public static InputField mailInput;
+
+    public static Text contentTxt;
+    public static InputField contentInput;
+
+    public override void RegistReference()
+    {
+        panelTxt = ResourceManager.Get<Text>(CanvasLabel.Ld_Tit);
+        panel = ResourceManager.Get(CanvasLabel.Ld_Info);
+
+        backupTxt = ResourceManager.Get<Text>(CanvasLabel.L_BackupLab);
+        backupBtn = ResourceManager.Get<Button>(CanvasLabel.L_BackupBtn);
+
+        cancelTxt = ResourceManager.Get<Text>(CanvasLabel.Ld_CancelLab);
+        cancelBtn = ResourceManager.Get<Button>(CanvasLabel.Ld_Cancel);
+
+        confirmTxt = ResourceManager.Get<Text>(CanvasLabel.Ld_ConfirmLab);
+        confirmBtn = ResourceManager.Get<Button>(CanvasLabel.Ld_Confirm);
+
+        mailTxt = ResourceManager.Get<Text>(CanvasLabel.Ld_Placeholder0);
+        mailInput = ResourceManager.Get<InputField>(CanvasLabel.Ld_InputField0);
+
+        contentTxt = ResourceManager.Get<Text>(CanvasLabel.Ld_Placeholder);
+        contentInput = ResourceManager.Get<InputField>(CanvasLabel.Ld_InputField);
+    }
+
+    public override void ThirdInit()
+    {
+        panel.CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
+
+        LanguageManager.Add(panelTxt, Language.GetStr(LanguageLabel.UI__Ld_Title));
+        LanguageManager.Add(backupTxt, Language.GetStr(LanguageLabel.UI__Ld_Title));
+        LanguageManager.Add(cancelTxt, Language.GetStr(LanguageLabel.Common__Cancel));
+        LanguageManager.Add(confirmTxt, Language.GetStr(LanguageLabel.Common__Confirm));
+
+        backupBtn.onClick.AddListener(Open);
+        cancelBtn.onClick.AddListener(OnCancelClick);
+        confirmBtn.onClick.AddListener(OnConfirmClick);
+    }
+
+    public static void Open()
+    {
+        AudioManager.PlayClip(ResourceLabel.BtnClip);
+
+        panel.TweenForCG();
+
+        mailInput.text = "";
+
+        mailTxt.text = Language.GetStr(LanguageLabel.UI__Lb_Placeholder0);
+        contentInput.text = Language.GetStr(LanguageLabel.UI__Ld_PlaceHolder).Replace("%NUM%", HttpManager.ID);
+    }
+
+    public static void Close()
+    {
+        AudioManager.PlayClip(ResourceLabel.BtnClip);
+
+        panel.TweenBacCG();
+    }
+
+    public static void OnCancelClick()
+    {
+        Close();
+    }
+
+    public static void OnConfirmClick()
+    {
+        string emailAddress = mailInput.text;
+
+        if (string.IsNullOrEmpty(emailAddress) || !emailAddress.Contains("@"))
+        {
+            Bubble.Show(null, Language.GetStr(LanguageLabel.UI__Lb_Send3));
+            return;
+        }
+
+        string content = contentInput.text;
+
+        if (string.IsNullOrEmpty(content))
+        {
+            Bubble.Show(null, Language.GetStr(LanguageLabel.UI__Lb_Send2));
+            return;
+        }
+
+        HttpManager.SendEmail(emailAddress, content);
+
+        Bubble.Show(null, Language.GetStr(LanguageLabel.UI__Lb_Send0));
+
+        Close();
+    }
+}

+ 13 - 0
Assets/Script/Manage/Panel/BackupIDPanel.cs.meta

@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: f689f7d46596b5c4098087446d6d8ab3
+timeCreated: 1525929445
+licenseType: Pro
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 12 - 0
Assets/Script/Manage/PlayerManager.cs

@@ -184,6 +184,18 @@ public class PlayerManager : Regist
                 else if (i == 4)
                 {
                     DressData[4] = "上衣-缺失";
+                    DressData[8] = "Empty";
+                    DressData[9] = "Empty";
+                    DressData[10] = "Empty";
+                    DressData[11] = "Empty";
+                }
+                else if (i == 5)
+                {
+                    DressData[5] = "眼睛1";
+                }
+                else if (i == 6)
+                {
+                    DressData[6] = "嘴巴1";
                 }
                 else if (i == 7)
                 {

+ 55 - 38
Assets/Script/Manage/PlayerPrefManager.cs

@@ -1,39 +1,56 @@
-using System.Collections;
-using System.Collections.Generic;
-
-using UnityEngine;
-
-public class PlayerPrefManager
-{
-    public const string INTERACT_CONFIG = "Interact_Config";
-
-    public static bool GetBool(string label, bool defaultValue)
-    {
-        int i = PlayerPrefs.GetInt(label, -1);
-        if (i == -1)
-        {
-            return defaultValue;
-        }
-        if (i == 0)
-        {
-            return false;
-        }
-        else
-        {
-            return true;
-        }
-    }
-
-    public static void SaveBool(string label, bool value)
-    {
-        if (value)
-        {
-            PlayerPrefs.SetInt(label, 1);
-        }
-        else
-        {
-            PlayerPrefs.SetInt(label, 0);
-        }
-        PlayerPrefs.Save();
-    }
+using System.Collections;
+using System.Collections.Generic;
+
+using UnityEngine;
+
+public class PlayerPrefManager
+{
+    public const string INTERACT_CONFIG = "Interact_Config";
+    public const string PLAYER_CONFIG = "Player_Config";
+
+    public static bool GetBool(string label, bool defaultValue)
+    {
+        int i = PlayerPrefs.GetInt(label, -1);
+        if (i == -1)
+        {
+            return defaultValue;
+        }
+        if (i == 0)
+        {
+            return false;
+        }
+        else
+        {
+            return true;
+        }
+    }
+
+    public static void SaveBool(string label, bool value)
+    {
+        if (value)
+        {
+            PlayerPrefs.SetInt(label, 1);
+        }
+        else
+        {
+            PlayerPrefs.SetInt(label, 0);
+        }
+        PlayerPrefs.Save();
+    }
+
+    public static string GetStr(string label, string defaultValue)
+    {
+        string str = PlayerPrefs.GetString(label, "null");
+        if (str == "null")
+        {
+            return defaultValue;
+        }
+        return str;
+    }
+
+    public static void SaveStr(string label, string value)
+    {
+        PlayerPrefs.SetString(label, value);
+        PlayerPrefs.Save();
+    }
 }

+ 2 - 2
Assets/Script/Manage/UIManager.cs

@@ -2210,7 +2210,7 @@ public class UIManager : Regist
         #region L_CreditsContent
 
         ResourceManager.Get(CanvasLabel.Lc_CreditsContent).CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
-        ResourceManager.Get(CanvasLabel.Lc_CreditsContent).CreateTweenVec2D(ResourceManager.Get(CanvasLabel.Lc_Pos).position, 10f, false, false, true, Curve.Linear);
+        //ResourceManager.Get(CanvasLabel.Lc_CreditsContent).CreateTweenVec2D(ResourceManager.Get(CanvasLabel.Lc_Pos).position, 10f, false, false, true, Curve.Linear);
 
         #endregion
 
@@ -3672,7 +3672,7 @@ public class UIManager : Regist
     {
         ResourceManager.Get(CanvasLabel.Lc_CreditsMask).TweenForCG();
         ResourceManager.Get(CanvasLabel.Lc_CreditsContent).TweenForCG();
-        ResourceManager.Get(CanvasLabel.Lc_CreditsContent).TweenReForVec();
+        //ResourceManager.Get(CanvasLabel.Lc_CreditsContent).TweenReForVec();
 
         StopPlayCreditsRoutine = Auxiliary.Instance.DelayCall
         (

+ 1 - 1
Assets/Script/Social/FashionShowCloseBox.cs

@@ -64,7 +64,7 @@ public class FashionShowCloseCell
     }
 
     public static Player photoShopPlayer;
-    public string path = Application.persistentDataPath + "\\FashionShow.png";
+    public string path = Application.persistentDataPath + Path.DirectorySeparatorChar + "FashionShow.png";
     private void OnShareButtonClick()
     {
         if (photoShopPlayer != null)

+ 8 - 2
Assets/Script/Tool/Auxiliary.cs

@@ -155,15 +155,21 @@ public class Auxiliary : Regist
         //    RobotManager.DeactivateAllRobots(false);
         //}
 
+        if (Input.GetKey(KeyCode.Space))
+        {
+            Vector3 pos = ResourceManager.Get(CanvasLabel.Lc_CreditsContent).position;
+            ResourceManager.Get(CanvasLabel.Lc_CreditsContent).position = pos + new Vector3(0, 2f, 0);
+        }
+
         if (Input.GetKeyDown(KeyCode.Space))
         {
-            TutorialManager.changeMouseTutorial = true;
+            //TutorialManager.changeMouseTutorial = true;
             //PlayerManager.Player.UAC.anim.Stop();
             //Manager.Coin = 0;
             //Manager.Diamond = 0;
             //CommentRewardManager.GetReward();
             //Manager.AddCoin(1000000000000, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None);
-            DebugManager.ResetGardenLevel(38);
+            //DebugManager.ResetGardenLevel(38);
             //HttpManager.GetTargetConfig
             //(
             //    "1801134288353834791",

+ 66 - 61
Assets/Script/Tool/Test.cs

@@ -1,62 +1,67 @@
-using System;
-using UnityEngine;
-
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using cn.sharesdk.unity3d;
-using UnityEngine.UI;
-
-public class Test : MonoBehaviour
-{
-    public Text Text;
-    public Texture2D Texture2D;
-
-    private string FilePath;
-
-    public void Awake()
-    {
-        FilePath = string.Format("{0}/Test.png", Application.persistentDataPath);
-        if (!File.Exists(FilePath))
-        {
-            File.WriteAllBytes(FilePath, Texture2D.EncodeToPNG());
-        }
-        Text.text = FilePath;
-        ShareSDK = gameObject.AddComponent<ShareSDK>();
-        ShareSDK.Initialize();
-        ShareSDK.shareHandler = ShareCallback;
-    }
-
-    public static ShareSDK ShareSDK;
-    public void TestShare()
-    {
-        ShareContent shareContent = new ShareContent();
-        shareContent.SetText("content");
-        shareContent.SetTitle("title");
-        shareContent.SetTitleUrl("www.baidu.com");
-        shareContent.SetSite("www.baidu.com");
-        shareContent.SetSiteUrl("www.baidu.com");
-        shareContent.SetUrl("www.baidu.com");
-        shareContent.SetShareType(ContentType.App);
-        //shareContent.SetImageUrl("http://or5zgoeui.bkt.clouddn.com/game_icon.png");
-        shareContent.SetImagePath(FilePath);
-        ShareSDK.ShowPlatformList(null, shareContent, 100, 100);
-        Text.text = "¿ªÊ¼·ÖÏí";
-    }
-
-    public void ShareCallback(int reqID, ResponseState state, PlatformType type, Hashtable result)
-    {
-        if (state == ResponseState.Success)
-        {
-            Text.text = "Success";
-        }
-        else if (state == ResponseState.Fail)
-        {
-            Text.text = "Fail";
-        }
-        else if (state == ResponseState.Cancel)
-        {
-            Text.text = "Cancel";
-        }
-    }
+using System;
+using UnityEngine;
+
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using cn.sharesdk.unity3d;
+using UnityEngine.UI;
+
+public class Test : MonoBehaviour
+{
+    public Text Text;
+    public Texture2D Texture2D;
+
+    private string FilePath;
+
+    public void Awake()
+    {
+        //FilePath = string.Format("{0}/Test.png", Application.persistentDataPath);
+        //if (!File.Exists(FilePath))
+        //{
+        //    File.WriteAllBytes(FilePath, Texture2D.EncodeToPNG());
+        //}
+        //Text.text = FilePath;
+        //ShareSDK = gameObject.AddComponent<ShareSDK>();
+        //ShareSDK.Initialize();
+        //ShareSDK.shareHandler = ShareCallback;
+    }
+
+    public void Update()
+    {
+        GetComponent<RectTransform>().position += new Vector3(0, 100 *Time.deltaTime, 0);
+    }
+
+    public static ShareSDK ShareSDK;
+    public void TestShare()
+    {
+        ShareContent shareContent = new ShareContent();
+        shareContent.SetText("content");
+        shareContent.SetTitle("title");
+        shareContent.SetTitleUrl("www.baidu.com");
+        shareContent.SetSite("www.baidu.com");
+        shareContent.SetSiteUrl("www.baidu.com");
+        shareContent.SetUrl("www.baidu.com");
+        shareContent.SetShareType(ContentType.App);
+        //shareContent.SetImageUrl("http://or5zgoeui.bkt.clouddn.com/game_icon.png");
+        shareContent.SetImagePath(FilePath);
+        ShareSDK.ShowPlatformList(null, shareContent, 100, 100);
+        Text.text = "¿ªÊ¼·ÖÏí";
+    }
+
+    public void ShareCallback(int reqID, ResponseState state, PlatformType type, Hashtable result)
+    {
+        if (state == ResponseState.Success)
+        {
+            Text.text = "Success";
+        }
+        else if (state == ResponseState.Fail)
+        {
+            Text.text = "Fail";
+        }
+        else if (state == ResponseState.Cancel)
+        {
+            Text.text = "Cancel";
+        }
+    }
 }

+ 4 - 4
Assets/Tookits/LabelUtility/LabelUtility.prefab

@@ -148,7 +148,7 @@ MonoBehaviour:
         type: 2}
       Type: 4
   - Name: "\u6D4B\u8BD5"
-    UtilityType: 2
+    UtilityType: 1
     LabelScriptPath: Assets
     LabelScriptName: TestLabel
     LabePrefix: public static string
@@ -167,9 +167,9 @@ MonoBehaviour:
     Languages:
     - {fileID: 4900000, guid: 6bf784d003b5c104e94531afb827212a, type: 3}
     Prefabs:
-    - {fileID: 1338839275615992, guid: c32731d4b49fbd146ae54a3978501d8c, type: 2}
-    FoldOut: 1
-    TotalHeight: 756
+    - {fileID: 0}
+    FoldOut: 0
+    TotalHeight: 18
     RegistTypes: 010000000400000007000000
     RegistTargets:
     - Name: Title

+ 12 - 0
ProjectSettings/QualitySettings.asset

@@ -17,6 +17,7 @@ QualitySettings:
     shadowNearPlaneOffset: 3
     shadowCascade2Split: 0.33333334
     shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 0
     blendWeights: 1
     textureQuality: 1
     anisotropicTextures: 0
@@ -31,6 +32,7 @@ QualitySettings:
     particleRaycastBudget: 4
     asyncUploadTimeSlice: 2
     asyncUploadBufferSize: 4
+    resolutionScalingFixedDPIFactor: 1
     excludedTargetPlatforms: []
   - serializedVersion: 2
     name: Fast
@@ -43,6 +45,7 @@ QualitySettings:
     shadowNearPlaneOffset: 3
     shadowCascade2Split: 0.33333334
     shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 0
     blendWeights: 2
     textureQuality: 0
     anisotropicTextures: 0
@@ -57,6 +60,7 @@ QualitySettings:
     particleRaycastBudget: 16
     asyncUploadTimeSlice: 2
     asyncUploadBufferSize: 4
+    resolutionScalingFixedDPIFactor: 1
     excludedTargetPlatforms: []
   - serializedVersion: 2
     name: Simple
@@ -69,6 +73,7 @@ QualitySettings:
     shadowNearPlaneOffset: 3
     shadowCascade2Split: 0.33333334
     shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 0
     blendWeights: 2
     textureQuality: 0
     anisotropicTextures: 1
@@ -83,6 +88,7 @@ QualitySettings:
     particleRaycastBudget: 64
     asyncUploadTimeSlice: 2
     asyncUploadBufferSize: 4
+    resolutionScalingFixedDPIFactor: 1
     excludedTargetPlatforms: []
   - serializedVersion: 2
     name: Good
@@ -95,6 +101,7 @@ QualitySettings:
     shadowNearPlaneOffset: 3
     shadowCascade2Split: 0.33333334
     shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 1
     blendWeights: 2
     textureQuality: 0
     anisotropicTextures: 1
@@ -109,6 +116,7 @@ QualitySettings:
     particleRaycastBudget: 256
     asyncUploadTimeSlice: 2
     asyncUploadBufferSize: 4
+    resolutionScalingFixedDPIFactor: 1
     excludedTargetPlatforms: []
   - serializedVersion: 2
     name: Beautiful
@@ -121,6 +129,7 @@ QualitySettings:
     shadowNearPlaneOffset: 3
     shadowCascade2Split: 0.33333334
     shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 1
     blendWeights: 4
     textureQuality: 0
     anisotropicTextures: 2
@@ -135,6 +144,7 @@ QualitySettings:
     particleRaycastBudget: 1024
     asyncUploadTimeSlice: 2
     asyncUploadBufferSize: 4
+    resolutionScalingFixedDPIFactor: 1
     excludedTargetPlatforms: []
   - serializedVersion: 2
     name: Fantastic
@@ -147,6 +157,7 @@ QualitySettings:
     shadowNearPlaneOffset: 3
     shadowCascade2Split: 0.33333334
     shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 1
     blendWeights: 4
     textureQuality: 0
     anisotropicTextures: 2
@@ -161,6 +172,7 @@ QualitySettings:
     particleRaycastBudget: 4096
     asyncUploadTimeSlice: 2
     asyncUploadBufferSize: 4
+    resolutionScalingFixedDPIFactor: 1
     excludedTargetPlatforms: []
   m_PerPlatformDefaultQuality:
     Android: 2

+ 0 - 4
第五期.txt

@@ -1,7 +1,3 @@
-换嘴巴教程似乎有Bug
-
-
-
 增加服装流程 骨骼位置 UI上的位置 语言文档 存档