{"id":1546,"date":"2017-12-04T10:48:33","date_gmt":"2017-12-04T02:48:33","guid":{"rendered":"http:\/\/39.100.100.179\/?p=1546"},"modified":"2017-12-05T11:26:25","modified_gmt":"2017-12-05T03:26:25","slug":"unity%e4%bd%bf%e7%94%a8dotween%e5%ae%9e%e7%8e%b0%e7%85%a7%e7%89%87%e5%a2%99%e6%95%88%e6%9e%9c","status":"publish","type":"post","link":"http:\/\/www.u3d8.com\/?p=1546","title":{"rendered":"Unity\u4f7f\u7528DoTween\u5b9e\u73b0\u7167\u7247\u5899\u6548\u679c"},"content":{"rendered":"<p>\u524d\u51e0\u5929\u5e2e\u4e00\u4e2a\u5b66\u751f\u5b9e\u73b0\u7684\u7167\u7247\u5899\u7684\u6548\u679c\uff0c\u5206\u4eab\u7ed9\u5927\u5bb6~~<\/p>\n<p>\u6548\u679c\uff1a<\/p>\n<p><a href=\"http:\/\/www.u3d8.com\/wp-content\/uploads\/2017\/12\/test.gif\" data-lightbox=\"image_lg\"><img title=\"Unity\u4f7f\u7528DoTween\u5b9e\u73b0\u7167\u7247\u5899\u6548\u679c - \u7b2c1\u5f20  | u3d8\u6280\u672f\u5206\u4eab\" alt=\"Unity\u4f7f\u7528DoTween\u5b9e\u73b0\u7167\u7247\u5899\u6548\u679c - \u7b2c1\u5f20  | u3d8\u6280\u672f\u5206\u4eab\"  loading=\"lazy\" class=\"aligncenter size-full wp-image-1552\"  data-src=\"http:\/\/www.u3d8.com\/wp-content\/uploads\/2017\/12\/test.gif\" width=\"654\" height=\"390\" \/><\/a><\/p>\n<p>\u811a\u672c\uff1a<\/p>\n<pre class=\"lang:c# decode:true \">using DG.Tweening;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing UnityEngine;\r\nusing UnityEngine.EventSystems;\r\n\r\npublic class MyTest : MonoBehaviour {\r\n\r\n    public RectTransform prefab;\r\n\r\n    int row = 10;       \/\/ \u884c\r\n    int column = 20;        \/\/ \u5217\r\n\r\n    int startXPos = 60;\r\n    int startZPos = -100;\r\n\r\n    float distanceRandomMinX = 55;\r\n    float distanceRandomMaxX = 65;\r\n\r\n    float distanceRandomMinY = 60;\r\n    float distanceRandomMaxY = 60;\r\n\r\n    float initMoveDistance = 1200;\r\n\r\n    float enlargeSize = 5;\r\n\r\n    float radiateSize = 220;\r\n\r\n    List&lt;List&lt;RectTransform&gt;&gt; goList;\r\n    Dictionary&lt;RectTransform, Vector2&gt; itemPosDict;\r\n    List&lt;RectTransform&gt; changedItemList;\r\n\r\n    \/\/ Use this for initialization\r\n    void Start () {\r\n\r\n        goList = new List&lt;List&lt;RectTransform&gt;&gt;();\r\n        itemPosDict = new Dictionary&lt;RectTransform, Vector2&gt;();\r\n        changedItemList = new List&lt;RectTransform&gt;();\r\n\r\n        CreateGos();\r\n    }\r\n\r\n\r\n    void CreateGos()\r\n    {\r\n        \/\/ \u751f\u6210\u6240\u6709\u7269\u4f53\uff0c\u5e76\u6dfb\u52a0\u5230\u5b57\u5178\r\n        for (int i = 0; i &lt; row; i++)\r\n        {\r\n            List&lt;RectTransform&gt; gos = new List&lt;RectTransform&gt;();\r\n            goList.Add(gos);\r\n            float lastPosX = 0;\r\n            for (int j = 0; j &lt; column; j++)\r\n            {\r\n                RectTransform item = (Instantiate(prefab.gameObject) as GameObject).GetComponent&lt;RectTransform&gt;();\r\n                item.name = i + \" \" + j;\r\n                item.transform.SetParent(transform);\r\n                Vector2 startPos = new Vector3(Random.Range(distanceRandomMinX, distanceRandomMaxX) + lastPosX, startZPos - i * Random.Range(distanceRandomMinY, distanceRandomMaxY));\r\n                item.anchoredPosition = startPos;\r\n                Vector2 endPos = new Vector3(startPos.x - initMoveDistance, startZPos - i * Random.Range(distanceRandomMinY, distanceRandomMaxY));\r\n                Tweener tweener = item.DOAnchorPosX(endPos.x, Random.Range(1.8f, 2f));  \/\/ \u7f13\u52a8\u5230\u76ee\u6807\u4f4d\u7f6e\r\n                tweener.SetDelay(j * 0.1f + (row - i) * 0.1f);      \/\/ \u5ef6\u65f6\r\n                tweener.SetEase(Ease.InSine);           \/\/ \u7f13\u52a8\u6548\u679c\r\n                item.gameObject.SetActive(true);\r\n                gos.Add(item);\r\n                itemPosDict.Add(item, endPos);\r\n\r\n                lastPosX = item.anchoredPosition.x;\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    public void OnMousePointEnter(RectTransform item)\r\n    {\r\n        \/\/ \u7f13\u52a8\u6539\u53d8\u4e2d\u5fc3\u7269\u4f53\u5c3a\u5bf8\r\n        item.DOScale(enlargeSize, 0.5f);\r\n\r\n        Vector2 pos = itemPosDict[item];\r\n\r\n        changedItemList = new List&lt;RectTransform&gt;();\r\n\r\n        \/\/ \u6dfb\u52a0\u6269\u6563\u7269\u4f53\u5230\u96c6\u5408\r\n        foreach (KeyValuePair&lt;RectTransform, Vector2&gt; i in itemPosDict)\r\n        {\r\n            if(Vector2.Distance(i.Value, pos) &lt; radiateSize)\r\n            {\r\n                changedItemList.Add(i.Key);\r\n            }\r\n        }\r\n\r\n        \/\/ \u7f13\u52a8\u6765\u89e3\u51b3\u6269\u6563\u7269\u4f53\u7684\u52a8\u753b\r\n        for (int i = 0; i &lt; changedItemList.Count; i++)\r\n        {\r\n            Vector2 targetPos = itemPosDict[item] + (itemPosDict[changedItemList[i]] - itemPosDict[item]).normalized * radiateSize;\r\n            changedItemList[i].DOAnchorPos(targetPos, 0.8f);\r\n        }\r\n    }\r\n\r\n    public void OnMousePointExit(RectTransform go)\r\n    {\r\n        \/\/ \u7f13\u52a8\u6062\u590d\u4e2d\u5fc3\u7269\u4f53\u5c3a\u5bf8\r\n        go.DOScale(1, 1);\r\n        \/\/ \u7f13\u52a8\u5c06\u6269\u6563\u7269\u4f53\u6062\u590d\u5230\u521d\u59cb\u4f4d\u7f6e\r\n        for (int i = 0; i &lt; changedItemList.Count; i++)\r\n        {\r\n            changedItemList[i].DOAnchorPos(itemPosDict[changedItemList[i]], 0.8f);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>GitHub\u4e0b\u8f7d\u5730\u5740\uff1a<\/p>\n<p><a href=\"https:\/\/github.com\/654306663\/PhotoWall\" target=\"_blank\">https:\/\/github.com\/654306663\/PhotoWall<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u51e0\u5929\u5e2e\u4e00\u4e2a\u5b66\u751f\u5b9e\u73b0\u7684\u7167\u7247\u5899\u7684\u6548\u679c\uff0c\u5206\u4eab\u7ed9\u5927\u5bb6~~ \u6548\u679c\uff1a \u811a\u672c\uff1a using  &hellip; <a href=\"http:\/\/www.u3d8.com\/?p=1546\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23],"tags":[336,335],"_links":{"self":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts\/1546"}],"collection":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1546"}],"version-history":[{"count":2,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts\/1546\/revisions"}],"predecessor-version":[{"id":1553,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts\/1546\/revisions\/1553"}],"wp:attachment":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1546"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}