Parcourir la source

Merge branch 'master' of http://git.dashgame.com/gsgundam/garden_client

Conflicts:
	Assets/Resources/Sprite/Garden/种花光效1.png.meta
	Assets/Resources/Sprite/Garden/种花光效2.png.meta
	Assets/Resources/Sprite/Reference.meta
	Assets/Resources/Temp.meta
	Assets/XlsxSource/achieve_config.xlsx.meta
gsgundam il y a 8 ans
Parent
commit
dbb4e6a41a
48 fichiers modifiés avec 1554 ajouts et 536 suppressions
  1. BIN
      .vs/MyLovelyGarden/v14/.suo
  2. BIN
      Assets/Resources/Animations/Flower.controller
  3. BIN
      Assets/Resources/Animations/FlowerAnimContainer.controller
  4. 0 8
      Assets/Resources/Animations/FlowerAnimContainer.controller.meta
  5. BIN
      Assets/Resources/Garden.unity
  6. BIN
      Assets/Resources/Prefab/Object/Flower.prefab
  7. BIN
      Assets/Resources/Prefab/PrefabUI/Canvas.prefab
  8. BIN
      Assets/Resources/Prefab/PrefabUI/SkillItem.prefab
  9. BIN
      Assets/Resources/Sprite/Garden/提示图标底板.png
  10. 4 36
      Assets/Resources/Sprite/Garden/提示图标底板.png.meta
  11. BIN
      Assets/Resources/Sprite/Reference/参考.jpg
  12. 68 0
      Assets/Resources/Sprite/Reference/参考.jpg.meta
  13. BIN
      Assets/Resources/Sprite/SpriteUI/Health Wheel.png
  14. 55 0
      Assets/Resources/Sprite/SpriteUI/Health Wheel.png.meta
  15. BIN
      Assets/Resources/Sprite/SpriteUI/快来打理花园对话框.png
  16. 68 0
      Assets/Resources/Sprite/SpriteUI/快来打理花园对话框.png.meta
  17. BIN
      Assets/Resources/Sprite/SpriteUI/游戏返回按钮·左上角.png
  18. 68 0
      Assets/Resources/Sprite/SpriteUI/游戏返回按钮·左上角.png.meta
  19. 3 2
      Assets/Resources/XML/Config/PlayerConfig.xml
  20. 1 8
      Assets/Resources/XML/Config/signin_config.xml
  21. 6 2
      Assets/Script/Manage/Initializer.cs
  22. 292 0
      Assets/Script/Manage/ManaAnim.cs
  23. 47 0
      Assets/Script/Manage/ManaGarden.cs
  24. 8 4
      Assets/Script/Manage/ManaMiniGame.cs
  25. 2 0
      Assets/Script/Manage/ManaReso.cs
  26. 27 3
      Assets/Script/Manage/ManaUI.cs
  27. 63 2
      Assets/Script/Object/Flower.cs
  28. 1 1
      Assets/Script/Object/Garden.cs
  29. 24 0
      Assets/Script/Tool/Anim/Tween.cs
  30. 19 0
      Assets/Script/Tool/Anim/TweenAudio.cs
  31. 19 0
      Assets/Script/Tool/Anim/TweenCG.cs
  32. 19 0
      Assets/Script/Tool/Anim/TweenGra.cs
  33. 20 1
      Assets/Script/Tool/Anim/TweenRect.cs
  34. 19 0
      Assets/Script/Tool/Anim/TweenScale.cs
  35. 143 0
      Assets/Script/Tool/Anim/TweenSr.cs
  36. 2 2
      Assets/Script/Tool/Anim/TweenSr.cs.meta
  37. 19 0
      Assets/Script/Tool/Anim/TweenVec.cs
  38. 3 3
      Assets/Script/Tool/Auxiliary.cs
  39. 55 6
      Assets/Script/Tool/Data.cs
  40. 104 0
      Assets/Script/Tool/Extension.cs
  41. 1 1
      Assets/Script/Tool/SpriteAsset.cs
  42. 373 116
      Assets/Script/Tool/UI/TextPlus.cs
  43. 0 316
      Assets/TestText.cs
  44. 3 3
      MyLovelyGarden.Editor.csproj
  45. 4 3
      MyLovelyGarden.csproj
  46. 13 16
      MyLovelyGarden.sln
  47. 1 3
      MyLovelyGarden.txt
  48. BIN
      ProjectSettings/GraphicsSettings.asset

BIN
.vs/MyLovelyGarden/v14/.suo


BIN
Assets/Resources/Animations/Flower.controller


BIN
Assets/Resources/Animations/FlowerAnimContainer.controller


+ 0 - 8
Assets/Resources/Animations/FlowerAnimContainer.controller.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: dd92882bcf12b1f46957a59bbd037437
-timeCreated: 1489472586
-licenseType: Pro
-NativeFormatImporter:
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

BIN
Assets/Resources/Garden.unity


BIN
Assets/Resources/Prefab/Object/Flower.prefab


BIN
Assets/Resources/Prefab/PrefabUI/Canvas.prefab


BIN
Assets/Resources/Prefab/PrefabUI/SkillItem.prefab


BIN
Assets/Resources/Sprite/Garden/提示图标底板.png


+ 4 - 36
Assets/Resources/Sprite/SpriteUI/Skill/4大技能4da.png.meta → Assets/Resources/Sprite/Garden/提示图标底板.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
-guid: 50a1f7a48c4036f4da811dd54cd1bc23
-timeCreated: 1489384390
+guid: 11d74327a607f964abd9325d6ae00192
+timeCreated: 1490863974
 licenseType: Pro
 TextureImporter:
   fileIDToRecycleName: {}
@@ -58,43 +58,11 @@ TextureImporter:
     crunchedCompression: 0
     allowsAlphaSplitting: 0
     overridden: 0
-  - buildTarget: Standalone
-    maxTextureSize: 2048
-    textureFormat: -1
-    textureCompression: 1
-    compressionQuality: 50
-    crunchedCompression: 0
-    allowsAlphaSplitting: 0
-    overridden: 0
-  - buildTarget: iPhone
-    maxTextureSize: 2048
-    textureFormat: -1
-    textureCompression: 1
-    compressionQuality: 50
-    crunchedCompression: 0
-    allowsAlphaSplitting: 0
-    overridden: 0
-  - buildTarget: Android
-    maxTextureSize: 2048
-    textureFormat: -1
-    textureCompression: 1
-    compressionQuality: 50
-    crunchedCompression: 0
-    allowsAlphaSplitting: 0
-    overridden: 0
-  - buildTarget: WebGL
-    maxTextureSize: 2048
-    textureFormat: -1
-    textureCompression: 1
-    compressionQuality: 50
-    crunchedCompression: 0
-    allowsAlphaSplitting: 0
-    overridden: 0
   spriteSheet:
     serializedVersion: 2
     sprites: []
     outline: []
-  spritePackingTag: 3
+  spritePackingTag: 
   userData: 
-  assetBundleName: skill
+  assetBundleName: 
   assetBundleVariant: 

BIN
Assets/Resources/Sprite/Reference/参考.jpg


+ 68 - 0
Assets/Resources/Sprite/Reference/参考.jpg.meta

@@ -0,0 +1,68 @@
+fileFormatVersion: 2
+guid: cce32f605187dbf4e95e492691ad6ffd
+timeCreated: 1490877386
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Resources/Sprite/SpriteUI/Health Wheel.png


+ 55 - 0
Assets/Resources/Sprite/SpriteUI/Health Wheel.png.meta

@@ -0,0 +1,55 @@
+fileFormatVersion: 2
+guid: c7dd97e9cd879304795b366cbf187bfe
+timeCreated: 1431337672
+licenseType: Store
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Resources/Sprite/SpriteUI/Skill/4大技能4da.png → Assets/Resources/Sprite/SpriteUI/快来打理花园对话框.png


+ 68 - 0
Assets/Resources/Sprite/SpriteUI/快来打理花园对话框.png.meta

@@ -0,0 +1,68 @@
+fileFormatVersion: 2
+guid: 5c219cf5190fa4c47bbde3e13a53e4e4
+timeCreated: 1490876618
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Resources/Sprite/SpriteUI/游戏返回按钮·左上角.png


+ 68 - 0
Assets/Resources/Sprite/SpriteUI/游戏返回按钮·左上角.png.meta

@@ -0,0 +1,68 @@
+fileFormatVersion: 2
+guid: 1a54fd35ff8e5224ca011a412abf11b1
+timeCreated: 1490879779
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 2
Assets/Resources/XML/Config/PlayerConfig.xml

@@ -1,4 +1,5 @@
 <PlayerConfig>
+  <Version value="1" />
   <Slot value="7" />
   <Sign value="0" />
   <Coin value="0" />
@@ -7,9 +8,9 @@
   <Diamond value="0" />
   <QuitTime value="3/24/2017 10:40:04 PM" />
   <MiniTimer value="0" />
-  <CircleTimer value="0" />
+  <CircleTimer value="10" />
   <CoinPerson value="0" />
-  <PlantList SlotA1="1" SlotA2="2" SlotA3="3" SlotA4="4" SlotA5="5" SlotA6="6" SlotA7="7" SlotA8="8" SlotA9="9" />
+  <PlantList SlotA1="0" SlotA2="1" SlotA3="2" SlotA4="3" SlotA5="4" SlotA6="5" SlotA7="6" />
   <FlowerList ID="1 2 3 4 5 6 7 8 9 10" />
   <SkillList>
     <免费获取金币 SkillType="Skill" ItemStatus="Lock" Level="0" CdTimer="0" EffectTimer="0" />

+ 1 - 8
Assets/Resources/XML/Config/signin_config.xml

@@ -19,14 +19,7 @@
   <item id="18" flower="" diamond="" coin="7000" />
   <item id="19" flower="" diamond="" coin="8000" />
   <item id="20" flower="" diamond="" coin="8000" />
-  <item id="21" flower="" diamond="300" coin="" />
-  <item id="22" flower="" diamond="" coin="9000" />
-  <item id="23" flower="" diamond="" coin="9000" />
-  <item id="24" flower="" diamond="" coin="10000" />
-  <item id="25" flower="" diamond="" coin="10000" />
-  <item id="26" flower="" diamond="" coin="12000" />
-  <item id="27" flower="" diamond="" coin="12000" />
-  <item id="28" flower="21,22,23,24,25,26,27" diamond="500" coin="" />
+  <item id="28" flower="21,22,23,24,25,26,27" diamond="400" coin="" />
   <comment>
     <id>
 id

+ 6 - 2
Assets/Script/Manage/Initializer.cs

@@ -24,8 +24,12 @@ public class Initializer : MonoBehaviour
         {
             gameObject.AddScript<Bundle>();
         }
-           
-	    gameObject.AddScript<Auxiliary>();
+
+        if (Auxiliary.Instance == null)
+        {
+            gameObject.AddScript<Auxiliary>();
+        }
+
         gameObject.AddScript<ManaReso>();
         gameObject.AddScript<ManaAnim>();
         gameObject.AddScript<ManaAudio>();

+ 292 - 0
Assets/Script/Manage/ManaAnim.cs

@@ -31,6 +31,7 @@ public class ManaAnim : Regist
     public static Dictionary<Curve, CurveFunctionV> FunctionDicV;
     
     public static Dictionary<Transform, MoveVec> MoveVecDic;
+    public static Dictionary<Transform, TweenSr> TweenSrDic;
     public static Dictionary<Transform, TweenCG> TweenCgDic;
     public static Dictionary<Transform, TweenGra> TweenGraDic;
     public static Dictionary<Transform, TweenVec> TweenVecDic;
@@ -79,6 +80,7 @@ public class ManaAnim : Regist
         FunctionDicV = new Dictionary<Curve, CurveFunctionV>();
 
         MoveVecDic = new Dictionary<Transform, MoveVec>();
+        TweenSrDic = new Dictionary<Transform, TweenSr>();
         TweenCgDic = new Dictionary<Transform, TweenCG>();
         TweenGraDic = new Dictionary<Transform, TweenGra>();
         TweenVecDic = new Dictionary<Transform, TweenVec>();
@@ -167,6 +169,20 @@ public class ManaAnim : Regist
     }
 
 
+    public static void TweenForSr(Transform target)
+    {
+        TweenSr tweenSr;
+
+        if (TweenSrDic.TryGetValue(target, out tweenSr))
+        {
+            tweenSr.StartForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
     public static void TweenForCG(Transform target)
     {
         TweenCG tweenCG;
@@ -252,6 +268,20 @@ public class ManaAnim : Regist
     }
 
 
+    public static void TweenBacSr(Transform target)
+    {
+        TweenSr tweenSr;
+
+        if (TweenSrDic.TryGetValue(target, out tweenSr))
+        {
+            tweenSr.StartBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
     public static void TweenBacCG(Transform target)
     {
         TweenCG tweenCG;
@@ -336,6 +366,204 @@ public class ManaAnim : Regist
         }
     }
 
+
+    public static void TweenConForSr(Transform target)
+    {
+        TweenSr tweenSr;
+
+        if (TweenSrDic.TryGetValue(target, out tweenSr))
+        {
+            tweenSr.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConForCG(Transform target)
+    {
+        TweenCG tweenCG;
+
+        if (TweenCgDic.TryGetValue(target, out tweenCG))
+        {
+            tweenCG.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConForGra(Transform target)
+    {
+        TweenGra tweenGra;
+
+        if (TweenGraDic.TryGetValue(target, out tweenGra))
+        {
+            tweenGra.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConForVec(Transform target)
+    {
+        TweenVec tweenVec;
+
+        if (TweenVecDic.TryGetValue(target, out tweenVec))
+        {
+            tweenVec.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConForRect(Transform target)
+    {
+        TweenRect tweenRect;
+
+        if (TweenRectDic.TryGetValue(target, out tweenRect))
+        {
+            tweenRect.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConForScale(Transform target)
+    {
+        TweenScale tweenScale;
+
+        if (TweenScaleDic.TryGetValue(target, out tweenScale))
+        {
+            tweenScale.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConForAudio(Transform target)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(target, out tween))
+        {
+            tween.ConfineForward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+
+    public static void TweenConBacSr(Transform target)
+    {
+        TweenSr tweenSr;
+
+        if (TweenSrDic.TryGetValue(target, out tweenSr))
+        {
+            tweenSr.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConBacCG(Transform target)
+    {
+        TweenCG tweenCG;
+
+        if (TweenCgDic.TryGetValue(target, out tweenCG))
+        {
+            tweenCG.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConBacGra(Transform target)
+    {
+        TweenGra tweenGra;
+
+        if (TweenGraDic.TryGetValue(target, out tweenGra))
+        {
+            tweenGra.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+    }
+
+    public static void TweenConBacVec(Transform target)
+    {
+        TweenVec tweenVec;
+
+        if (TweenVecDic.TryGetValue(target, out tweenVec))
+        {
+            tweenVec.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception(target.name);
+        }
+    }
+
+    public static void TweenConBacRect(Transform target)
+    {
+        TweenRect tweenRect;
+
+        if (TweenRectDic.TryGetValue(target, out tweenRect))
+        {
+            tweenRect.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConBacScale(Transform target)
+    {
+        TweenScale tweenScale;
+
+        if (TweenScaleDic.TryGetValue(target, out tweenScale))
+        {
+            tweenScale.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+    public static void TweenConBacAudio(Transform target)
+    {
+        TweenAudio tween;
+
+        if (TweenAudioDic.TryGetValue(target, out tween))
+        {
+            tween.ConfineBackward();
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
     #endregion
 
     #region 得到动画
@@ -355,6 +583,21 @@ public class ManaAnim : Regist
     }
 
 
+    public static TweenSr GetTweenSr(Transform target)
+    {
+        TweenSr tweenSr;
+
+        if (TweenSrDic.TryGetValue(target, out tweenSr))
+        {
+            return tweenSr;
+        }
+        else
+        {
+            throw new Exception();
+        }
+    }
+
+
     public static TweenCG GetTweenCG(Transform target)
     {
         TweenCG tweenCG;
@@ -464,6 +707,55 @@ public class ManaAnim : Regist
     }
 
 
+    public static TweenSr CreateTweenSr(Transform target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        if (TweenSrDic.ContainsKey(target))
+        {
+            SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+            TweenSr tween = TweenSrDic[target];
+
+            tween = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve);
+
+            return tween;
+        }
+        else
+        {
+            SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+            TweenSr tween = new TweenSr(sr, origin, destination, duration, originActive, destActive, curve);
+
+            TweenSrDic.Add(target, tween);
+
+            return tween;
+        }
+    }
+
+    public static TweenSr CreateTweenSr(Transform target, Color destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        if (TweenSrDic.ContainsKey(target))
+        {
+            SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+            TweenSr tween = TweenSrDic[target];
+
+            tween = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve);
+
+            return tween;
+        }
+        else
+        {
+            SpriteRenderer sr = target.GetComponent<SpriteRenderer>();
+
+            TweenSr tween = new TweenSr(sr, sr.color, destination, duration, originActive, destActive, curve);
+
+            TweenSrDic.Add(target, tween);
+
+            return tween;
+        }
+    }
+
+
     public static TweenCG CreateTweenCG(Transform target, float origin, float destination,  float duration, bool originActive, bool destActive, Curve curve)
     {
         if (TweenCgDic.ContainsKey(target))

+ 47 - 0
Assets/Script/Manage/ManaGarden.cs

@@ -9,6 +9,8 @@ using System.Linq;
 using System.Collections;
 using System.Collections.Generic;
 
+using Random = UnityEngine.Random;
+
 public class ManaGarden : Regist
 {
     #region 变量
@@ -79,6 +81,10 @@ public class ManaGarden : Regist
     private static int _TotalFlowerSpec;
     private static int _TotalFlowerRegu;
 
+    public static bool Award;
+    public static bool AwardLock;
+    public static float AwardTimer;
+
     public static Slot SeleSlot;
     public static FlowerInfo SeleFlowerInfo;
 
@@ -88,6 +94,43 @@ public class ManaGarden : Regist
 
     #endregion
 
+    public void FixedUpdate()
+    {
+        if (Award && !AwardLock)
+        {
+            AwardTimer -= Time.fixedDeltaTime;
+
+            if (AwardTimer <= 0)
+            {
+                List<Flower> spareList = new List<Flower>();
+
+                for (int i = 0; i < PlantList.Count; i++)
+                {
+                    if (PlantList[i].Flower.Award == false)
+                    {
+                        spareList.Add(PlantList[i].Flower);
+                    }
+                }
+
+                if (spareList.Count == 1)
+                {
+                    Award = false;
+
+                    spareList[0].Award = true;
+
+                    AwardTimer = Random.Range(20, 60);
+                }
+                else
+                {
+                    spareList.Random().Award = true;
+
+                    AwardTimer = Random.Range(20, 60);
+                }
+            }
+        }
+    }
+
+
     public override void Instantiate()
     {
         ManaReso.Get("Garden", Folder.Garden, true, transform, true).AddScript<Garden>();
@@ -121,6 +164,10 @@ public class ManaGarden : Regist
 
     public override void RegistValueA()
     {
+        Award = true;
+        AwardLock = false;
+        AwardTimer = Random.Range(20, 60);
+
         SlotList = new List<Slot>()
         {
             ManaReso.Get("SlotA1").AddComponent<Slot>(),

+ 8 - 4
Assets/Script/Manage/ManaMiniGame.cs

@@ -212,8 +212,8 @@ public class ManaMiniGame : Regist
         {
             _GameTimer = value;
 
-            TimerBk.fillAmount = _GameTimer / GameTimer;
-
+            TimerIcon.fillAmount = _GameTimer / GameTime;
+            
             TimerLab.text = _GameTimer.ToString("0.0");
         }
     }
@@ -240,7 +240,7 @@ public class ManaMiniGame : Regist
 
     public static Text BtnLab;
     public static Text TimerLab;
-    public static Image TimerBk;
+    public static Image TimerIcon;
     public static Award Award;
     public static List<Flower> OpList;
     public static List<Flower> IdleList;
@@ -326,7 +326,7 @@ public class ManaMiniGame : Regist
 
     public override void RegistReference()
     {
-        TimerBk = ManaReso.Get<Image>("D_TimerIcon");
+        TimerIcon = ManaReso.Get<Image>("D_TimerIcon");
 
         BtnLab = ManaReso.Get<Text>("D_BeginLab");
         TimerLab = ManaReso.Get<Text>("D_TimerLab");
@@ -455,6 +455,8 @@ public class ManaMiniGame : Regist
 
     public static void GameAbort()
     {
+        ManaGarden.AwardLock = false;
+
         if (Game)
         {
             ManaData.Mini = false;
@@ -496,6 +498,8 @@ public class ManaMiniGame : Regist
 
     public static void GamePrepare()
     {
+        ManaGarden.AwardLock = true;
+
         OpList = new List<Flower>();
         IdleList = new List<Flower>();
         IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini1")));

+ 2 - 0
Assets/Script/Manage/ManaReso.cs

@@ -221,6 +221,7 @@ public class ManaReso : Regist
         }
         else
         {
+            flower.GoldBk.SetActive(false);
             flower.transform.localPosition = flower.LocalPos;
         }
 
@@ -247,6 +248,7 @@ public class ManaReso : Regist
         }
         else
         {
+            flower.GoldBk.SetActive(false);
             flower.transform.localPosition = flower.LocalPos;
         }
 

+ 27 - 3
Assets/Script/Manage/ManaUI.cs

@@ -80,7 +80,7 @@ public class Sign
                 {
                     ManaGarden.FlowerInfoList[FlowerList[i]].Unlock = true;
 
-                    if (ManaData.Sign < 27)
+                    if (ManaData.Sign < 20)
                     {
                         ManaData.Sign++;
                     }
@@ -314,7 +314,6 @@ public class ManaUI : Regist
 
         #region D
 
-        ManaReso.SetText("D_QuitLab");
         ManaReso.SetText("D_ScoreTit");
 
         ManaReso.SetText("D_BeginLab", Language.GetStr("UI", "D_BeginLab0"));
@@ -642,14 +641,24 @@ public class ManaUI : Regist
         );
 
         #endregion
-        
+
         #region F_TabBtn
 
+        ManaReso.Get("F_Elf").CreateTweenScale(new Vector3(1, 1, 1), new Vector3(1.1f, 1.1f, 1.1f), 0.25f, true, true, Curve.EaseOutQuad);
+        ManaReso.Get("F_Store").CreateTweenScale(new Vector3(1, 1, 1), new Vector3(1.1f, 1.1f, 1.1f), 0.25f, true, true, Curve.EaseOutQuad);
+        ManaReso.Get("F_Magic").CreateTweenScale(new Vector3(1, 1, 1), new Vector3(1.1f, 1.1f, 1.1f), 0.25f, true, true, Curve.EaseOutQuad);
+        ManaReso.Get("F_Garden").CreateTweenScale(new Vector3(1, 1, 1), new Vector3(1.1f, 1.1f, 1.1f), 0.25f, true, true, Curve.EaseOutQuad);
+
         ManaReso.AddButtonEvent
         (
             "F_Elf",
             () =>
             {
+                ManaReso.Get("F_Elf").TweenForScale();
+                ManaReso.Get("F_Store").TweenConBacScale();
+                ManaReso.Get("F_Magic").TweenConBacScale();
+                ManaReso.Get("F_Garden").TweenConBacScale();
+
                 ManaReso.Get("F_Elf").SetAsLastSibling();
                 ManaReso.Get("F_Store").SetSiblingIndex(0);
                 ManaReso.Get("F_Magic").SetSiblingIndex(1);
@@ -674,6 +683,11 @@ public class ManaUI : Regist
             "F_Store",
             () =>
             {
+                ManaReso.Get("F_Elf").TweenConBacScale();
+                ManaReso.Get("F_Store").TweenForScale();
+                ManaReso.Get("F_Magic").TweenConBacScale();
+                ManaReso.Get("F_Garden").TweenConBacScale();
+
                 ManaReso.Get("F_Elf").SetSiblingIndex(1);
                 ManaReso.Get("F_Store").SetAsLastSibling();
                 ManaReso.Get("F_Magic").SetSiblingIndex(0);
@@ -698,6 +712,11 @@ public class ManaUI : Regist
             "F_Magic",
             () =>
             {
+                ManaReso.Get("F_Elf").TweenConBacScale();
+                ManaReso.Get("F_Store").TweenConBacScale();
+                ManaReso.Get("F_Magic").TweenForScale();
+                ManaReso.Get("F_Garden").TweenConBacScale();
+
                 ManaReso.Get("F_Elf").SetSiblingIndex(1);
                 ManaReso.Get("F_Store").SetSiblingIndex(0);
                 ManaReso.Get("F_Magic").SetAsLastSibling();
@@ -722,6 +741,11 @@ public class ManaUI : Regist
             "F_Garden",
             () =>
             {
+                ManaReso.Get("F_Elf").TweenConBacScale();
+                ManaReso.Get("F_Store").TweenConBacScale();
+                ManaReso.Get("F_Magic").TweenConBacScale();
+                ManaReso.Get("F_Garden").TweenForScale();
+
                 ManaReso.Get("F_Elf").SetSiblingIndex(2);
                 ManaReso.Get("F_Store").SetSiblingIndex(0);
                 ManaReso.Get("F_Magic").SetSiblingIndex(1);

+ 63 - 2
Assets/Script/Object/Flower.cs

@@ -160,6 +160,23 @@ public class Flower : ObjRoot, IPointerClickHandler
 
     #endregion
 
+    public bool Award
+    {
+        get { return _Award; }
+        set
+        {
+            _Award = value;
+
+            if (_Award)
+            {
+                ShowAward();
+            }
+            else
+            {
+                GetAward();
+            }
+        }
+    }
     public FlowerInfo FlowerInfo
     {
         get { return _FlowerInfo; }
@@ -171,11 +188,14 @@ public class Flower : ObjRoot, IPointerClickHandler
         }
     }
 
+    public bool _Award;
     private FlowerInfo _FlowerInfo;
 
     public int Id;
     public Slot Slot;
     public Vector3 LocalPos;
+    public Transform GoldBk;
+    public Transform GoldIcon;
 
     private Dictionary<string, Transform> ChildDic;
 
@@ -187,7 +207,9 @@ public class Flower : ObjRoot, IPointerClickHandler
         
         Auxiliary.CompileDic(transform, ChildDic);
 
+        GoldBk = ChildDic["GoldBk"];
         FlowerSr = ChildDic["FlowerIcon"].GetComponent<SpriteRenderer>();
+        GoldIcon = ChildDic["GoldIcon"];
         OperateIcon = ChildDic["OperateIcon"].GetComponent<SpriteRenderer>();
     }
 
@@ -283,10 +305,49 @@ public class Flower : ObjRoot, IPointerClickHandler
     #endregion
 
 
+    public void GetAward()
+    {
+        ManaGarden.Award = true;
+
+        int coin = Mathf.CeilToInt(ManaData.CoinPerson*Random.Range(0.05f, 0.08f)*ManaData.SkillPlus);
+
+        ManaData.Coin += coin;
+
+        ManaReso.GetHudText("+" + coin, Color.red, 18, ChildDic["GoldTra"], ManaReso.Get("A_HudParent"), true);
+
+        GoldBk.SetActive(false);
+    }
+
+    public void ShowAward()
+    {
+        GoldBk.CreateTweenSr(new Color(1, 1, 1, 0), new Color(1, 1, 1, 1), 1f, true, true, Curve.EaseOutQuad);
+        GoldIcon.CreateTweenSr(new Color(1, 1, 1, 0), new Color(1, 1, 1, 1), 1f, true, true, Curve.EaseOutQuad);
+
+        GoldBk.SetY(transform.position.y + 2.5f);
+
+        GoldBk.TweenForSr();
+        GoldIcon.TweenForSr();
+
+        GoldBk.MoveVec
+        (
+            GoldBk.transform.position + new Vector3(0, 0.5f, 0),
+            1f,
+            Curve.EaseOutQuad
+        );
+    }
+
+
     public void OnPointerClick(PointerEventData eventData)
     {
-        ManaReso.Get("G_Flower").TweenForCG();
+        if (eventData.rawPointerPress.transform == transform)
+        {
+            ManaReso.Get("G_Flower").TweenForCG();
 
-        ManaGarden.ShowRetrieveCard(FlowerInfo);
+            ManaGarden.ShowRetrieveCard(FlowerInfo);
+        }
+        else if (eventData.rawPointerPress.transform == GoldBk)
+        {
+            Award = false;
+        }
     }
 }

+ 1 - 1
Assets/Script/Object/Garden.cs

@@ -386,7 +386,7 @@ public class Garden : Regist, IDragHandler, IPointerClickHandler, IEndDragHandle
             {
                 ManaGarden.ShowPlantCard(slot, flowerInfo);
 
-                Auxiliary.Inst.DelayCall
+                Auxiliary.Instance.DelayCall
                 (
                     () =>
                     {

+ 24 - 0
Assets/Script/Tool/Anim/Tween.cs

@@ -6,6 +6,9 @@ using System.Collections;
 
 public abstract class Tween 
 {
+    public bool InForward;
+    public bool InBackward;
+
     public bool IsForward;
     public bool IsBackward;
     public UnityAction OnForwardStart;
@@ -23,9 +26,28 @@ public abstract class Tween
     public abstract bool DoBackward();
 
 
+    public void ConfineForward()
+    {
+        if (InForward)
+        {
+            StartForward();
+        }
+    }
+
+    public void ConfineBackward()
+    {
+        if (InBackward)
+        {
+            StartBackward();
+        }
+    }
+
+
     public virtual void StartForward()
     {
         IsForward = true;
+        InForward = false;
+
         OnForwardStart.Invoke();
 
         ManaAnim.TweenForList.Add(this);
@@ -35,6 +57,8 @@ public abstract class Tween
     public virtual void StartBackward()
     {
         IsBackward = true;
+        InBackward = false;
+
         OnBackwardStart.Invoke();
 
         ManaAnim.TweenForList.Remove(this);

+ 19 - 0
Assets/Script/Tool/Anim/TweenAudio.cs

@@ -17,6 +17,15 @@ public class TweenAudio : Tween
 
     public TweenAudio(AudioSource target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
     {
+        if (Math.Abs(target.volume - origin) < 0.0005f)
+        {
+            InForward = true;
+        }
+        else if (Math.Abs(target.volume - destination) < 0.0005f)
+        {
+            InBackward = true;
+        }
+
         Func = ManaAnim.FunctionDicF[curve];
         Target = target;
 
@@ -58,6 +67,10 @@ public class TweenAudio : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.volume = Origin;
+        }
     }
 
     public override void StartBackward()
@@ -68,6 +81,10 @@ public class TweenAudio : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.volume = Destination;
+        }
     }
 
     public override bool DoForward()
@@ -81,6 +98,7 @@ public class TweenAudio : Tween
             Target.volume = Destination;
 
             IsForward = false;
+            InBackward = true;
 
             OnForwardFinish.Invoke();
 
@@ -107,6 +125,7 @@ public class TweenAudio : Tween
             Target.volume = Origin;
 
             IsBackward = false;
+            InForward = true;
 
             OnBackwardFinish.Invoke();
 

+ 19 - 0
Assets/Script/Tool/Anim/TweenCG.cs

@@ -17,6 +17,15 @@ public class TweenCG : Tween
 
     public TweenCG(CanvasGroup target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
     {
+        if (Math.Abs(target.alpha - origin) < 0.0005f)
+        {
+            InForward = true;
+        }
+        else if (Math.Abs(target.alpha - destination) < 0.0005f)
+        {
+            InBackward = true;
+        }
+
         Func = ManaAnim.FunctionDicF[curve];
         Target = target;
 
@@ -63,6 +72,10 @@ public class TweenCG : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.alpha = Origin;
+        }
     }
 
     public override void StartBackward()
@@ -73,6 +86,10 @@ public class TweenCG : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.alpha = Destination;
+        }
     }
 
     public override bool DoForward()
@@ -86,6 +103,7 @@ public class TweenCG : Tween
             Target.alpha = Destination;
 
             IsForward = false;
+            InBackward = true;
 
             OnForwardFinish.Invoke();
 
@@ -112,6 +130,7 @@ public class TweenCG : Tween
             Target.alpha = Origin;
 
             IsBackward = false;
+            InForward = true;
 
             OnBackwardFinish.Invoke();
 

+ 19 - 0
Assets/Script/Tool/Anim/TweenGra.cs

@@ -18,6 +18,15 @@ public class TweenGra : Tween
 
     public TweenGra(Graphic target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve)
     {
+        if (target.color == origin)
+        {
+            InForward = true;
+        }
+        else if (target.color == destination)
+        {
+            InBackward = true;
+        }
+
         Func = ManaAnim.FunctionDicC[curve];
         Target = target;
 
@@ -60,6 +69,10 @@ public class TweenGra : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.color = Origin;
+        }
     }
 
     public override void StartBackward()
@@ -70,6 +83,10 @@ public class TweenGra : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.color = Destination;
+        }
     }
 
     public override bool DoForward()
@@ -83,6 +100,7 @@ public class TweenGra : Tween
             Target.color = Destination;
 
             IsForward = false;
+            InBackward = true;
 
             OnForwardFinish.Invoke();
 
@@ -109,6 +127,7 @@ public class TweenGra : Tween
             Target.color = Origin;
 
             IsBackward = false;
+            InForward = true;
 
             OnBackwardFinish.Invoke();
 

+ 20 - 1
Assets/Script/Tool/Anim/TweenRect.cs

@@ -15,8 +15,17 @@ public class TweenRect : Tween
 
     #endregion
 
-    public TweenRect(RectTransform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve)
+    public TweenRect(RectTransform target, Vector2 origin, Vector2 destination, float duration, bool originActive, bool destActive, Curve curve)
     {
+        if (target.sizeDelta == origin)
+        {
+            InForward = true;
+        }
+        else if (target.sizeDelta == destination)
+        {
+            InBackward = true;
+        }
+
         CG = target.GetComponent<CanvasGroup>();
         Func = ManaAnim.FunctionDicV[curve];
         Target = target;
@@ -80,6 +89,10 @@ public class TweenRect : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.sizeDelta = Origin;
+        }
     }
 
     public override void StartBackward()
@@ -90,6 +103,10 @@ public class TweenRect : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.sizeDelta = Destination;
+        }
     }
 
     public override bool DoForward()
@@ -103,6 +120,7 @@ public class TweenRect : Tween
             Target.sizeDelta = Destination;
 
             IsForward = false;
+            InBackward = true;
 
             OnForwardFinish.Invoke();
 
@@ -129,6 +147,7 @@ public class TweenRect : Tween
             Target.sizeDelta = Origin;
 
             IsBackward = false;
+            InForward = true;
 
             OnBackwardFinish.Invoke();
 

+ 19 - 0
Assets/Script/Tool/Anim/TweenScale.cs

@@ -18,6 +18,15 @@ public class TweenScale : Tween
 
     public TweenScale(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve)
     {
+        if (target.localScale == origin)
+        {
+            InForward = true;
+        }
+        else if (target.localScale == destination)
+        {
+            InBackward = true;
+        }
+
         CG = target.GetComponent<CanvasGroup>();
         Func = ManaAnim.FunctionDicV[curve];
         Target = target;
@@ -82,6 +91,10 @@ public class TweenScale : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.localScale = Origin;
+        }
     }
 
     public override void StartBackward()
@@ -92,6 +105,10 @@ public class TweenScale : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.localScale = Destination;
+        }
     }
 
     public override bool DoForward()
@@ -105,6 +122,7 @@ public class TweenScale : Tween
             Target.localScale = Destination;
 
             IsForward = false;
+            InBackward = true;
 
             OnForwardFinish.Invoke();
 
@@ -131,6 +149,7 @@ public class TweenScale : Tween
             Target.localScale = Origin;
 
             IsBackward = false;
+            InForward = true;
 
             OnBackwardFinish.Invoke();
 

+ 143 - 0
Assets/Script/Tool/Anim/TweenSr.cs

@@ -0,0 +1,143 @@
+using UnityEngine;
+
+using System.Collections;
+
+public class TweenSr : Tween 
+{
+    #region 变量
+
+    protected Color Delta;
+    protected Color Origin;
+    protected Color Destination;
+    protected SpriteRenderer Target;
+    protected CurveFunctionC Func;
+
+    #endregion
+
+    public TweenSr(SpriteRenderer target, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        if (target.color == origin)
+        {
+            InForward = true;
+        }
+        else if (target.color == destination)
+        {
+            InBackward = true;
+        }
+
+        Func = ManaAnim.FunctionDicC[curve];
+        Target = target;
+
+        IsForward = false;
+        IsBackward = false;
+
+        Delta = destination - origin;
+        Origin = origin;
+        Duration = duration;
+        DestActive = destActive;
+        Destination = destination;
+        OriginActive = originActive;
+
+        OnForwardStart += () =>
+        {
+            Target.SetActive(true);
+        };
+
+        OnForwardFinish += () =>
+        {
+            Target.SetActive(DestActive);
+        };
+
+        OnBackwardStart += () =>
+        {
+            Target.SetActive(true);
+        };
+
+        OnBackwardFinish += () =>
+        {
+            Target.SetActive(OriginActive);
+        };
+    }
+
+    public override void StartForward()
+    {
+        base.StartForward();
+
+        if (IsBackward)
+        {
+            Timer = Duration - Timer;
+        }
+        else
+        {
+            Target.color = Origin;
+        }
+    }
+
+    public override void StartBackward()
+    {
+        base.StartBackward();
+
+        if (IsForward)
+        {
+            Timer = Duration - Timer;
+        }
+        else
+        {
+            Target.color = Destination;
+        }
+    }
+
+    public override bool DoForward()
+    {
+        Timer += Time.fixedDeltaTime;
+
+        if (Timer > Duration)
+        {
+            Timer = 0;
+
+            Target.color = Destination;
+
+            IsForward = false;
+            InBackward = true;
+
+            OnForwardFinish.Invoke();
+
+            ManaAnim.TweenForList.Remove(this);
+
+            return true;
+        }
+        else
+        {
+            Target.color = Func(Timer, Duration, Origin, Delta);
+
+            return false;
+        }
+    }
+
+    public override bool DoBackward()
+    {
+        Timer += Time.fixedDeltaTime;
+
+        if (Timer > Duration)
+        {
+            Timer = 0;
+
+            Target.color = Origin;
+
+            IsBackward = false;
+            InForward = true;
+
+            OnBackwardFinish.Invoke();
+
+            ManaAnim.TweenBacList.Remove(this);
+
+            return true;
+        }
+        else
+        {
+            Target.color = Func(Timer, Duration, Destination, new Color(-Delta.r, -Delta.g, -Delta.b, -Delta.a));
+
+            return false;
+        }
+    }
+}

+ 2 - 2
Assets/TestText.cs.meta → Assets/Script/Tool/Anim/TweenSr.cs.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
-guid: 9a904f40657a1fc44ad84109ff8999c9
-timeCreated: 1490772216
+guid: 007093b9812101e498ba3da920d311a3
+timeCreated: 1490862487
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2

+ 19 - 0
Assets/Script/Tool/Anim/TweenVec.cs

@@ -18,6 +18,15 @@ public class TweenVec : Tween
 
     public TweenVec(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve)
     {
+        if (target.position == origin)
+        {
+            InForward = true;
+        }
+        else if (target.position == destination)
+        {
+            InBackward = true;
+        }
+
         CG = target.GetComponent<CanvasGroup>();
         Func = ManaAnim.FunctionDicV[curve];
         Target = target;
@@ -81,6 +90,10 @@ public class TweenVec : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.position = Origin;
+        }
     }
 
     public override void StartBackward()
@@ -91,6 +104,10 @@ public class TweenVec : Tween
         {
             Timer = Duration - Timer;
         }
+        else
+        {
+            Target.position = Destination;
+        }
     }
 
     public override bool DoForward()
@@ -104,6 +121,7 @@ public class TweenVec : Tween
             Target.position = Destination;
 
             IsForward = false;
+            InBackward = true;
 
             OnForwardFinish.Invoke();
 
@@ -130,6 +148,7 @@ public class TweenVec : Tween
             Target.position = Origin;
 
             IsBackward = false;
+            InForward = true;
 
             OnBackwardFinish.Invoke();
 

+ 3 - 3
Assets/Script/Tool/Auxiliary.cs

@@ -26,7 +26,7 @@ public class Auxiliary : MonoBehaviour
 
     public static bool AnyKeyUp;
     public static bool AnyKeyDown;
-    public static Auxiliary Inst;
+    public static Auxiliary Instance;
 
     public static MD5 MD5
     {
@@ -62,9 +62,9 @@ public class Auxiliary : MonoBehaviour
 
     #endregion
 
-    private void Start()
+    private void Awake()
     {
-        Inst = this;
+        Instance = this;
     }
 
     private void Update()

+ 55 - 6
Assets/Script/Tool/Data.cs

@@ -30,29 +30,78 @@ public class Data
         {
             if (_PlayerDoc == null)
             {
-                FileInfo fileInfo = new FileInfo(Application.persistentDataPath + "/PlayerConfig.xml");
+                int version = 0;
+                int nativeVersion = 0;
+                XmlNode temoNode;
+                XmlDocument tempDoc1;
+                XmlDocument tempDoc2;
 
+                FileInfo fileInfo = new FileInfo(Application.persistentDataPath + "/PlayerConfig.xml");
+                
                 if (fileInfo.Exists)
                 {
                     StreamReader sr = new StreamReader(Application.persistentDataPath + "/PlayerConfig.xml");
 
-                    _PlayerDoc = new XmlDocument();
-                    _PlayerDoc.LoadXml(sr.ReadToEnd());
+                    tempDoc1 = new XmlDocument();
+                    tempDoc1.LoadXml(sr.ReadToEnd());
 
                     sr.Close();
+
+                    TextAsset textAsset = Bundle.Config.LoadAsset<TextAsset>("PlayerConfig");
+
+                    tempDoc2 = new XmlDocument();
+                    tempDoc2.LoadXml(textAsset.text);
+                    
+                    version = int.Parse(tempDoc2.SelectSingleNode("PlayerConfig").SelectSingleNode("Version").Attributes[0].Value);
+
+                    temoNode = tempDoc1.SelectSingleNode("PlayerConfig").SelectSingleNode("Version");
+
+                    if (temoNode == null)
+                    {
+                        StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/PlayerConfig.xml");
+
+                        sw.Write(tempDoc2.OuterXml);
+
+                        sw.Close();
+
+                        _PlayerDoc = tempDoc2;
+                    }
+                    else
+                    {
+                        nativeVersion = int.Parse(temoNode.Attributes[0].Value);
+
+                        if (nativeVersion != version)
+                        {
+                            StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/PlayerConfig.xml");
+
+                            sw.Write(tempDoc2.OuterXml);
+
+                            sw.Close();
+
+                            _PlayerDoc = tempDoc2;
+                        }
+                        else
+                        {
+                            _PlayerDoc = tempDoc1;
+                        }
+                    }
                 }
                 else
                 {
                     TextAsset textAsset = Bundle.Config.LoadAsset<TextAsset>("PlayerConfig");
 
-                    _PlayerDoc = new XmlDocument();
-                    _PlayerDoc.LoadXml(textAsset.text);
+                    tempDoc2 = new XmlDocument();
+                    tempDoc2.LoadXml(textAsset.text);
 
                     StreamWriter sw = new StreamWriter(Application.persistentDataPath + "/PlayerConfig.xml");
 
-                    sw.Write(_PlayerDoc.OuterXml);
+                    sw.Write(tempDoc2.OuterXml);
 
                     sw.Close();
+
+                    _PlayerDoc = tempDoc2;
+
+                    _PlayerDoc.SelectSingleNode("PlayerConfig").SelectSingleNode("QuitTime").Attributes[0].Value = DateTime.Now.ToString();
                 }
             }
 

+ 104 - 0
Assets/Script/Tool/Extension.cs

@@ -5,6 +5,8 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 
+using Random = UnityEngine.Random;
+
 public static class Extension
 {
     #region List
@@ -14,6 +16,11 @@ public static class Extension
         return list[list.Count - 1 - index];
     }
 
+    public static T Random<T>(this List<T> list)
+    {
+        return list[UnityEngine.Random.Range(0, list.Count)];
+    }
+
     public static bool Valid<T>(this List<T> list)
     {
         if (list == null || list.Count == 0)
@@ -173,6 +180,11 @@ public static class Extension
 
     #region Tween
 
+    public static void TweenForSr(this Component comp)
+    {
+        ManaAnim.TweenForSr(comp.transform);
+    }
+
     public static void TweenForCG(this Component comp)
     {
         ManaAnim.TweenForCG(comp.transform);
@@ -204,6 +216,11 @@ public static class Extension
     }
 
 
+    public static void TweenBacSr(this Component comp)
+    {
+        ManaAnim.TweenBacSr(comp.transform);
+    }
+
     public static void TweenBacCG(this Component comp)
     {
         ManaAnim.TweenBacCG(comp.transform);
@@ -235,6 +252,83 @@ public static class Extension
     }
 
 
+    public static void TweenConForSr(this Component comp)
+    {
+        ManaAnim.TweenConForSr(comp.transform);
+    }
+
+    public static void TweenConForCG(this Component comp)
+    {
+        ManaAnim.TweenConForCG(comp.transform);
+    }
+
+    public static void TweenConForVec(this Component comp)
+    {
+        ManaAnim.TweenConForVec(comp.transform);
+    }
+
+    public static void TweenConForGra(this Component comp)
+    {
+        ManaAnim.TweenConForGra(comp.transform);
+    }
+
+    public static void TweenConForRect(this Component comp)
+    {
+        ManaAnim.TweenConForRect(comp.transform);
+    }
+
+    public static void TweenConForScale(this Component comp)
+    {
+        ManaAnim.TweenConForScale(comp.transform);
+    }
+
+    public static void TweenConForAudio(this Component comp)
+    {
+        ManaAnim.TweenConForAudio(comp.transform);
+    }
+
+
+    public static void TweenConBacSr(this Component comp)
+    {
+        ManaAnim.TweenConBacSr(comp.transform);
+    }
+
+    public static void TweenConBacCG(this Component comp)
+    {
+        ManaAnim.TweenConBacCG(comp.transform);
+    }
+
+    public static void TweenConBacVec(this Component comp)
+    {
+        ManaAnim.TweenConBacVec(comp.transform);
+    }
+
+    public static void TweenConBacGra(this Component comp)
+    {
+        ManaAnim.TweenConBacGra(comp.transform);
+    }
+
+    public static void TweenConBacRect(this Component comp)
+    {
+        ManaAnim.TweenConBacRect(comp.transform);
+    }
+
+    public static void TweenConBacScale(this Component comp)
+    {
+        ManaAnim.TweenConBacScale(comp.transform);
+    }
+
+    public static void TweenConBacAudio(this Component comp)
+    {
+        ManaAnim.TweenConBacAudio(comp.transform);
+    }
+
+
+    public static TweenSr GetTweenSr(this Component comp)
+    {
+        return ManaAnim.GetTweenSr(comp.transform);
+    }
+
     public static TweenCG GetTweenCG(this Component comp)
     {
         return ManaAnim.GetTweenCG(comp.transform);
@@ -266,6 +360,16 @@ public static class Extension
     }
 
 
+    public static TweenSr CreateTweenSr(this Component comp, Color origin, Color destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        return ManaAnim.CreateTweenSr(comp.transform, origin, destination, duration, originActive, destActive, curve);
+    }
+
+    public static TweenSr CreateTweenSr(this Component comp, Color destination, float duration, bool originActive, bool destActive, Curve curve)
+    {
+        return ManaAnim.CreateTweenSr(comp.transform, destination, duration, originActive, destActive, curve);
+    }
+
     public static TweenCG CreateTweenCG(this Component comp, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
     {
         return ManaAnim.CreateTweenCG(comp.transform, origin, destination, duration, originActive, destActive, curve);

+ 1 - 1
Assets/Script/Tool/SpriteAsset.cs

@@ -70,10 +70,10 @@ public class SpriteAsset : MonoBehaviour
                 Vector2 lrUv = new Vector2(sprite.rect.xMax / width, sprite.rect.yMin / height);
 
                 spriteInfo.UvList = new List<Vector2>();
-                spriteInfo.UvList.Add(llUv);
                 spriteInfo.UvList.Add(ulUv);
                 spriteInfo.UvList.Add(urUv);
                 spriteInfo.UvList.Add(lrUv);
+                spriteInfo.UvList.Add(llUv);
                 
                 _SpriteInfoDic.Add(spriteInfo.Name, spriteInfo);
             }

+ 373 - 116
Assets/Script/Tool/UI/TextPlus.cs

@@ -5,19 +5,74 @@ using System.Linq;
 using System.Collections;
 using System.Collections.Generic;
 
-public class TextPlus : Text
+public class LineInfo
 {
-    #region
+    public int Count;
+    public int EndIndex;
+    public int StartIndex;
+
+    public LineInfo(int startIndex, int endIndex)
+    {
+        EndIndex = endIndex;
+        StartIndex = startIndex;
+
+        Count = EndIndex - StartIndex + 1;
+    }
+}
+
+public class RenderInfo
+{
+    public LineInfo LineInfo
+    {
+        get { return _LineInfo; }
+        set
+        {
+            _LineInfo = value;
+
+            EndIndex = _LineInfo.EndIndex;
+            StartIndex = _LineInfo.StartIndex;
+            LineCount = _LineInfo.Count;
+        }
+    }
+    public SpriteInfo SpriteInfo
+    {
+        get { return _SpriteInfo; }
+        set
+        {
+            _SpriteInfo = value;
+
+            UvList = _SpriteInfo.UvList;
+            RawWidth = _SpriteInfo.Width;
+            RawHeight = _SpriteInfo.Height;
+
+            RenderCount = RightIndex - LeftIndex + 1;
+        }
+    }
+
+    private LineInfo _LineInfo;
+    private SpriteInfo _SpriteInfo;
+
+    public int LineCount;
+    public int RenderCount;
 
     public int LeftIndex;
     public int RightIndex;
-    public int BreakIndex;
 
-    public bool Draw;
+    public int EndIndex;
+    public int StartIndex;
+
     public float Width;
     public float Height;
-    public string SpriteName;
-    public SpriteInfo SpriteInfo;
+
+    public float RawWidth;
+    public float RawHeight;
+
+    public List<Vector2> UvList;
+}
+
+public class TextPlus : Text
+{
+    #region 变量
 
     public ImagePlus ImagePlus
     {
@@ -26,6 +81,15 @@ public class TextPlus : Text
             if (_ImagePlus == null)
             {
                 _ImagePlus = GetComponentInChildren<ImagePlus>();
+
+                if (_ImagePlus == null)
+                {
+                    GameObject go = new GameObject("ImagePlus", typeof(ImagePlus));
+
+                    RectTransform rectTra = go.GetComponent<RectTransform>();
+
+                    rectTra.SetParent(rectTransform);
+                }
             }
 
             return _ImagePlus;
@@ -35,33 +99,50 @@ public class TextPlus : Text
 
     private ImagePlus _ImagePlus;
 
+    public bool Draw;
+    public RenderInfo RenderInfo;
+
+    public List<LineInfo> LineInfoList;
+
     #endregion
 
-    protected override void OnPopulateMesh(VertexHelper toFill)
+    protected override void Awake()
     {
-        base.OnPopulateMesh(toFill);
+        base.Awake();
 
-        if (ImagePlus == null)
-        {
-            Debug.LogWarning("There is no ImagePlus");
+        verticalOverflow = VerticalWrapMode.Overflow;
+        horizontalOverflow = HorizontalWrapMode.Overflow;
+    }
 
-            return;
-        }
+    protected override void OnPopulateMesh(VertexHelper toFill)
+    {
+        base.OnPopulateMesh(toFill);
 
-        LeftIndex = text.IndexOf("<(");
-        RightIndex = text.IndexOf(")>");
+        int leftIndex = text.IndexOf("<(");
+        int rightIndex = text.IndexOf(")>");
 
-        if (LeftIndex == -1 || RightIndex == -1)
+        if (leftIndex == -1 || rightIndex == -1)
         {
             Draw = false;
         }
         else
         {
-            SpriteName = text.Between(LeftIndex + 2, RightIndex - 1);
+            rightIndex++;
 
-            if (SpriteAsset.SpriteInfoDic.TryGetValue(SpriteName, out SpriteInfo))
+            string spriteName = text.Between(leftIndex + 2, rightIndex - 2);
+
+            SpriteInfo spriteInfo;
+
+            if (SpriteAsset.SpriteInfoDic.TryGetValue(spriteName, out spriteInfo))
             {
                 Draw = true;
+
+                RenderInfo = new RenderInfo();
+
+                RenderInfo.LeftIndex = leftIndex;
+                RenderInfo.RightIndex = rightIndex;
+
+                RenderInfo.SpriteInfo = spriteInfo;
             }
             else
             {
@@ -72,149 +153,325 @@ public class TextPlus : Text
         if (Draw)
         {
             Draw = false;
-            
-            UIVertex[] vertices = new UIVertex[4];
 
-            List<UIVertex> vertexList = new List<UIVertex>();
+            List<UIVertex> vertexImage = new List<UIVertex>();
+            List<UIVertex> vertexStream = new List<UIVertex>();
 
-            toFill.GetUIVertexStream(vertexList);
-            
-            int row = text.Split('\n').Length;
+            toFill.GetUIVertexStream(vertexStream);
+
+            RenderInfo.Height = preferredHeight / cachedTextGenerator.lineCount;
+            RenderInfo.Width = (RenderInfo.Height / RenderInfo.RawHeight) * RenderInfo.RawWidth;
+
+            GetRenderLine();
+
+            RenderLine(vertexImage, vertexStream, toFill);
+
+            ImagePlus.UpdateStatus(true, new VertexHelper(), vertexImage);
+        }
+        else
+        {
+            ImagePlus.UpdateStatus(false, new VertexHelper(), null);
+        }
+    }
 
-            if (row == 1)
-            {
-                BreakIndex = text.Length;
-            }
-            else
-            {
-                BreakIndex = text.IndexOf('\n');
-            }
 
-            Height = preferredHeight/row;
+    protected void RenderLine(List<UIVertex> vertexImage, List<UIVertex> vertexStream, VertexHelper vertexHelper)
+    {
+        UIVertex[] vertices = new UIVertex[4];
+
+        vertices[0].color = Color.white;
+        vertices[1].color = Color.white;
+        vertices[2].color = Color.white;
+        vertices[3].color = Color.white;
 
-            Width = (Height / SpriteInfo.Height) * SpriteInfo.Width;
+        vertices[0].uv0 = RenderInfo.UvList[0];
+        vertices[1].uv0 = RenderInfo.UvList[1];
+        vertices[2].uv0 = RenderInfo.UvList[2];
+        vertices[3].uv0 = RenderInfo.UvList[3];
 
-            Vector3 centerLeft;
+        if (RenderInfo.LineCount == RenderInfo.RenderCount)
+        {
+            #region MyRegion
 
-            if (LeftIndex == 0)
+            if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
             {
-                centerLeft = (vertexList[LeftIndex * 6 + 4].position + vertexList[LeftIndex * 6 + 5].position) / 2;
+                #region MyRegion
+
+                Vector3 center = new Vector3(0, (vertexStream[RenderInfo.StartIndex * 6].position.y + vertexStream[RenderInfo.StartIndex * 6 + 4].position.y) / 2, 0);
+
+                vertices[0].position = center + new Vector3(-RenderInfo.Width / 2, RenderInfo.Height / 2, 0);
+                vertices[1].position = center + new Vector3(RenderInfo.Width / 2, RenderInfo.Height / 2, 0);
+                vertices[2].position = center + new Vector3(RenderInfo.Width / 2, -RenderInfo.Height / 2, 0);
+                vertices[3].position = center + new Vector3(-RenderInfo.Width / 2, -RenderInfo.Height / 2, 0);
+
+                #endregion
             }
-            else
+            else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
             {
-                centerLeft = (vertexList[(LeftIndex -1)* 6 + 1].position + vertexList[(LeftIndex - 1)*6 + 2].position) / 2;
-            }
+                #region MyRegion
 
-            vertices[0].position = centerLeft + new Vector3(0, -Height/2, 0);
-            vertices[1].position = centerLeft + new Vector3(0, Height/2, 0);
-            vertices[2].position = centerLeft + new Vector3(Width, Height/2, 0);
-            vertices[3].position = centerLeft + new Vector3(Width, -Height/2, 0);
+                Vector3 centerRight = (vertexStream[RenderInfo.RightIndex * 6 + 1].position + vertexStream[RenderInfo.RightIndex * 6 + 2].position) / 2;
 
-            vertices[0].color = Color.white;
-            vertices[1].color = Color.white;
-            vertices[2].color = Color.white;
-            vertices[3].color = Color.white;
+                vertices[0].position = centerRight + new Vector3(-RenderInfo.Width, RenderInfo.Height / 2, 0);
+                vertices[1].position = centerRight + new Vector3(0, RenderInfo.Height / 2, 0);
+                vertices[2].position = centerRight + new Vector3(0, -RenderInfo.Height / 2, 0);
+                vertices[3].position = centerRight + new Vector3(-RenderInfo.Width, -RenderInfo.Height / 2, 0);
 
-            vertices[0].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[0];
-            vertices[1].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[1];
-            vertices[2].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[2];
-            vertices[3].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[3];
+                #endregion
+            }
+            else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
+            {
+                #region MyRegion
 
-            UIVertex vertex = new UIVertex();
+                Vector3 centerLeft = (vertexStream[0].position + vertexStream[4].position) / 2;
 
-            for (int i = LeftIndex; i < RightIndex + 2; i++)
-            {
-                toFill.SetUIVertex(vertex, i*4);
-                toFill.SetUIVertex(vertex, i*4 + 1);
-                toFill.SetUIVertex(vertex, i*4 + 2);
-                toFill.SetUIVertex(vertex, i*4 + 3);
+                vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
+                vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
+                vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
+                vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
+
+                #endregion
             }
 
-            if (LeftIndex == 0)
+            #endregion
+        }
+        else
+        {
+            #region MyRegion
+
+            if (alignment == TextAnchor.LowerCenter || alignment == TextAnchor.MiddleCenter || alignment == TextAnchor.UpperCenter)
             {
-                float offsetX1 = vertexList[(RightIndex + 2) * 6].position.x - vertices[3].position.x;
+                #region MyRegion
 
-                float offsetX2 = (vertexList[(BreakIndex - 1) * 6 + 1].position.x + vertices[0].position.x - offsetX1) / 2;
+                Vector3 centerLeft = new Vector3();
 
-                for (int i = RightIndex + 2; i < BreakIndex; i++)
+                if (RenderInfo.LeftIndex == RenderInfo.StartIndex)
                 {
-                    vertex = vertexList[i * 6];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4);
-
-                    vertex = vertexList[i * 6 + 1];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 1);
+                    centerLeft = (vertexStream[RenderInfo.LeftIndex * 6].position + vertexStream[RenderInfo.LeftIndex * 6 + 4].position) / 2;
+                }
+                else
+                {
+                    centerLeft = (vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position + vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 2].position) / 2;
+                }
 
-                    vertex = vertexList[i * 6 + 2];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 2);
+                vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
+                vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
+                vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
+                vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
 
-                    vertex = vertexList[i * 6 + 4];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 3);
+                if ((RenderInfo.RightIndex) != RenderInfo.EndIndex)
+                {
+                    float offsetX1 = vertexStream[(RenderInfo.RightIndex + 1) * 6].position.x - vertices[1].position.x;
+                    float offsetX2 = (vertexStream[RenderInfo.EndIndex * 6 + 1].position.x + vertexStream[RenderInfo.StartIndex * 6].position.x - offsetX1) / 2;
+
+                    UIVertex newVertex;
+
+                    for (int i = RenderInfo.RightIndex + 1; i < RenderInfo.EndIndex + 1; i++)
+                    {
+                        newVertex = vertexStream[i * 6];
+                        newVertex.position.x -= offsetX1 + offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4);
+
+                        newVertex = vertexStream[i * 6 + 1];
+                        newVertex.position.x -= offsetX1 + offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
+
+                        newVertex = vertexStream[i * 6 + 2];
+                        newVertex.position.x -= offsetX1 + offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
+
+                        newVertex = vertexStream[i * 6 + 4];
+                        newVertex.position.x -= offsetX1 + offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
+                    }
+
+                    for (int i = RenderInfo.StartIndex; i < RenderInfo.LeftIndex; i++)
+                    {
+                        newVertex = vertexStream[i * 6];
+                        newVertex.position.x -= offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4);
+
+                        newVertex = vertexStream[i * 6 + 1];
+                        newVertex.position.x -= offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
+
+                        newVertex = vertexStream[i * 6 + 2];
+                        newVertex.position.x -= offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
+
+                        newVertex = vertexStream[i * 6 + 4];
+                        newVertex.position.x -= offsetX2;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
+                    }
+
+                    vertices[0].position.x -= offsetX2;
+                    vertices[1].position.x -= offsetX2;
+                    vertices[2].position.x -= offsetX2;
+                    vertices[3].position.x -= offsetX2;
                 }
 
-                vertices[0].position.x -= offsetX2;
-                vertices[1].position.x -= offsetX2;
-                vertices[2].position.x -= offsetX2;
-                vertices[3].position.x -= offsetX2;
+                #endregion
             }
-            else
+            else if (alignment == TextAnchor.LowerRight || alignment == TextAnchor.MiddleRight || alignment == TextAnchor.UpperRight)
             {
-                float offsetX1 = vertexList[(RightIndex + 2) * 6].position.x - vertices[3].position.x;
+                #region MyRegion
+
+                Vector3 centerRight = new Vector3();
+
+                if ((RenderInfo.RightIndex) == RenderInfo.EndIndex)
+                {
+                    centerRight = (vertexStream[RenderInfo.EndIndex * 6 + 1].position + vertexStream[RenderInfo.EndIndex * 6 + 2].position) / 2;
+                }
+                else
+                {
+                    centerRight = (vertexStream[(RenderInfo.RightIndex) * 6 + 1].position + vertexStream[(RenderInfo.RightIndex) * 6 + 2].position) / 2;
+                }
 
-                float offsetX2 = (vertexList[(BreakIndex - 1) * 6 + 1].position.x + vertexList[0].position.x - offsetX1) / 2;
+                vertices[0].position = centerRight + new Vector3(-RenderInfo.Width, RenderInfo.Height / 2, 0);
+                vertices[1].position = centerRight + new Vector3(0, RenderInfo.Height / 2, 0);
+                vertices[2].position = centerRight + new Vector3(0, -RenderInfo.Height / 2, 0);
+                vertices[3].position = centerRight + new Vector3(-RenderInfo.Width, -RenderInfo.Height / 2, 0);
 
-                for (int i = 0; i < LeftIndex; i++)
+                if (RenderInfo.LeftIndex != RenderInfo.StartIndex)
                 {
-                    vertex = vertexList[i * 6];
-                    vertex.position.x -= offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4);
+                    float offsetX1 = vertices[0].position.x - vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position.x;
+
+                    UIVertex newVertex;
 
-                    vertex = vertexList[i * 6 + 1];
-                    vertex.position.x -= offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 1);
+                    for (int i = RenderInfo.StartIndex; i < RenderInfo.LeftIndex; i++)
+                    {
+                        newVertex = vertexStream[i * 6];
+                        newVertex.position.x += offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4);
 
-                    vertex = vertexList[i * 6 + 2];
-                    vertex.position.x -= offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 2);
+                        newVertex = vertexStream[i * 6 + 1];
+                        newVertex.position.x += offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
 
-                    vertex = vertexList[i * 6 + 4];
-                    vertex.position.x -= offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 3);
+                        newVertex = vertexStream[i * 6 + 2];
+                        newVertex.position.x += offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
+
+                        newVertex = vertexStream[i * 6 + 4];
+                        newVertex.position.x += offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
+                    }
+                }
+
+                #endregion
+            }
+            else if (alignment == TextAnchor.LowerLeft || alignment == TextAnchor.MiddleLeft || alignment == TextAnchor.UpperLeft)
+            {
+                #region MyRegion
+
+                Vector3 centerLeft = new Vector3();
+
+                if (RenderInfo.LeftIndex == RenderInfo.StartIndex)
+                {
+                    centerLeft = (vertexStream[RenderInfo.LeftIndex * 6].position + vertexStream[RenderInfo.LeftIndex * 6 + 4].position) / 2;
                 }
+                else
+                {
+                    centerLeft = (vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 1].position + vertexStream[(RenderInfo.LeftIndex - 1) * 6 + 2].position) / 2;
+                }
+
+                vertices[0].position = centerLeft + new Vector3(0, RenderInfo.Height / 2, 0);
+                vertices[1].position = centerLeft + new Vector3(RenderInfo.Width, RenderInfo.Height / 2, 0);
+                vertices[2].position = centerLeft + new Vector3(RenderInfo.Width, -RenderInfo.Height / 2, 0);
+                vertices[3].position = centerLeft + new Vector3(0, -RenderInfo.Height / 2, 0);
 
-                for (int i = RightIndex + 2; i < BreakIndex; i++)
+                if ((RenderInfo.RightIndex) != RenderInfo.EndIndex)
                 {
-                    vertex = vertexList[i * 6];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4);
+                    float offsetX1 = vertexStream[(RenderInfo.RightIndex + 1) * 6].position.x - vertices[1].position.x;
+
+                    UIVertex newVertex;
+
+                    for (int i = RenderInfo.RightIndex + 1; i < RenderInfo.EndIndex + 1; i++)
+                    {
+                        newVertex = vertexStream[i * 6];
+                        newVertex.position.x -= offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4);
 
-                    vertex = vertexList[i * 6 + 1];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 1);
+                        newVertex = vertexStream[i * 6 + 1];
+                        newVertex.position.x -= offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 1);
 
-                    vertex = vertexList[i * 6 + 2];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 2);
+                        newVertex = vertexStream[i * 6 + 2];
+                        newVertex.position.x -= offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 2);
 
-                    vertex = vertexList[i * 6 + 4];
-                    vertex.position.x -= offsetX1 + offsetX2;
-                    toFill.SetUIVertex(vertex, i * 4 + 3);
+                        newVertex = vertexStream[i * 6 + 4];
+                        newVertex.position.x -= offsetX1;
+                        vertexHelper.SetUIVertex(newVertex, i * 4 + 3);
+                    }
                 }
 
-                vertices[0].position.x -= offsetX2;
-                vertices[1].position.x -= offsetX2;
-                vertices[2].position.x -= offsetX2;
-                vertices[3].position.x -= offsetX2;
+                #endregion
             }
 
-            ImagePlus.UpdateStatus(true, new VertexHelper(), vertices.ToList());
+            #endregion
         }
-        else
+
+        vertexImage.AddRange(vertices);
+
+        UIVertex vertex = new UIVertex();
+
+        for (int i = RenderInfo.LeftIndex; i < RenderInfo.RightIndex + 1; i++)
         {
-            ImagePlus.UpdateStatus(false, new VertexHelper(), null);
+            vertexHelper.SetUIVertex(vertex, i * 4);
+            vertexHelper.SetUIVertex(vertex, i * 4 + 1);
+            vertexHelper.SetUIVertex(vertex, i * 4 + 2);
+            vertexHelper.SetUIVertex(vertex, i * 4 + 3);
+        }
+    }
+
+
+    protected List<LineInfo> GetLineInfo()
+    {
+        int startIndex = 0;
+
+        List<LineInfo> lineInfoList = new List<LineInfo>();
+
+        if (cachedTextGenerator.lineCount > 1)
+        {
+            for (int i = 0; i < text.Length; i++)
+            {
+                if (text[i] == '\n')
+                {
+                    if (text[startIndex] != '\n')
+                    {
+                        lineInfoList.Add(new LineInfo(startIndex, i));
+                    }
+
+                    if (i + 1 == text.Length)
+                    {
+                        return lineInfoList;
+                    }
+                    else
+                    {
+                        startIndex = i + 1;
+                    }
+                }
+            }
+        }
+
+        lineInfoList.Add(new LineInfo(startIndex, text.Length - 1));
+
+        return lineInfoList;
+    }
+
+    protected void GetRenderLine()
+    {
+        List<LineInfo> lineInfoList = GetLineInfo();
+
+        for (int i = 0; i < lineInfoList.Count; i++)
+        {
+            if (RenderInfo.LeftIndex >= lineInfoList[i].StartIndex && RenderInfo.LeftIndex < lineInfoList[i].EndIndex)
+            {
+                RenderInfo.LineInfo = lineInfoList[i];
+
+                break;
+            }
         }
     }
 }

+ 0 - 316
Assets/TestText.cs

@@ -1,316 +0,0 @@
-using UnityEngine;
-using UnityEngine.UI;
-
-using System.Linq;
-using System.Collections;
-using System.Collections.Generic;
-
-public class LineInfo
-{
-    public int EndIndex;
-    public int StartIndex;
-
-    public LineInfo(int startIndex, int endIndex)
-    {
-        EndIndex = endIndex;
-        StartIndex = startIndex;
-    }
-}
-
-public class RenderInfo
-{
-    public LineInfo LineInfo;
-    public SpriteInfo SpriteInfo;
-
-    public RenderInfo(LineInfo lineInfo, SpriteInfo spriteInfo)
-    {
-        LineInfo = lineInfo;
-        SpriteInfo = spriteInfo;
-    }
-}
-
-public class TestText : Text
-{
-	#region 变量
-
-    public int LeftIndex;
-    public int RightIndex;
-
-    public bool Draw;
-    public float Width;
-    public float Height;
-    public string SpriteName;
-    public SpriteInfo SpriteInfo;
-    public List<LineInfo> LineInfoList;
-    public List<UIVertex> VertexImage;
-    public List<UIVertex> VertexStream;
-    public List<RenderInfo> RenderInfoList;
-
-    public ImagePlus ImagePlus
-    {
-        get
-        {
-            if (_ImagePlus == null)
-            {
-                _ImagePlus = GetComponentInChildren<ImagePlus>();
-
-                if (_ImagePlus == null)
-                {
-                    GameObject go = new GameObject("ImagePlus", typeof(ImagePlus));
-
-                    RectTransform rectTra = go.GetComponent<RectTransform>();
-
-                    rectTra.SetParent(rectTransform);
-                }
-            }
-
-            return _ImagePlus;
-        }
-        set { _ImagePlus = value; }
-    }
-
-    private ImagePlus _ImagePlus;
-
-    #endregion
-
-    protected override void Awake()
-    {
-        base.Awake();
-
-        verticalOverflow = VerticalWrapMode.Overflow;
-        horizontalOverflow = HorizontalWrapMode.Wrap;
-    }
-
-    protected override void OnPopulateMesh(VertexHelper toFill)
-    {
-        base.OnPopulateMesh(toFill);
-
-        if (ImagePlus == null)
-        {
-            Debug.LogWarning("There is no ImagePlus");
-
-            return;
-        }
-
-        LeftIndex = text.IndexOf("<(");
-        RightIndex = text.IndexOf(")>");
-
-        if (LeftIndex == -1 || RightIndex == -1)
-        {
-            Draw = false;
-        }
-        else
-        {
-            SpriteName = text.Between(LeftIndex + 2, RightIndex - 1);
-
-            if (SpriteAsset.SpriteInfoDic.TryGetValue(SpriteName, out SpriteInfo))
-            {
-                Draw = true;
-            }
-            else
-            {
-                Draw = false;
-            }
-        }
-
-        if (Draw)
-        {
-            Draw = false;
-
-            VertexImage = new List<UIVertex>();
-            VertexStream = new List<UIVertex>();
-
-            toFill.GetUIVertexStream(VertexStream);
-
-            Height = preferredHeight / cachedTextGenerator.lineCount;
-
-            Width = (Height / SpriteInfo.Height) * SpriteInfo.Width;
-
-            LineInfoList = GetLineInfo();
-
-            RenderInfoList = GetRenderInfo();
-
-            RenderLine(RenderInfoList[0], VertexImage, VertexStream, toFill);
-
-            ImagePlus.UpdateStatus(true, new VertexHelper(), VertexImage);
-        }
-        else
-        {
-            ImagePlus.UpdateStatus(false, new VertexHelper(), null);
-        }
-    }
-
-
-    protected void RenderLine(RenderInfo renderInfo, List<UIVertex> vertexImage, List<UIVertex> vertexStream, VertexHelper toFill)
-    {
-        Vector3 centerLeft = new Vector3();
-
-        if (LeftIndex == renderInfo.LineInfo.StartIndex)
-        {
-            centerLeft = (vertexStream[LeftIndex * 6 + 4].position + vertexStream[LeftIndex * 6 + 5].position) / 2;
-        }
-        else
-        {
-            centerLeft = (vertexStream[(LeftIndex - 1) * 6 + 1].position + vertexStream[(LeftIndex - 1) * 6 + 2].position) / 2;
-        }
-
-        UIVertex[] vertices = new UIVertex[4];
-
-        vertices[0].position = centerLeft + new Vector3(0, -Height / 2, 0);
-        vertices[1].position = centerLeft + new Vector3(0, Height / 2, 0);
-        vertices[2].position = centerLeft + new Vector3(Width, Height / 2, 0);
-        vertices[3].position = centerLeft + new Vector3(Width, -Height / 2, 0);
-
-        vertices[0].color = Color.white;
-        vertices[1].color = Color.white;
-        vertices[2].color = Color.white;
-        vertices[3].color = Color.white;
-
-        vertices[0].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[0];
-        vertices[1].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[1];
-        vertices[2].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[2];
-        vertices[3].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[3];
-
-        UIVertex vertex = new UIVertex();
-
-        for (int i = LeftIndex; i < RightIndex + 2; i++)
-        {
-            toFill.SetUIVertex(vertex, i * 4);
-            toFill.SetUIVertex(vertex, i * 4 + 1);
-            toFill.SetUIVertex(vertex, i * 4 + 2);
-            toFill.SetUIVertex(vertex, i * 4 + 3);
-        }
-
-        if (LeftIndex == renderInfo.LineInfo.StartIndex)
-        {
-            float offsetX1 = VertexStream[(RightIndex + 2) * 6].position.x - vertices[3].position.x;
-
-            float offsetX2 = (VertexStream[(BreakIndex - 1) * 6 + 1].position.x + vertices[0].position.x - offsetX1) / 2;
-
-            for (int i = RightIndex + 2; i < BreakIndex; i++)
-            {
-                vertex = VertexStream[i * 6];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4);
-
-                vertex = VertexStream[i * 6 + 1];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 1);
-
-                vertex = VertexStream[i * 6 + 2];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 2);
-
-                vertex = VertexStream[i * 6 + 4];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 3);
-            }
-
-            vertices[0].position.x -= offsetX2;
-            vertices[1].position.x -= offsetX2;
-            vertices[2].position.x -= offsetX2;
-            vertices[3].position.x -= offsetX2;
-        }
-        else
-        {
-            float offsetX1 = VertexStream[(RightIndex + 2) * 6].position.x - vertices[3].position.x;
-
-            float offsetX2 = (VertexStream[(BreakIndex - 1) * 6 + 1].position.x + VertexStream[0].position.x - offsetX1) / 2;
-
-            for (int i = 0; i < LeftIndex; i++)
-            {
-                vertex = VertexStream[i * 6];
-                vertex.position.x -= offsetX2;
-                toFill.SetUIVertex(vertex, i * 4);
-
-                vertex = VertexStream[i * 6 + 1];
-                vertex.position.x -= offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 1);
-
-                vertex = VertexStream[i * 6 + 2];
-                vertex.position.x -= offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 2);
-
-                vertex = VertexStream[i * 6 + 4];
-                vertex.position.x -= offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 3);
-            }
-
-            for (int i = RightIndex + 2; i < BreakIndex; i++)
-            {
-                vertex = VertexStream[i * 6];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4);
-
-                vertex = VertexStream[i * 6 + 1];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 1);
-
-                vertex = VertexStream[i * 6 + 2];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 2);
-
-                vertex = VertexStream[i * 6 + 4];
-                vertex.position.x -= offsetX1 + offsetX2;
-                toFill.SetUIVertex(vertex, i * 4 + 3);
-            }
-
-            vertices[0].position.x -= offsetX2;
-            vertices[1].position.x -= offsetX2;
-            vertices[2].position.x -= offsetX2;
-            vertices[3].position.x -= offsetX2;
-        }
-    }
-
-
-    protected List<LineInfo> GetLineInfo()
-    {
-        int startIndex = 0;
-
-        List<LineInfo> lineInfoList = new List<LineInfo>();
-
-        if (cachedTextGenerator.lineCount > 1)
-        {
-            for (int i = 0; i < text.Length; i++)
-            {
-                if (text[i] == '\n')
-                {
-                    if (text[startIndex] != '\n')
-                    {
-                        lineInfoList.Add(new LineInfo(startIndex, i));
-                    }
-                    
-                    if (i + 1 == text.Length)
-                    {
-                        return lineInfoList;
-                    }
-                    else
-                    {
-                        startIndex = i + 1;
-                    }
-                }
-            }
-        }
-        
-        lineInfoList.Add(new LineInfo(startIndex, text.Length - 1));
-
-        return lineInfoList;
-    }
-
-    protected List<RenderInfo> GetRenderInfo()
-    {
-        List<RenderInfo> renderInfoList = new List<RenderInfo>();
-
-        for (int i = 0; i < LineInfoList.Count; i++)
-        {
-            if (LeftIndex >= LineInfoList[i].StartIndex && LeftIndex < LineInfoList[i].EndIndex)
-            {
-                renderInfoList.Add(new RenderInfo(LineInfoList[i], SpriteInfo));
-
-                break;
-            }
-        }
-
-        return renderInfoList;
-    }
-}

+ 3 - 3
MyLovelyGarden.Editor.csproj

@@ -15,7 +15,7 @@
     <TargetFrameworkProfile>Unity Full v3.5</TargetFrameworkProfile>
     <CompilerResponseFile></CompilerResponseFile>
     <UnityProjectType>Editor:5</UnityProjectType>
-    <UnityBuildTarget>Android:13</UnityBuildTarget>
+    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>
     <UnityVersion>5.5.0f3</UnityVersion>
     <RootNamespace></RootNamespace>
     <LangVersion Condition=" '$(VisualStudioVersion)' != '10.0' ">4</LangVersion>
@@ -27,7 +27,7 @@
     <IntermediateOutputPath>Temp\UnityVS_obj\Debug\</IntermediateOutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_ANDROID;ENABLE_SUBSTANCE;UNITY_ANDROID_API;ENABLE_EGL;ENABLE_NETWORK;ENABLE_RUNTIME_GI;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;PLATFORM_SUPPORTS_ADS_ID;UNITY_CAN_SHOW_SPLASH_SCREEN;ENABLE_VIDEO;ENABLE_VR;ENABLE_UNITYADS_RUNTIME;UNITY_UNITYADS_API;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
+    <DefineConstants>DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VIDEO;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
     <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -37,7 +37,7 @@
     <IntermediateOutputPath>Temp\UnityVS_obj\Release\</IntermediateOutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_ANDROID;ENABLE_SUBSTANCE;UNITY_ANDROID_API;ENABLE_EGL;ENABLE_NETWORK;ENABLE_RUNTIME_GI;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;PLATFORM_SUPPORTS_ADS_ID;UNITY_CAN_SHOW_SPLASH_SCREEN;ENABLE_VIDEO;ENABLE_VR;ENABLE_UNITYADS_RUNTIME;UNITY_UNITYADS_API;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
+    <DefineConstants>TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VIDEO;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
     <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>

+ 4 - 3
MyLovelyGarden.csproj

@@ -15,7 +15,7 @@
     <TargetFrameworkProfile>Unity Subset v3.5</TargetFrameworkProfile>
     <CompilerResponseFile></CompilerResponseFile>
     <UnityProjectType>Game:1</UnityProjectType>
-    <UnityBuildTarget>Android:13</UnityBuildTarget>
+    <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>
     <UnityVersion>5.5.0f3</UnityVersion>
     <RootNamespace></RootNamespace>
     <LangVersion Condition=" '$(VisualStudioVersion)' != '10.0' ">4</LangVersion>
@@ -27,7 +27,7 @@
     <IntermediateOutputPath>Temp\UnityVS_obj\Debug\</IntermediateOutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_ANDROID;ENABLE_SUBSTANCE;UNITY_ANDROID_API;ENABLE_EGL;ENABLE_NETWORK;ENABLE_RUNTIME_GI;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;PLATFORM_SUPPORTS_ADS_ID;UNITY_CAN_SHOW_SPLASH_SCREEN;ENABLE_VIDEO;ENABLE_VR;ENABLE_UNITYADS_RUNTIME;UNITY_UNITYADS_API;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
+    <DefineConstants>DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VIDEO;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
     <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -37,7 +37,7 @@
     <IntermediateOutputPath>Temp\UnityVS_obj\Release\</IntermediateOutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_ANDROID;ENABLE_SUBSTANCE;UNITY_ANDROID_API;ENABLE_EGL;ENABLE_NETWORK;ENABLE_RUNTIME_GI;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;PLATFORM_SUPPORTS_ADS_ID;UNITY_CAN_SHOW_SPLASH_SCREEN;ENABLE_VIDEO;ENABLE_VR;ENABLE_UNITYADS_RUNTIME;UNITY_UNITYADS_API;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
+    <DefineConstants>TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_5_0;UNITY_5_5;UNITY_5;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VIDEO;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE</DefineConstants>
     <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
@@ -126,6 +126,7 @@
     <Compile Include="Assets\Script\Tool\Anim\TweenGra.cs" />
     <Compile Include="Assets\Script\Tool\Anim\TweenRect.cs" />
     <Compile Include="Assets\Script\Tool\Anim\TweenScale.cs" />
+    <Compile Include="Assets\Script\Tool\Anim\TweenSr.cs" />
     <Compile Include="Assets\Script\Tool\Anim\TweenVec.cs" />
     <Compile Include="Assets\Script\Tool\Auxiliary.cs" />
     <Compile Include="Assets\Script\Tool\Bundle.cs" />

+ 13 - 16
MyLovelyGarden.sln

@@ -1,9 +1,9 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2008
-
-Project("{8A8BB0A8-D809-F2DF-89D6-F26151FFF558}") = "MyLovelyGarden", "Assembly-CSharp.csproj", "{21BB93BC-2239-D8F5-1219-201F8DCBAF49}"
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2015
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyLovelyGarden", "MyLovelyGarden.csproj", "{9F3A3259-D53B-F6C8-8878-C5B99621035A}"
 EndProject
-Project("{8A8BB0A8-D809-F2DF-89D6-F26151FFF558}") = "MyLovelyGarden", "Assembly-CSharp-Editor.csproj", "{A08052E5-32CE-91C0-FF56-C60C901D6BEF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyLovelyGarden.Editor", "MyLovelyGarden.Editor.csproj", "{B575449E-FD9A-1672-368B-EC1E1252F6E4}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,19 +11,16 @@ Global
 		Release|Any CPU = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{21BB93BC-2239-D8F5-1219-201F8DCBAF49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{21BB93BC-2239-D8F5-1219-201F8DCBAF49}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{21BB93BC-2239-D8F5-1219-201F8DCBAF49}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{21BB93BC-2239-D8F5-1219-201F8DCBAF49}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A08052E5-32CE-91C0-FF56-C60C901D6BEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A08052E5-32CE-91C0-FF56-C60C901D6BEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A08052E5-32CE-91C0-FF56-C60C901D6BEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A08052E5-32CE-91C0-FF56-C60C901D6BEF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9F3A3259-D53B-F6C8-8878-C5B99621035A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9F3A3259-D53B-F6C8-8878-C5B99621035A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9F3A3259-D53B-F6C8-8878-C5B99621035A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9F3A3259-D53B-F6C8-8878-C5B99621035A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B575449E-FD9A-1672-368B-EC1E1252F6E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B575449E-FD9A-1672-368B-EC1E1252F6E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B575449E-FD9A-1672-368B-EC1E1252F6E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B575449E-FD9A-1672-368B-EC1E1252F6E4}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
-	GlobalSection(MonoDevelopProperties) = preSolution
-		StartupItem = Assembly-CSharp.csproj
-	EndGlobalSection
 EndGlobal

+ 1 - 3
MyLovelyGarden.txt

@@ -1,6 +1,4 @@
-能显示多个图片 图片能出现在任意位置
-
-TextPlus更具Alignment设置位置
+美术文档
 
 
 字体

BIN
ProjectSettings/GraphicsSettings.asset