{"id":5690,"date":"2024-06-05T18:05:12","date_gmt":"2024-06-05T10:05:12","guid":{"rendered":"http:\/\/blog.coolcoding.cn\/?p=5690"},"modified":"2024-06-05T18:12:17","modified_gmt":"2024-06-05T10:12:17","slug":"%e7%be%8e%e6%9c%af%e5%b7%a5%e5%85%b7%ef%bc%9a%e6%88%aa%e5%8d%8a%e9%80%8f%e6%98%8eui","status":"publish","type":"post","link":"https:\/\/blog.coolcoding.cn\/?p=5690","title":{"rendered":"\u7f8e\u672f\u5de5\u5177\uff1a\u622a\u534a\u900f\u660eUI"},"content":{"rendered":"\n<p>\u4e00\u822c\u6444\u50cf\u673a\u90fd\u4f1a\u5e26\u6e05\u9664\u989c\u8272\uff0c\u622a\u56fe\u51fa\u6765\u7684\u56fe\u662f\u6df7\u5408\u4e4b\u540e\u7684\u3002<\/p>\n\n\n\n<p>\u7f8e\u672f\u5e0c\u671b\uff0c\u67d0\u4e9bUI\u53bb\u6389\u5e95\u56fe\u540e\uff0c\u622a\u56fe\u53ef\u4ee5\u4fdd\u6301\u900f\u660e\uff1b<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<\/div><\/div>\n\n\n\n<p><strong>\u539f\u7406\u5c31\u662f\u5148\u7528\u5168\u767d\u7684\u989c\u8272\u505a\u5e95\uff0c\u6e32\u67d3\u540e\u6293\u4e00\u5c4f<\/strong><\/p>\n\n\n\n<p><strong>\u518d\u7528\u5168\u9ed1\u7684\u989c\u8272\u505a\u5e95\uff0c\u6e32\u67d3\u540e\u6293\u4e00\u5c4f<\/strong><\/p>\n\n\n\n<p><strong>\u518d\u901a\u8fc72\u5f20\u56fe\u63d2\u503c\u83b7\u5f97Alpha\u503c<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u4ee5\u4e0b\u4e3a\u4ee3\u7801<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#if UNITY_EDITOR\n\nusing UnityEngine;\nusing UnityEditor;\nusing System.Collections;\nusing System;\nusing System.IO;\n\npublic class CaptureTransparentUI: MonoBehaviour\n{\n    &#91;MenuItem(\"Tools\/CaptureTransparentUI\")]\n    public static void Capture()\n    {\n        var baseCameraObj = GameObject.Find(\"\u3010\u4e3b\u6444\u50cf\u673a\u7684\u8def\u5f84\u3011\");\n        if (baseCameraObj != null)\n        {\n            baseCameraObj.AddComponent&lt;CaptureTransparentUI&gt;();\n        }\n    }\n\n    void Start()\n    {\n        var time = DateTime.Now.ToString(\"yyyy-MM-dd HH.mm.ss\");\n        StartCoroutine(CaptureTask($\"Assets\/{time}.png\"));\n    }\n\n    IEnumerator CaptureTask(string outputFilename)\n    {\n        var camera = GetComponent&lt;Camera&gt;();\n        if (camera == null)\n        {\n            yield break;\n        }\n\n        const string whiteFilename = \"white.png\";\n        const string blackFilename = \"black.png\";\n\n        yield return new WaitForEndOfFrame();\n        camera.backgroundColor = Color.white;\n        yield return new WaitForEndOfFrame();\n        yield return new WaitForEndOfFrame();\n        ScreenCapture.CaptureScreenshot(whiteFilename);\n        yield return new WaitForEndOfFrame();\n        yield return new WaitForEndOfFrame();\n        camera.backgroundColor = Color.clear;\n        yield return new WaitForEndOfFrame();\n        yield return new WaitForEndOfFrame();\n        ScreenCapture.CaptureScreenshot(blackFilename);\n        yield return new WaitForEndOfFrame();\n        yield return new WaitForEndOfFrame();\n\n        var textureBlack = new Texture2D(2, 2);\n        textureBlack.LoadImage(System.IO.File.ReadAllBytes(blackFilename));\n\n        var textureWhite = new Texture2D(2, 2);\n        textureWhite.LoadImage(System.IO.File.ReadAllBytes(whiteFilename));\n\n        var textureTransparentBackground = new Texture2D(textureBlack.width, textureBlack.height, TextureFormat.ARGB32, false);\n\n\n        for (int y = 0; y &lt; textureBlack.height; ++y)\n        {\n            for (int x = 0; x &lt; textureBlack.width; ++x)\n            {\n                var blackPixel = textureBlack.GetPixel(x, y);\n                var whitePixel = textureWhite.GetPixel(x, y);\n                textureTransparentBackground.SetPixel(x, y, LerpColor(whitePixel, blackPixel));\n            }\n        }\n\n        var pngShot = textureTransparentBackground.EncodeToPNG();\n        System.IO.File.WriteAllBytes(outputFilename, pngShot);\n        System.IO.File.Delete(whiteFilename);\n        System.IO.File.Delete(blackFilename);\n    }\n\n    static Color LerpColor(Color whitePixel, Color blackPixel)\n    {\n        float alpha = 1 - (whitePixel.r - blackPixel.r);\n        if (alpha == 0)\n        {\n            return new Color(0,0,0,alpha);\n        }\n        else\n        {\n            var color = blackPixel \/ alpha;\n            color.a = alpha;\n            return color;\n        }\n    }\n}\n\n#endif\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u822c\u6444\u50cf\u673a\u90fd\u4f1a\u5e26\u6e05\u9664\u989c\u8272\uff0c\u622a\u56fe\u51fa\u6765\u7684\u56fe\u662f\u6df7\u5408\u4e4b\u540e\u7684\u3002 \u7f8e\u672f\u5e0c\u671b\uff0c\u67d0\u4e9bUI\u53bb\u6389\u5e95\u56fe\u540e\uff0c\u622a\u56fe\u53ef\u4ee5\u4fdd\u6301\u900f\u660e\uff1b \u539f\u7406\u5c31 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/5690"}],"collection":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5690"}],"version-history":[{"count":8,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/5690\/revisions"}],"predecessor-version":[{"id":5699,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/5690\/revisions\/5699"}],"wp:attachment":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}