{
  "version": "https://jsonfeed.org/version/1", 
  "title": "Unreal Development Kit", 
  "description": "UE 4 \u73b0\u5728\u5df2\u7ecf\u514d\u8d39\uff0c\u975e\u5e38\u5f3a\u5927\u7684\u8de8\u5e73\u53f0\u6e38\u620f\u5f00\u53d1\u5de5\u5177\u3002", 
  "home_page_url": "https://www.v2ex.com/go/udk", 
  "feed_url": "https://www.v2ex.com/feed/udk.json", 
  "icon": "https://cdn.v2ex.com/navatar/d07e/70ef/458_large.png?m=1426100856", 
  "favicon": "https://cdn.v2ex.com/navatar/d07e/70ef/458_normal.png?m=1426100856", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/iceAD", 
        "name": "iceAD", 
        "avatar": "https://cdn.v2ex.com/gravatar/12db68bd4cabfb00e840b25c3a3581e0?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1164390", 
      "title": "NoesisGUI \u9082\u9005 AI\uff1a\u57fa\u4e8e TypeScript \u7684 MVVM \u67b6\u6784\u4e0e\u81ea\u52a8\u5316\u4ee3\u7801\u751f\u6210", 
      "id": "https://www.v2ex.com/t/1164390", 
      "date_published": "2025-10-11T02:50:15+00:00", 
      "content_html": "<hr/>\n<h3>NoesisDemo - TypeScript + AI \u8d4b\u80fd\u7684 MVVM \u5f00\u53d1\u65b9\u6848</h3>\n<p>\ud83d\udd17 <strong>\u9879\u76ee\u4ed3\u5e93</strong>: <a href=\"https://github.com/No-needto-recall/NoesisDemo\" rel=\"nofollow\">https://github.com/No-needto-recall/NoesisDemo</a></p>\n<hr/>\n<h3>\ud83c\udfaf \u8fd9\u4e2a\u9879\u76ee\u662f\u505a\u4ec0\u4e48\u7684\uff1f</h3>\n<p>\u8fd9\u662f\u4e00\u4e2a Unreal Engine 5.4 \u7684\u793a\u4f8b\u9879\u76ee\uff0c\u65e8\u5728\u6f14\u793a\uff1a</p>\n<ul>\n<li><strong>\u7528 TypeScript \u7f16\u5199 NoesisGUI \u7684 ViewModel</strong> - \u5229\u7528 PuerTS \u7684 <code>uclass_extends</code> \u7279\u6027\uff0c\u5f7b\u5e95\u544a\u522b\u84dd\u56fe\u5f00\u53d1\u3002</li>\n<li><strong>\u5b8c\u7f8e\u590d\u523b\u5b98\u65b9 Buttons \u548c QuestLog \u793a\u4f8b</strong> - \u8bc1\u660e\u8be5\u65b9\u6848\u7684\u5b8c\u6574\u6027\u548c\u53ef\u884c\u6027\u3002</li>\n<li><strong>\u5b8c\u6574\u7684 AI \u8f85\u52a9\u5f00\u53d1\u652f\u6301</strong> (\u4f8b\u5982 Claude Code) - \u5b9e\u73b0\u8fd1\u4e4e\u81ea\u52a8\u5316\u7684 UI \u4ee3\u7801\u751f\u6210\u3002</li>\n<li><strong>\u7eaf\u4ee3\u7801\u5de5\u4f5c\u6d41</strong> - XAML + TypeScript \uff0c\u5bf9\u7248\u672c\u63a7\u5236\u6781\u5176\u53cb\u597d\uff0c\u518d\u65e0\u84dd\u56fe\u5408\u5e76\u51b2\u7a81\u3002</li>\n</ul>\n<p><strong>\u6838\u5fc3\u7406\u5ff5</strong>\uff1aXAML \u548c ViewModel \u90fd\u662f\u4ee3\u7801 \u2192 AI \u5b8c\u5168\u7406\u89e3 \u2192 \u81ea\u52a8\u751f\u6210\u548c\u4fee\u6539 \u2192 <strong>\u5f00\u53d1\u6548\u7387</strong> dramatically improved</p>\n<hr/>\n<h3>\ud83d\udcd1 \u76ee\u5f55</h3>\n<ul>\n<li><a href=\"https://www.google.com/search?q=%23-%E6%A0%B8%E5%BF%83%E7%89%B9%E6%80%A7\" rel=\"nofollow\">\u6838\u5fc3\u7279\u6027</a></li>\n<li><a href=\"https://www.google.com/search?q=%23-ai-%E8%BE%85%E5%8A%A9%E5%BC%80%E5%8F%91---%E8%BF%91%E4%B9%8E%E8%87%AA%E5%8A%A8%E5%8C%96%E7%9A%84-ui-%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90\" rel=\"nofollow\">AI \u8f85\u52a9\u5f00\u53d1 - \u8fd1\u4e4e\u81ea\u52a8\u5316\u7684 UI \u4ee3\u7801\u751f\u6210</a></li>\n<li><a href=\"https://www.google.com/search?q=%23-%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84%E4%BA%AE%E7%82%B9\" rel=\"nofollow\">\u6280\u672f\u67b6\u6784\u4eae\u70b9</a></li>\n<li><a href=\"https://www.google.com/search?q=%23-%E5%AE%8C%E7%BE%8E%E5%A4%8D%E5%88%BB%E5%AE%98%E6%96%B9%E7%A4%BA%E4%BE%8B\" rel=\"nofollow\">\u5b98\u65b9\u793a\u4f8b\u590d\u523b</a></li>\n<li><a href=\"https://www.google.com/search?q=%23-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B\" rel=\"nofollow\">\u5feb\u901f\u5f00\u59cb</a></li>\n<li><a href=\"https://www.google.com/search?q=%23-%E7%9B%B8%E5%85%B3%E9%93%BE%E6%8E%A5\" rel=\"nofollow\">\u76f8\u5173\u94fe\u63a5</a></li>\n</ul>\n<hr/>\n<h3>\u2728 \u6838\u5fc3\u7279\u6027</h3>\n<p>\u2705 <strong>\u5b8c\u7f8e\u590d\u523b\u5b98\u65b9\u793a\u4f8b</strong>\uff1a\u6210\u529f\u4f7f\u7528 TypeScript \u590d\u523b\u4e86 NoesisGUI \u5b98\u65b9\u7684 Buttons \u548c QuestLog \u793a\u4f8b\u3002</p>\n<p>\ud83d\ude80 <strong>TypeScript \u4ee3\u7801\u5316 ViewModel</strong>\uff1a\u4f7f\u7528 PuerTS \u7684 <code>uclass_extends</code> \u76f4\u63a5\u7ee7\u627f UE \u7c7b\u5e76\u81ea\u52a8\u751f\u6210\u84dd\u56fe\u3002</p>\n<p>\ud83d\udd27 <strong>\u52a8\u6001 DataContext \u8bbe\u7f6e</strong>\uff1a\u81ea\u5b9a\u4e49 <code>UNoesisViewModeInstance</code>\uff0c\u8c03\u6574 DataContext \u7684\u8d4b\u503c\u65f6\u673a\u3002</p>\n<p>\ud83e\udd16 <strong>AI \u53cb\u597d</strong>\uff1aXAML \u548c ViewModel \u5747\u4e3a\u4ee3\u7801\uff0c\u6613\u4e8e AI \u7406\u89e3\u548c\u751f\u6210\u3002</p>\n<p>\ud83d\udce6 <strong>\u7248\u672c\u63a7\u5236\u53cb\u597d</strong>\uff1a\u5b8c\u5168\u57fa\u4e8e\u4ee3\u7801\uff0c\u544a\u522b\u84dd\u56fe\u5408\u5e76\u7684\u5669\u68a6\u3002</p>\n<p>\u26a1 <strong>\u5c5e\u6027\u81ea\u52a8\u901a\u77e5</strong>\uff1a<code>NoesisProxy</code> \u81ea\u52a8\u5904\u7406 <code>PropertyChanged</code>\uff0c\u5e76\u539f\u751f\u652f\u6301 <code>TArray</code> \u548c <code>TMap</code>\u3002</p>\n<hr/>\n<h3>\ud83e\udd16 AI \u8f85\u52a9\u5f00\u53d1 - \u8fd1\u4e4e\u81ea\u52a8\u5316\u7684 UI \u4ee3\u7801\u751f\u6210</h3>\n<h4>\u4e3a\u4ec0\u4e48\u8fd9\u5957\u65b9\u6848\u5bf9 AI \u53cb\u597d\uff1f</h4>\n<p>\u672c\u65b9\u6848\u91c7\u7528\u5b8c\u5168\u4ee3\u7801\u5316\u7684\u5de5\u4f5c\u6d41\uff1a</p>\n<p>\u2705 <strong>XAML \u6587\u4ef6\u662f\u7eaf\u6587\u672c\u683c\u5f0f</strong> - AI \u53ef\u4ee5\u8f7b\u677e\u7406\u89e3\u548c\u751f\u6210\u3002</p>\n<p>\u2705 <strong>ViewModel \u4f7f\u7528 TypeScript \u7f16\u5199</strong> - \u8fd9\u662f AI \u7684\u5f3a\u9879\u3002</p>\n<p>\u2705 <strong>\u6570\u636e\u7ed1\u5b9a\u903b\u8f91\u6e05\u6670\u53ef\u8bfb</strong> - AI \u80fd\u591f\u8fdb\u884c\u63a8\u7406\u3002</p>\n<p>\u8fd9\u4f7f\u5f97\u672c\u9879\u76ee\u4e0e AI \u8f85\u52a9\u5f00\u53d1\u5de5\u5177\uff08\u5982 Claude Code, GitHub Copilot, Cursor \u7b49\uff09\u5b8c\u5168\u517c\u5bb9\u3002</p>\n<h4>AI \u80fd\u505a\u4ec0\u4e48\uff1f</h4>\n<p><strong>\u81ea\u52a8\u751f\u6210 ViewModel \u4ee3\u7801</strong></p>\n<p>\u53ea\u9700\u63cf\u8ff0\u4f60\u7684\u9700\u6c42\uff0cAI \u5c31\u80fd\u751f\u6210\u5b8c\u6574\u7684 ViewModel\uff1a</p>\n<pre><code class=\"language-TypeScript\">// \u8f93\u5165\uff1a\"\u521b\u5efa\u4e00\u4e2a\u8bbe\u7f6e\u754c\u9762\uff0c\u5305\u542b\u97f3\u91cf\u548c\u753b\u8d28\u9009\u9879\"\n// AI \u81ea\u52a8\u751f\u6210\uff1a\nclass TS_SettingsViewMode extends UE.Object {\n    @uproperty(uproperty.EditAnywhere, uproperty.BlueprintReadWrite)\n    Volume: number = 80;\n\n    @uproperty(uproperty.EditAnywhere, uproperty.BlueprintReadWrite)\n    Quality: string = \"High\";\n\n    @ufunction(ufunction.BlueprintCallable)\n    ApplySettings(): void {\n        console.log(`Applying: Volume=${this.Volume}, Quality=${this.Quality}`);\n    }\n}\n</code></pre>\n<p><strong>\u81ea\u52a8\u4fee\u6539\u548c\u91cd\u6784\u4ee3\u7801</strong></p>\n<p>\u544a\u8bc9 AI \u201c\u589e\u52a0\u4e00\u4e2a\u97f3\u6548\u5f00\u5173\u201d \u2192 \u81ea\u52a8\u4fee\u6539 TypeScript \u548c XAML \u3002\nAI \u80fd\u7406\u89e3\u6570\u636e\u7ed1\u5b9a\u903b\u8f91\uff0c\u81ea\u52a8\u6dfb\u52a0\u76f8\u5e94\u7684\u5c5e\u6027\u548c\u547d\u4ee4\u3002\nAI \u8fd8\u80fd\u81ea\u52a8\u5904\u7406\u590d\u6742\u7684\u96c6\u5408\u7ed1\u5b9a (<code>TArray</code>, <code>TMap</code>)\u3002</p>\n<p><strong>\u5feb\u901f\u751f\u6210\u5b8c\u6574\u754c\u9762</strong></p>\n<p>\u201c\u521b\u5efa\u4e00\u4e2a\u5305\u542b\u7528\u6237\u5217\u8868\u7684\u754c\u9762\u201d \u2192 AI \u81ea\u52a8\u751f\u6210 XAML + ViewModel \u3002\n\u201c\u589e\u52a0\u641c\u7d22\u548c\u7b5b\u9009\u529f\u80fd\u201d \u2192 AI \u81ea\u52a8\u8865\u5168\u76f8\u5173\u4ee3\u7801\u3002\n\u201c\u5b9e\u73b0\u62d6\u62fd\u6392\u5e8f\u201d \u2192 AI \u751f\u6210\u5b8c\u6574\u7684\u4e8b\u4ef6\u5904\u7406\u903b\u8f91\u3002</p>\n<p>\u4f7f\u7528 Claude Code \u7b49 AI \u5de5\u5177\uff0c\u53ea\u9700\u63cf\u8ff0 UI \u9700\u6c42\u548c\u4ea4\u4e92\u903b\u8f91\uff0cAI \u5c31\u80fd\u81ea\u52a8\u751f\u6210 XAML \u548c ViewModel \u4ee3\u7801\u3002\n\u5f00\u53d1\u8005\u53ea\u9700\u5ba1\u67e5\u548c\u5fae\u8c03\uff0c\u6781\u5927\u5730\u63d0\u5347\u4e86\u5f00\u53d1\u6548\u7387\uff0c\u5b9e\u73b0\u4e86\u8fd1\u4e4e\u81ea\u52a8\u5316\u7684 UI \u4ee3\u7801\u5f00\u53d1\u4f53\u9a8c\u3002</p>\n<blockquote>\n<p>\"\u518d\u4e5f\u4e0d\u7528\u624b\u52a8\u62c9\u84dd\u56fe\u8fde\u7ebf\u4e86\u2014\u2014AI \u76f4\u63a5\u751f\u6210\u4ee3\u7801\uff01\" - \u67d0\u5f00\u53d1\u8005</p>\n</blockquote>\n<hr/>\n<h3>\ud83c\udfd7\ufe0f \u6280\u672f\u67b6\u6784\u4eae\u70b9</h3>\n<h4>PuerTS <code>uclass_extends</code> - \u81ea\u52a8\u751f\u6210\u84dd\u56fe\u7c7b</h4>\n<p>\u901a\u8fc7 TypeScript \u88c5\u9970\u5668\u5b9a\u4e49\u5c5e\u6027\u548c\u65b9\u6cd5\uff0cPuerTS \u4f1a\u81ea\u52a8\u751f\u6210\u5bf9\u5e94\u7684\u84dd\u56fe\u7c7b\uff1a</p>\n<pre><code class=\"language-typescript\">class TS_ButtonsViewMode extends UE.Object {\n    static Path(): string {\n        return \"/Game/BluePrints/TypeScript/ViewMode/Buttons/TS_ButtonsViewMode_C\";\n    }\n\n    @uproperty(uproperty.EditAnywhere, uproperty.BlueprintReadWrite)\n    TestValue: string = \"Hello NoesisGUI\";\n\n    @ufunction(ufunction.BlueprintCallable)\n    StartCommand(): void {\n        console.log(\"Button clicked!\");\n    }\n}\n</code></pre>\n<h4><code>UNoesisViewModeInstance</code> - \u89e3\u51b3 DataContext \u9650\u5236</h4>\n<p>\u81ea\u5b9a\u4e49\u7684 <code>UNoesisInstance</code> \u5b50\u7c7b\uff0c\u5728 <code>XamlLoaded</code> \u56de\u8c03\u4e2d\u81ea\u52a8\u8bbe\u7f6e <code>DataContext</code>\uff0c\u89e3\u51b3\u4e86\u5b98\u65b9\u7c7b\u4e0d\u652f\u6301\u52a8\u6001\u8bbe\u7f6e\u7684\u95ee\u9898\u3002</p>\n<h4><code>NoesisProxy</code> - \u5c5e\u6027\u81ea\u52a8\u901a\u77e5</h4>\n<p>\u5229\u7528 JavaScript Proxy API \u81ea\u52a8\u62e6\u622a\u5c5e\u6027\u4fee\u6539\uff0c\u5e76\u89e6\u53d1 NoesisGUI \u7684\u66f4\u65b0\uff1a</p>\n<pre><code class=\"language-typescript\">const proxy = createNoesisProxy&lt;TS_ButtonsViewMode&gt;(viewMode);\n\n// \u4efb\u4f55\u5c5e\u6027\u4fee\u6539\u90fd\u4f1a\u81ea\u52a8\u901a\u77e5 NoesisGUI\nproxy.TestValue = \"New Value\"; \n\n// \u652f\u6301 TArray \u81ea\u52a8\u901a\u77e5\nproxy.items.Add(newItem);       // \u81ea\u52a8\u8c03\u7528 NotifyArrayPostAdd\nproxy.items.RemoveAt(0);        // \u81ea\u52a8\u8c03\u7528 NotifyArrayPreRemove + PostRemove\n\n// \u652f\u6301 TMap \u81ea\u52a8\u901a\u77e5\nproxy.map.Add(\"key\", value);    // \u81ea\u52a8\u8c03\u7528 NotifyMapPostAdd\n</code></pre>\n<p><strong>\u6570\u636e\u7ed1\u5b9a\u6d41\u7a0b\uff1a</strong></p>\n<pre><code>TypeScript \u7c7b\u5b9a\u4e49 (@uproperty, @ufunction)\n\u2193\nPuerTS \u751f\u6210\u84dd\u56fe\u7c7b\n\u2193\nTypeScript \u521b\u5efa\u5b9e\u4f8b (UE.NewObject)\n\u2193\n\u7ed1\u5b9a\u5230 UNoesisViewModeInstance (PendingDataContext)\n\u2193\nXAML \u52a0\u8f7d\u5b8c\u6210 (XamlLoaded \u56de\u8c03)\n\u2193\n\u81ea\u52a8\u8bbe\u7f6e DataContext\n\u2193\n\u6570\u636e\u7ed1\u5b9a\u751f\u6548 (XAML Binding \u2192 ViewModel \u5c5e\u6027)\n\u2193\n\u5c5e\u6027\u66f4\u65b0 (NoesisProxy \u2192 NotifyPropertyChanged \u2192 UI \u5237\u65b0)\n</code></pre>\n<hr/>\n<h3>\ud83c\udfa8 \u5b8c\u7f8e\u590d\u523b\u5b98\u65b9\u793a\u4f8b</h3>\n<h4>Buttons \u793a\u4f8b</h4>\n<p>\u6f14\u793a\u4e86\u57fa\u7840\u7684 MVVM \u6570\u636e\u7ed1\u5b9a\uff1a</p>\n<ul>\n<li>\u57fa\u672c\u5c5e\u6027\u7ed1\u5b9a</li>\n<li>\u547d\u4ee4\u7ed1\u5b9a</li>\n<li>XAML \u52a8\u753b\u4e0e\u6837\u5f0f</li>\n</ul>\n<h4>QuestLog \u793a\u4f8b</h4>\n<p>\u6f14\u793a\u4e86\u590d\u6742\u7684\u6570\u636e\u7ed1\u5b9a\uff1a</p>\n<ul>\n<li><code>TArray</code> \u96c6\u5408\u7ed1\u5b9a - \u4efb\u52a1\u5217\u8868</li>\n<li>\u590d\u6742\u6570\u636e\u5bf9\u8c61 - Quest \u7c7b\uff08\u6807\u9898\u3001\u56fe\u7247\u3001\u96be\u5ea6\u3001\u63cf\u8ff0\u7b49\uff09</li>\n<li>\u52a8\u6001\u6570\u636e\u64cd\u4f5c - <code>AddQuest</code> \u65b9\u6cd5\uff0c\u81ea\u52a8\u89e6\u53d1 UI \u66f4\u65b0</li>\n</ul>\n<pre><code class=\"language-typescript\">// QuestLog ViewModel \u793a\u4f8b\nclass TS_QuestLogViewMode extends UE.Object {\n    @uproperty(uproperty.EditAnywhere, uproperty.BlueprintReadWrite)\n    Quests: UE.TArray&lt;TS_Quest&gt;;\n\n    @ufunction(ufunction.BlueprintCallable)\n    AddQuest(Title: string, Image: UE.Texture2D, ...): TS_Quest {\n        const Quest = UE.NewObject(TS_Quest);\n        Quest.Initialize(Title, Image, ...);\n        \n        // \u4f7f\u7528 Proxy \u81ea\u52a8\u89e6\u53d1 TArray \u66f4\u65b0\u901a\u77e5\n        let Proxy = createNoesisProxy&lt;TS_QuestLogViewMode&gt;(this);\n        Proxy.Quests.Add(Quest);\n        \n        return Quest;\n    }\n}\n</code></pre>\n<hr/>\n<h3>\ud83d\ude80 \u5feb\u901f\u5f00\u59cb</h3>\n<p><strong>\u73af\u5883\u8981\u6c42\uff1a</strong></p>\n<ul>\n<li>Unreal Engine 5.4</li>\n<li>NoesisGUI \u63d2\u4ef6 3.2+</li>\n<li>PuerTS \u63d2\u4ef6 (\u6700\u65b0\u7248)</li>\n</ul>\n<p><strong>\u83b7\u53d6\u9879\u76ee\uff1a</strong></p>\n<pre><code class=\"language-bash\">git clone https://github.com/No-needto-recall/NoesisDemo.git\n</code></pre>\n<p><strong>\u26a0\ufe0f \u91cd\u8981\u63d0\u793a\uff1a</strong></p>\n<ul>\n<li>\u2705 <strong>Windows \u7528\u6237</strong>\uff1a\u514b\u9686\u540e\uff0c\u76f4\u63a5\u53cc\u51fb <code>NoesisDemo.uproject</code> \u5373\u53ef\u6253\u5f00\uff0c\u5f00\u7bb1\u5373\u7528\u3002</li>\n<li>\u26a0\ufe0f <strong>Mac/Linux \u7528\u6237</strong>\uff1a\u9700\u8981\u624b\u52a8\u7f16\u8bd1 C++ \u4ee3\u7801\u3002</li>\n</ul>\n<p>\u8be6\u7ec6\u7684\u5b89\u88c5\u6b65\u9aa4\u3001\u914d\u7f6e\u8bf4\u660e\u548c\u4f7f\u7528\u6559\u7a0b\uff0c\u8bf7\u8bbf\u95ee\u9879\u76ee\u7684 GitHub \u4ed3\u5e93\u67e5\u770b\u5b8c\u6574\u6587\u6863\u3002</p>\n<hr/>\n<h3>\ud83d\udcda \u76f8\u5173\u94fe\u63a5</h3>\n<ul>\n<li><strong>GitHub \u4ed3\u5e93</strong>: <a href=\"https://github.com/No-needto-recall/NoesisDemo\" rel=\"nofollow\">https://github.com/No-needto-recall/NoesisDemo</a></li>\n<li><strong>PuerTS UClass Extends \u6587\u6863</strong>: <a href=\"https://puerts.github.io/docs/puerts/unreal/uclass_extends/\" rel=\"nofollow\">https://puerts.github.io/docs/puerts/unreal/uclass_extends/</a></li>\n<li><strong>NoesisGUI \u5c5e\u6027\u53d8\u66f4\u901a\u77e5</strong>: <a href=\"https://www.google.com/search?q=https://www.noesisengine.com/docs/Gui.Core.PropertyChange.html\" rel=\"nofollow\">\u5b98\u65b9\u6587\u6863</a></li>\n</ul>\n<hr/>\n<h3>\ud83d\udca1 \u603b\u7ed3</h3>\n<p>\u8fd9\u4e2a\u9879\u76ee\u4e3a Unreal Engine \u4e2d\u7684 NoesisGUI \u5f00\u53d1\u63d0\u4f9b\u4e86\u4e00\u79cd\u5168\u65b0\u7684\u601d\u8def\uff1a</p>\n<p>\u2705 <strong>\u4f7f\u7528 TypeScript \u66ff\u4ee3\u84dd\u56fe\u7f16\u5199 ViewModel</strong></p>\n<p>\u2705 <strong>\u5b8c\u5168\u4ee3\u7801\u5316\uff0c\u7248\u672c\u63a7\u5236\u53cb\u597d\uff0c\u65e0\u84dd\u56fe\u5408\u5e76\u51b2\u7a81</strong></p>\n<p>\u2705 <strong>\u5168\u9762\u517c\u5bb9 AI \u8f85\u52a9\u5f00\u53d1\u5de5\u5177\uff0c\u5b9e\u73b0\u8fd1\u4e4e\u81ea\u52a8\u5316\u7684 UI \u4ee3\u7801\u751f\u6210</strong></p>\n<p>\u2705 <strong>\u590d\u523b\u5b98\u65b9\u793a\u4f8b\uff0c\u8bc1\u660e\u4e86\u65b9\u6848\u7684\u5b8c\u6574\u6027\u548c\u53ef\u884c\u6027</strong></p>\n<p>\u2705 <strong>\u81ea\u52a8\u5c5e\u6027\u901a\u77e5\uff0c\u652f\u6301\u590d\u6742\u7684 <code>TArray</code> \u548c <code>TMap</code> \u7ed1\u5b9a</strong></p>\n<h4>\u975e\u5e38\u9002\u5408\uff1a</h4>\n<ul>\n<li>\u9700\u8981\u9891\u7e41\u8fed\u4ee3 UI \u7684\u9879\u76ee</li>\n<li>\u591a\u4eba\u534f\u4f5c\u7684\u56e2\u961f\u9879\u76ee</li>\n<li>\u5e0c\u671b\u5229\u7528 AI \u8f85\u52a9\u5f00\u53d1\u7684\u5f00\u53d1\u8005</li>\n<li>\u8bd5\u56fe\u675c\u7edd\u84dd\u56fe\u5408\u5e76\u51b2\u7a81\u7684\u5f00\u53d1\u8005</li>\n</ul>\n<p>\u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u4f60\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u5b83\u4e00\u4e2a <strong>Star</strong> \u2b50\uff01\n\u6b22\u8fce\u63d0\u4ea4 PR \u6765\u590d\u523b\u66f4\u591a\u5b98\u65b9 UI \u793a\u4f8b\uff0c\u4e00\u8d77\u5b8c\u5584\u8fd9\u4e2a\u65b9\u6848\uff01 \ud83c\udf89</p>\n<p><strong>Made with \u2764\ufe0f for the NoesisGUI Community</strong></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/MrDarnell", 
        "name": "MrDarnell", 
        "avatar": "https://cdn.v2ex.com/avatar/4d57/4884/406508_large.png?m=1711699756"
      }, 
      "url": "https://www.v2ex.com/t/1072382", 
      "title": "\u60f3\u5b66\u4e60 Unreal 5 \uff0c\u6c42\u63a8\u8350\u6bd4\u8f83\u597d\u7684\u89c6\u9891\u6559\u7a0b", 
      "id": "https://www.v2ex.com/t/1072382", 
      "date_published": "2024-09-12T09:33:53+00:00", 
      "content_html": "<p>\u56e0\u4e3a\u672c\u4eba\u82f1\u8bed\u4e00\u822c\uff0c\u6240\u4ee5\u6700\u597d\u662f\u4e2d\u6587\u6559\u7a0b\uff0c\u5982\u679c\u6709 youtube \u4e0a\u7684\u82f1\u6587\u6559\u7a0b\u4e5f\u53ef\u4ee5\u63a5\u53d7\uff0c\u611f\u8c22\u5404\u4f4d\u5927\u4f6c</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/sbldehanhan", 
        "name": "sbldehanhan", 
        "avatar": "https://cdn.v2ex.com/avatar/9b55/524c/511212_large.png?m=1736302807"
      }, 
      "url": "https://www.v2ex.com/t/1068797", 
      "title": "UE5 \u9879\u76ee\u592a\u5927\uff0c\u7528\u4ec0\u4e48\u7248\u672c\u63a7\u5236\u7cfb\u7edf\uff1f", 
      "id": "https://www.v2ex.com/t/1068797", 
      "date_published": "2024-08-29T09:12:45+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/hash", 
        "name": "hash", 
        "avatar": "https://cdn.v2ex.com/avatar/97da/a09f/59524_large.png?m=1692496084"
      }, 
      "url": "https://www.v2ex.com/t/1007809", 
      "date_modified": "2024-01-12T00:18:07+00:00", 
      "content_html": "\u4e00\u4e9b\u9879\u76ee\u8981\u6c42\u6ee1\u8db3\u4fe1\u521b\u5373\u4fe1\u606f\u6280\u672f\u5e94\u7528\u521b\u65b0\u4ea7\u4e1a,<br />\u76ee\u524d\u6709\u4e00\u4e9b\u7a0b\u5e8f\u662f\u4f7f\u7528\u865a\u5e7b\u5f00\u53d1\u7684,\u60f3\u77e5\u9053\u865a\u5e7b\u7684\u7a0b\u5e8f\u8fc7\u4fe1\u521b\u7684\u53ef\u80fd\u6027(\u53ea\u662f\u6280\u672f\u8c03\u7814\u4e0d\u8003\u8651\"\u8f6f\u8fc7\"<br />\u6700\u8fd1\u7684\u4e00\u4e2a\u6d88\u606f\u662f\u6469\u5c14\u7ebf\u7a0b\u5728 DX11 \u4e0b\u6709\u4e86\u5bf9\u865a\u5e7b\u7684\u57fa\u672c\u652f\u6301,\u4f46\u662f\u4e5f\u53ea\u662f\u652f\u6301\u4e86\u90e8\u5206\u7279\u6027.<br />\u60f3\u77e5\u9053\u662f\u5426\u6709\u56fd\u4ea7\u786c\u4ef6+\u56fd\u4ea7\u64cd\u4f5c\u7cfb\u7edf(UOS \u9e92\u9e9f\u7b49\u7b49)\u6709\u7740\u65b9\u9762\u7684\u8ba1\u5212", 
      "date_published": "2024-01-11T06:38:25+00:00", 
      "title": "\u60f3\u95ee\u4e0b\u76ee\u524d\u56fd\u4ea7\u7cfb\u7edf+\u56fd\u4ea7\u663e\u5361\u5bf9\u865a\u5e7b\u7684\u652f\u6301\u600e\u4e48\u6837\u4e86,\u6216\u8005\u8bf4\u662f\u5426\u6709\u652f\u6301\u7684\u8ba1\u5212", 
      "id": "https://www.v2ex.com/t/1007809"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ilinxiao", 
        "name": "ilinxiao", 
        "avatar": "https://cdn.v2ex.com/avatar/9b2a/0842/20685_large.png?m=1697193173"
      }, 
      "url": "https://www.v2ex.com/t/975504", 
      "title": "\u5bfb unity \u6216\u8005 ue \u6280\u672f\u56e2\u961f\uff0c\u7814\u53d1\u65b0\u6b3e\u6e38\u620f", 
      "id": "https://www.v2ex.com/t/975504", 
      "date_published": "2023-09-20T04:39:20+00:00", 
      "content_html": "\u6709\u610f\u8054\u7cfb V:bHZsaW54aWFvMjAyMw=="
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/821128", 
      "title": "\u4e00\u4e2a\u65b0\u7684 UE5 Tech Demo", 
      "id": "https://www.v2ex.com/t/821128", 
      "date_published": "2021-12-09T07:21:08+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://www.unrealengine.com/en-US/wakeup\" rel=\"nofollow noopener\">https://www.unrealengine.com/en-US/wakeup</a><br /><br />\u73b0\u5728\u53ef\u4ee5\u5728 PS5 \u548c Xbox Series X/S \u4e0a\u9884\u8f7d\u30022021 \u5e74 12 \u6708 9 \u65e5\u89e3\u9501\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jtacm", 
        "name": "jtacm", 
        "avatar": "https://cdn.v2ex.com/avatar/51e5/fad8/41209_large.png?m=1773397215"
      }, 
      "url": "https://www.v2ex.com/t/799978", 
      "title": "\u6709 UE4 \u5927\u795e\u6ca1\uff0c\u60f3\u95ee\u4e2a\u95ee\u9898\u3002", 
      "id": "https://www.v2ex.com/t/799978", 
      "date_published": "2021-09-05T08:41:11+00:00", 
      "content_html": "<p>\u73b0\u5728\u6709\u8fd9\u6837\u4e00\u4e2a\u9700\u6c42\uff0c\u5728 UE4 \u4e2d\u6709\u4e00\u4e2a\u4eba\u8138\uff0c\u60f3\u901a\u8fc7\u7a0b\u5e8f\u4ee3\u7801\u83b7\u53d6\u4eba\u8138\u4fe1\u606f\uff0c\u7136\u540e\u8c03\u7528 opencv/pytorch \u6a21\u578b\uff0c\u4e3a\u6b64\u4eba\u8138\u6dfb\u52a0\u6ee4\u955c\u3002\u6b64\u6ee4\u955c\u4e3a\u666e\u901a 2D \u6ee4\u955c\uff0c\u5373\u8f93\u5165\u662f 2D \u56fe\u7247\uff0c\u8f93\u51fa\u4e5f\u662f 2D \u56fe\u7247\uff0c\u6bd4\u5982\u6211\u4eec\u624b\u673a\u81ea\u62cd\u91cc\u5e38\u89c1\u7684\u7f8e\u767d\u6ee4\u955c\uff0c\u773c\u955c\u53d8\u5927\u6ee4\u955c\u7b49\u3002</p>\n<p>\u73b0\u5728\u6b64\u6ee4\u955c\u5df2\u7ecf ready\uff0c\u4f7f\u7528\u7684\u662f opencv/pytorch\uff0c\u7528 python \u7f16\u5199\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u6539\u4e3a c++\uff09\uff0c\u8bf7\u95ee\u901a\u8fc7\u600e\u4e48\u6837\u4e00\u79cd\u65b9\u5f0f\u96c6\u6210\u5230 UE4 \u4e2d\u53bb\uff1f\u7531\u4e8e\u6ee4\u955c\u662f 2D \u6ee4\u955c\uff0c\u6240\u4ee5\u4ec5\u8981\u6c42\u8d34\u5b8c\u6ee4\u955c\u540e\u7684\u7684\u4eba\u8138\u53ea\u5bf9\u67d0\u4e00\u4e2a\u7279\u5b9a camera \u6295\u5f71 OK \u5c31\u884c\u3002</p>\n<p>\u60f3\u8be2\u95ee\u4e0b\u5b9e\u73b0\u601d\u8def\uff0c\u611f\u6fc0\u4e0d\u5c3d\u3002\n\u8bf7\u5927\u795e\u4eec\u53ef\u4ee5\u7ed9\u70b9\u5efa\u8bae\uff0c\u5373\u4f7f\u4e0d\u662f end to end solution \u4e5f\u884c\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/hicoldcat", 
        "name": "hicoldcat", 
        "avatar": "https://cdn.v2ex.com/avatar/26d1/ee50/357547_large.png?m=1673777879"
      }, 
      "url": "https://www.v2ex.com/t/792222", 
      "date_modified": "2021-07-28T05:16:32+00:00", 
      "content_html": "<p>\u5c0f\u767d\u5b66 UE\uff0c\u6709\u6ca1\u6709\u5c0f\u4f19\u4f34\u4e5f\u5728\u5b66\u7684\uff0c\u53ef\u4ee5\u4e00\u8d77\u4ea4\u6d41\u4ea4\u6d41\uff0c\u56fd\u5185\u793e\u533a\u8fd8\u662f\u633a\u8584\u5f31\u7684\uff0c\u6c42\u63a8\u8350\u4e00\u4e9b\u597d\u7684\u4ea4\u6d41\u805a\u96c6\u5730\u3002\u3002\u3002</p>\n", 
      "date_published": "2021-07-28T03:11:56+00:00", 
      "title": "\u6709\u6ca1\u6709\u4e00\u8d77\u5b66 UE \u7684", 
      "id": "https://www.v2ex.com/t/792222"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Rico", 
        "name": "Rico", 
        "avatar": "https://cdn.v2ex.com/avatar/64f9/56da/56032_large.png?m=1686115225"
      }, 
      "url": "https://www.v2ex.com/t/779648", 
      "title": "UE5 \u53d1\u5e03\u4e86", 
      "id": "https://www.v2ex.com/t/779648", 
      "date_published": "2021-05-27T11:51:46+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://www.unrealengine.com/zh-CN/blog/unreal-engine-5-is-now-available-in-early-access\" rel=\"nofollow noopener\">https://www.unrealengine.com/zh-CN/blog/unreal-engine-5-is-now-available-in-early-access</a> <br />\u4e0d\u8bf4\u4e86\uff0c\u6362\u663e\u5361\u53bb\u4e86"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/lovedec", 
        "name": "lovedec", 
        "avatar": "https://cdn.v2ex.com/avatar/022f/9c26/327432_large.png?m=1618451985"
      }, 
      "url": "https://www.v2ex.com/t/744487", 
      "title": "\u5c0f\u767d\u5165\u95e8 unreal\uff0c\u5927\u4f6c\u4eec\u6709\u5fae\u4fe1\u4ea4\u6d41\u7fa4\u5417\uff1f\u62c9\u4e00\u4e0b\ud83d\ude4f", 
      "id": "https://www.v2ex.com/t/744487", 
      "date_published": "2021-01-13T03:28:30+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/chaodada", 
        "name": "chaodada", 
        "avatar": "https://cdn.v2ex.com/gravatar/13c19405bdced18fa542697fbee0e7d3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/669754", 
      "title": "\u627e UE4 \u6280\u672f\u7f8e\u672f\u706f\u5149\u6e32\u67d3\uff0c\u5b9a\u5e8f\u5668\uff0c\u8fc7\u573a\u52a8\u753b", 
      "id": "https://www.v2ex.com/t/669754", 
      "date_published": "2020-05-08T10:52:49+00:00", 
      "content_html": "\u627e UE4 \u6280\u672f\u7f8e\u672f\u706f\u5149\u6e32\u67d3\uff0c\u5b9a\u5e8f\u5668\uff0c\u8fc7\u573a\u52a8\u753b<br />\u517c\u804c\uff0c\u85aa\u8d44\u53ef\u8c08<br />\u5927\u4f6c\u4eec\u6709\u610f\u53ef\u4ee5\u7559\u8a00\u8bc4\u8bba\uff0c\u6216\u8005\u6709\u670b\u53cb\u63a8\u8350\u4e5f\u884c\ud83d\ude02\ud83d\ude02"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/653794", 
      "title": "ORIGIN ZERO EP2", 
      "id": "https://www.v2ex.com/t/653794", 
      "date_published": "2020-03-18T03:06:51+00:00", 
      "content_html": "\u7528 Unreal Engine \u505a\u7684\u79d1\u5e7b\u5c0f\u77ed\u7247\uff0c\u753b\u9762\u548c\u97f3\u4e50\u90fd\u975e\u5e38\u6709\u611f\u89c9\u3002<br /><br /><div class=\"embedded_video_wrapper\"><iframe src=\"https://www.youtube.com/embed/BGQPE3mPc7k\" class=\"embedded_video\" allowfullscreen=\"\" type=\"text/html\" id=\"ytplayer\" frameborder=\"0\"></iframe></div>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/590233", 
      "title": "Attack from Outer Space", 
      "id": "https://www.v2ex.com/t/590233", 
      "date_published": "2019-08-08T09:25:14+00:00", 
      "content_html": "\u4e00\u4e2a\u7528 Unreal Engine 4.22 \u505a\u7684\u5149\u7ebf\u8ffd\u8e2a demo\uff0c\u5982\u679c\u4f60\u6709 20 \u7cfb\u663e\u5361\u7684\u8bdd\u63a8\u8350\u8bd5\u8bd5\u3002<br /><br /><a target=\"_blank\" href=\"/i/4XTa843R.jpeg\" rel=\"nofollow\" target=\"_blank\" title=\"\u5728\u65b0\u7a97\u53e3\u6253\u5f00\u56fe\u7247 4XTa843R.jpeg\"><img src=\"//i.v2ex.co/4XTa843R.jpeg\" class=\"embedded_image\"></a><br /><br />YouTube \u89c6\u9891\uff1a<br /><br /><div class=\"embedded_video_wrapper\"><iframe src=\"https://www.youtube.com/embed/tf95_ukvZ-o\" class=\"embedded_video\" allowfullscreen=\"\" type=\"text/html\" id=\"ytplayer\" frameborder=\"0\"></iframe></div><br />\u539f\u53d1\u5e03\u5730\u5740\uff1a<br /><br /><a target=\"_blank\" href=\"https://forums.unrealengine.com/community/released-projects/1624825-attack-from-outer-space-playable-dxr-ray-tracing-tech-demo\" rel=\"nofollow\">https://forums.unrealengine.com/community/released-projects/1624825-attack-from-outer-space-playable-dxr-ray-tracing-tech-demo</a><br /><br />Dropbox \u4e0b\u8f7d\u94fe\u63a5\uff1a<br /><br /><a target=\"_blank\" href=\"https://www.dropbox.com/s/svwn2zqf1tmgari/Attack_from_Outer_Space_1.0.1.zip?dl=0\" rel=\"nofollow\">https://www.dropbox.com/s/svwn2zqf1tmgari/Attack_from_Outer_Space_1.0.1.zip?dl=0</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/560340", 
      "title": "\u4e00\u4e2a UE4 \u7684\u5149\u7ebf\u8ffd\u8e2a\u6548\u679c\u6f14\u793a", 
      "id": "https://www.v2ex.com/t/560340", 
      "date_published": "2019-05-01T05:29:32+00:00", 
      "content_html": "<div class=\"embedded_video_wrapper\"><iframe src=\"https://www.youtube.com/embed/GrsSL_Xxo9Y\" class=\"embedded_video\" allowfullscreen=\"\" type=\"text/html\" id=\"ytplayer\" frameborder=\"0\"></iframe></div>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/221615", 
      "date_modified": "2015-09-17T15:41:46+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://www.unrealengine.com/blog/infiltrator-released-for-free\" rel=\"nofollow\">https://www.unrealengine.com/blog/infiltrator-released-for-free</a>\r<br />\r<br /><iframe id=\"ytplayer\" type=\"text/html\" width=\"660\" height=\"420\" src=\"//www.youtube.com/embed/dO2rM-l-vdQ\" frameborder=\"0\" allowfullscreen></iframe>", 
      "date_published": "2015-09-17T15:41:11+00:00", 
      "title": "UE4 \u7684\u8d85\u5f3a\u6f14\u793a\u9879\u76ee Infiltrator \u73b0\u5728\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d\u4e86", 
      "id": "https://www.v2ex.com/t/221615"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/220386", 
      "title": "Infinity Blade \u7684\u5927\u91cf\u7d20\u6750\u73b0\u5728\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d\u4e86", 
      "id": "https://www.v2ex.com/t/220386", 
      "date_published": "2015-09-13T08:41:10+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://www.unrealengine.com/new-content\" rel=\"nofollow\">https://www.unrealengine.com/new-content</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/207665", 
      "title": "\u7528 UE4 \u505a\u7684\u838e\u6728\u6e38\u620f\u573a\u666f", 
      "id": "https://www.v2ex.com/t/207665", 
      "date_published": "2015-07-22T15:24:15+00:00", 
      "content_html": "<iframe id=\"ytplayer\" type=\"text/html\" width=\"660\" height=\"420\" src=\"//www.youtube.com/embed/ETWhauvTOWY\" frameborder=\"0\" allowfullscreen></iframe>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/176248", 
      "title": "V2EX \u6709\u4eba\u5173\u6ce8 UE4 \u4e48\uff1f", 
      "id": "https://www.v2ex.com/t/176248", 
      "date_published": "2015-03-11T19:08:21+00:00", 
      "content_html": "\u6211\u7ecf\u5e38\u5728\u60f3\uff0c\u5982\u679c\u6211\u6ca1\u6709\u5728\u505a web \u8fd9\u4e00\u884c\u7684\u8bdd\uff0c\u6211\u4e00\u5b9a\u4f1a\u53bb\u505a\u6e38\u620f :)"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/wdhwg001", 
        "name": "wdhwg001", 
        "avatar": "https://cdn.v2ex.com/avatar/e30b/9759/66832_large.png?m=1648565728"
      }, 
      "url": "https://www.v2ex.com/t/174067", 
      "date_modified": "2015-03-03T01:09:29+00:00", 
      "content_html": "<p><img src=\"http://image.s6.exacttarget.com/lib/fea412727464057d74/m/1/valleyshot-final.jpg\" alt=\"pic\"></p>\n\n<p>\u521a\u521a\u6536\u5230\u4e86\u90ae\u4ef6\uff0c\u5f97\u77e5UE4\u5df2\u7ecf\u6c38\u4e45\u514d\u8d39\u4e86\u3002</p>\n\n<p>\u5177\u4f53\u53c2\u89c1\u5b98\u7f51: <a target=\"_blank\" rel=\"nofollow\" href=\"https://www.unrealengine.com/what-is-unreal-engine-4\">https://www.unrealengine.com/what-is-unreal-engine-4</a></p>\n\n<p>\u9644\u90ae\u4ef6\u539f\u6587\u81ea\u7ffb\uff0c\u76f4\u8bd1\u52ff\u602a\uff1a</p>\n\n<blockquote>\n<p>\u4eca\u5e74\u5bf9\u4e8eUnreal Engine 4\u662f\u7279\u6b8a\u7684\u4e00\u5e74\u3002\u6211\u4eec\u6210\u957f\u4e86\u5f88\u591a\uff0c\u6211\u4eec\u5b66\u4e60\u4e86\u5f88\u591a\uff0c\u56e0\u4e3a\u6709\u5927\u5bb6\u7684\u53cd\u9988\u548c\u534f\u52a9\uff0c\u4f7f\u5f97UE4\u5f15\u64ce\u53d8\u5f97\u4ece\u672a\u6709\u8fc7\u7684\u6613\u7528\u548c\u5f3a\u5927\u3002<strong>\u73b0\u5728\uff0c\u6211\u4eec\u5c06Unreal Engine 4\u514d\u8d39\u7684\u63d0\u4f9b\u7ed9\u4e16\u754c\u5404\u5730\u7684\u5f00\u53d1\u8005\u3002</strong></p>\n\n<p>\u5728\u8fd9\u4e4b\u524d\uff0c\u6211\u4eec\u60f3\u8981\u771f\u8bda\u7684\u5411\u6bcf\u4e00\u4f4d\u966a\u4f34\u6211\u4eec\u81f3\u4eca\u7684\u4eba\u8868\u793a\u611f\u8c22\u3002\u6211\u4eec\u4e3a\u60a8\u7684\u6d3b\u529b\uff0c\u70ed\u60c5\u548c\u4f7f\u7528UE4\u6240\u505a\u7684\u60ca\u4eba\u7684\u4e00\u5207\u800c\u611f\u52a8\u3002\u56e0\u4e3a\u6709\u60a8\uff0c\u6211\u4eec\u5c06\u4f1a\u5de5\u4f5c\u7684\u66f4\u52a0\u52aa\u529b\uff0c\u56e0\u6b64\uff0c\u5f53\u6211\u4eec\u643a\u624b\u7684\u65f6\u5019\uff0c\u6211\u4eec\u5747\u53ef\u4ee5\u521b\u9020\u6211\u4eec\u671f\u5f85\u7740\u7684\uff0c\u60f3\u8981\u5851\u9020\u7684\uff0c\u6211\u4eec\u949f\u7231\u7740\u7684\u672a\u6765\u3002</p>\n\n<p>\u5982\u679c\u60a8\u57281\u670830\u65e5\u6216\u4e4b\u540e\u8ba2\u9605\u4e86UE4\uff0c\u60a8\u5c06\u4f1a\u6309\u6bd4\u4f8b\u83b7\u5f97\u60a8\u6700\u540e\u4e00\u4e2a\u6708\u7684\u9000\u6b3e\u3002<strong>\u60a8\u5c06\u53ef\u4ee5\u7ee7\u7eed\u514d\u8d39\u83b7\u5f97\u672a\u6765\u5168\u90e8\u7684\u66f4\u65b0\u3002</strong></p>\n\n<p>\u540c\u65f6\uff0c\u7531\u4e8e\u60a8\u66fe\u662f\u6211\u4eec\u7684\u4ed8\u8d39\u8ba2\u9605\u8005\uff0c<strong>\u6211\u4eec\u5c06\u989d\u5916\u8d60\u4e88\u60a8$30\u7f8e\u5143\uff0c\u60a8\u5c06\u53ef\u4ee5\u5728Marketplace\u5546\u5e97\u4e2d\u6d88\u8d39\uff0c\u6216\u4fdd\u5b58\u4ee5\u5907\u5c06\u6765\u4f7f\u7528\u3002</strong></p>\n</blockquote>\n\n<p>PS: 5%\u5206\u6210\u7684\u89c4\u5219\u4f9d\u65e7\u4e0d\u53d8\uff0c\u4f46\u662f\u6e38\u620f\u5f00\u53d1\uff0c\u865a\u62df\u73b0\u5b9e\uff0c\u6559\u80b2\uff0c\u5efa\u7b51\u548c\u7535\u5f71\u9886\u57df\u7684\u4f7f\u7528\u662f\u5b8c\u5168\u514d\u8d39\u7684\u3002</p>\n", 
      "date_published": "2015-03-02T18:03:05+00:00", 
      "title": "Unreal Engine 4 \u514d\u8d39\u4e86\uff0c If You Love Something, Set It Free.", 
      "id": "https://www.v2ex.com/t/174067"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/168288", 
      "title": "Unreal Engine 4 Tech Demo Huangshan Mountains", 
      "id": "https://www.v2ex.com/t/168288", 
      "date_published": "2015-02-04T12:06:20+00:00", 
      "content_html": "<iframe id=\"ytplayer\" type=\"text/html\" width=\"660\" height=\"420\" src=\"//www.youtube.com/embed/lZa31dxGGlE\" frameborder=\"0\" allowfullscreen></iframe>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/144831", 
      "title": "UE4 Learn Tab", 
      "id": "https://www.v2ex.com/t/144831", 
      "date_published": "2014-11-07T15:23:53+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://www.unrealengine.com/blog/learn-tab\" rel=\"nofollow\">https://www.unrealengine.com/blog/learn-tab</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/129130", 
      "title": "UE4 \u7684\u65b0\u6297\u952f\u9f7f\u7b97\u6cd5 Temporal AA", 
      "id": "https://www.v2ex.com/t/129130", 
      "date_published": "2014-08-21T05:47:08+00:00", 
      "content_html": "<a target=\"_blank\" href=\"http://www.dsogaming.com/news/epic-games-shows-incredible-new-anti-aliasing-technique-screenshots-video-comparison/\" rel=\"nofollow\">http://www.dsogaming.com/news/epic-games-shows-incredible-new-anti-aliasing-technique-screenshots-video-comparison/</a><br /><br /><object width=\"660\" height=\"420\"><param name=\"movie\" value=\"http://www.youtube.com/v/yNQ47MY-Eo0?fs=1&amp;hl=en_US\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/yNQ47MY-Eo0?fs=1&amp;hl=en_US\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"660\" height=\"420\"></embed></object>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/121392", 
      "title": "UE4 Demos for Linux", 
      "id": "https://www.v2ex.com/t/121392", 
      "date_published": "2014-07-07T10:20:52+00:00", 
      "content_html": "<a target=\"_blank\" href=\"http://ubuntugamingproject.blogspot.it/2014/07/unreal-engine-4-linux-demos.html\" rel=\"nofollow\">http://ubuntugamingproject.blogspot.it/2014/07/unreal-engine-4-linux-demos.html</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/111729", 
      "title": "\u4e0b\u4e00\u4ee3\u7684 Unreal Tournament", 
      "id": "https://www.v2ex.com/t/111729", 
      "date_published": "2014-05-09T02:17:14+00:00", 
      "content_html": "<a target=\"_blank\" href=\"https://www.unrealengine.com/blog/the-future-of-unreal-tournament-begins-today\" rel=\"nofollow\">https://www.unrealengine.com/blog/the-future-of-unreal-tournament-begins-today</a><br /><br />- \u5f00\u53d1\u8fdb\u5ea6\u5c06\u4f1a\u540c\u6b65\u5230 GitHub\uff0c\u5b8c\u5168\u516c\u5f00<br />- \u5c06\u4f1a\u662f\u4e00\u6b3e\u5f7b\u5e95\u7684\u514d\u8d39\u6e38\u620f"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1775624785"
      }, 
      "url": "https://www.v2ex.com/t/105716", 
      "title": "UE4 \u5728 GDC 2014 \u4e0a\u7684\u5de5\u5177\u6f14\u793a", 
      "id": "https://www.v2ex.com/t/105716", 
      "date_published": "2014-03-24T15:43:27+00:00", 
      "content_html": "<a target=\"_blank\" href=\"http://www.gamespot.com/videos/unreal-engine-4-tools-demonstration-gdc-2014/2300-6417896/\" rel=\"nofollow\">http://www.gamespot.com/videos/unreal-engine-4-tools-demonstration-gdc-2014/2300-6417896/</a>"
    }
  ]
}