{ "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": "go/udk", "feed_url": "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": "member/iceAD", "name": "iceAD", "avatar": "https://cdn.v2ex.com/gravatar/12db68bd4cabfb00e840b25c3a3581e0?s=73&d=retro" }, "url": "t/1164390", "title": "NoesisGUI \u9082\u9005 AI\uff1a\u57fa\u4e8e TypeScript \u7684 MVVM \u67b6\u6784\u4e0e\u81ea\u52a8\u5316\u4ee3\u7801\u751f\u6210", "id": "t/1164390", "date_published": "2025-10-11T02:50:15+00:00", "content_html": "
\n

NoesisDemo - TypeScript + AI \u8d4b\u80fd\u7684 MVVM \u5f00\u53d1\u65b9\u6848

\n

\ud83d\udd17 \u9879\u76ee\u4ed3\u5e93: https://github.com/No-needto-recall/NoesisDemo

\n
\n

\ud83c\udfaf \u8fd9\u4e2a\u9879\u76ee\u662f\u505a\u4ec0\u4e48\u7684\uff1f

\n

\u8fd9\u662f\u4e00\u4e2a Unreal Engine 5.4 \u7684\u793a\u4f8b\u9879\u76ee\uff0c\u65e8\u5728\u6f14\u793a\uff1a

\n\n

\u6838\u5fc3\u7406\u5ff5\uff1aXAML \u548c ViewModel \u90fd\u662f\u4ee3\u7801 \u2192 AI \u5b8c\u5168\u7406\u89e3 \u2192 \u81ea\u52a8\u751f\u6210\u548c\u4fee\u6539 \u2192 \u5f00\u53d1\u6548\u7387 dramatically improved

\n
\n

\ud83d\udcd1 \u76ee\u5f55

\n\n
\n

\u2728 \u6838\u5fc3\u7279\u6027

\n

\u2705 \u5b8c\u7f8e\u590d\u523b\u5b98\u65b9\u793a\u4f8b\uff1a\u6210\u529f\u4f7f\u7528 TypeScript \u590d\u523b\u4e86 NoesisGUI \u5b98\u65b9\u7684 Buttons \u548c QuestLog \u793a\u4f8b\u3002

\n

\ud83d\ude80 TypeScript \u4ee3\u7801\u5316 ViewModel\uff1a\u4f7f\u7528 PuerTS \u7684 uclass_extends \u76f4\u63a5\u7ee7\u627f UE \u7c7b\u5e76\u81ea\u52a8\u751f\u6210\u84dd\u56fe\u3002

\n

\ud83d\udd27 \u52a8\u6001 DataContext \u8bbe\u7f6e\uff1a\u81ea\u5b9a\u4e49 UNoesisViewModeInstance\uff0c\u8c03\u6574 DataContext \u7684\u8d4b\u503c\u65f6\u673a\u3002

\n

\ud83e\udd16 AI \u53cb\u597d\uff1aXAML \u548c ViewModel \u5747\u4e3a\u4ee3\u7801\uff0c\u6613\u4e8e AI \u7406\u89e3\u548c\u751f\u6210\u3002

\n

\ud83d\udce6 \u7248\u672c\u63a7\u5236\u53cb\u597d\uff1a\u5b8c\u5168\u57fa\u4e8e\u4ee3\u7801\uff0c\u544a\u522b\u84dd\u56fe\u5408\u5e76\u7684\u5669\u68a6\u3002

\n

\u26a1 \u5c5e\u6027\u81ea\u52a8\u901a\u77e5\uff1aNoesisProxy \u81ea\u52a8\u5904\u7406 PropertyChanged\uff0c\u5e76\u539f\u751f\u652f\u6301 TArray \u548c TMap\u3002

\n
\n

\ud83e\udd16 AI \u8f85\u52a9\u5f00\u53d1 - \u8fd1\u4e4e\u81ea\u52a8\u5316\u7684 UI \u4ee3\u7801\u751f\u6210

\n

\u4e3a\u4ec0\u4e48\u8fd9\u5957\u65b9\u6848\u5bf9 AI \u53cb\u597d\uff1f

\n

\u672c\u65b9\u6848\u91c7\u7528\u5b8c\u5168\u4ee3\u7801\u5316\u7684\u5de5\u4f5c\u6d41\uff1a

\n

\u2705 XAML \u6587\u4ef6\u662f\u7eaf\u6587\u672c\u683c\u5f0f - AI \u53ef\u4ee5\u8f7b\u677e\u7406\u89e3\u548c\u751f\u6210\u3002

\n

\u2705 ViewModel \u4f7f\u7528 TypeScript \u7f16\u5199 - \u8fd9\u662f AI \u7684\u5f3a\u9879\u3002

\n

\u2705 \u6570\u636e\u7ed1\u5b9a\u903b\u8f91\u6e05\u6670\u53ef\u8bfb - AI \u80fd\u591f\u8fdb\u884c\u63a8\u7406\u3002

\n

\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

\n

AI \u80fd\u505a\u4ec0\u4e48\uff1f

\n

\u81ea\u52a8\u751f\u6210 ViewModel \u4ee3\u7801

\n

\u53ea\u9700\u63cf\u8ff0\u4f60\u7684\u9700\u6c42\uff0cAI \u5c31\u80fd\u751f\u6210\u5b8c\u6574\u7684 ViewModel\uff1a

\n
// \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
\n

\u81ea\u52a8\u4fee\u6539\u548c\u91cd\u6784\u4ee3\u7801

\n

\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 (TArray, TMap)\u3002

\n

\u5feb\u901f\u751f\u6210\u5b8c\u6574\u754c\u9762

\n

\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

\n

\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

\n
\n

\"\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

\n
\n
\n

\ud83c\udfd7\ufe0f \u6280\u672f\u67b6\u6784\u4eae\u70b9

\n

PuerTS uclass_extends - \u81ea\u52a8\u751f\u6210\u84dd\u56fe\u7c7b

\n

\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

\n
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
\n

UNoesisViewModeInstance - \u89e3\u51b3 DataContext \u9650\u5236

\n

\u81ea\u5b9a\u4e49\u7684 UNoesisInstance \u5b50\u7c7b\uff0c\u5728 XamlLoaded \u56de\u8c03\u4e2d\u81ea\u52a8\u8bbe\u7f6e DataContext\uff0c\u89e3\u51b3\u4e86\u5b98\u65b9\u7c7b\u4e0d\u652f\u6301\u52a8\u6001\u8bbe\u7f6e\u7684\u95ee\u9898\u3002

\n

NoesisProxy - \u5c5e\u6027\u81ea\u52a8\u901a\u77e5

\n

\u5229\u7528 Javascript Proxy API \u81ea\u52a8\u62e6\u622a\u5c5e\u6027\u4fee\u6539\uff0c\u5e76\u89e6\u53d1 NoesisGUI \u7684\u66f4\u65b0\uff1a

\n
const proxy = createNoesisProxy<TS_ButtonsViewMode>(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
\n

\u6570\u636e\u7ed1\u5b9a\u6d41\u7a0b\uff1a

\n
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
\n
\n

\ud83c\udfa8 \u5b8c\u7f8e\u590d\u523b\u5b98\u65b9\u793a\u4f8b

\n

Buttons \u793a\u4f8b

\n

\u6f14\u793a\u4e86\u57fa\u7840\u7684 MVVM \u6570\u636e\u7ed1\u5b9a\uff1a

\n\n

QuestLog \u793a\u4f8b

\n

\u6f14\u793a\u4e86\u590d\u6742\u7684\u6570\u636e\u7ed1\u5b9a\uff1a

\n\n
// QuestLog ViewModel \u793a\u4f8b\nclass TS_QuestLogViewMode extends UE.Object {\n @uproperty(uproperty.EditAnywhere, uproperty.BlueprintReadWrite)\n Quests: UE.TArray<TS_Quest>;\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<TS_QuestLogViewMode>(this);\n Proxy.Quests.Add(Quest);\n \n return Quest;\n }\n}\n
\n
\n

\ud83d\ude80 \u5feb\u901f\u5f00\u59cb

\n

\u73af\u5883\u8981\u6c42\uff1a

\n\n

\u83b7\u53d6\u9879\u76ee\uff1a

\n
git clone https://github.com/No-needto-recall/NoesisDemo.git\n
\n

\u26a0\ufe0f \u91cd\u8981\u63d0\u793a\uff1a

\n\n

\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

\n
\n

\ud83d\udcda \u76f8\u5173\u94fe\u63a5

\n\n
\n

\ud83d\udca1 \u603b\u7ed3

\n

\u8fd9\u4e2a\u9879\u76ee\u4e3a Unreal Engine \u4e2d\u7684 NoesisGUI \u5f00\u53d1\u63d0\u4f9b\u4e86\u4e00\u79cd\u5168\u65b0\u7684\u601d\u8def\uff1a

\n

\u2705 \u4f7f\u7528 TypeScript \u66ff\u4ee3\u84dd\u56fe\u7f16\u5199 ViewModel

\n

\u2705 \u5b8c\u5168\u4ee3\u7801\u5316\uff0c\u7248\u672c\u63a7\u5236\u53cb\u597d\uff0c\u65e0\u84dd\u56fe\u5408\u5e76\u51b2\u7a81

\n

\u2705 \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

\n

\u2705 \u590d\u523b\u5b98\u65b9\u793a\u4f8b\uff0c\u8bc1\u660e\u4e86\u65b9\u6848\u7684\u5b8c\u6574\u6027\u548c\u53ef\u884c\u6027

\n

\u2705 \u81ea\u52a8\u5c5e\u6027\u901a\u77e5\uff0c\u652f\u6301\u590d\u6742\u7684 TArray \u548c TMap \u7ed1\u5b9a

\n

\u975e\u5e38\u9002\u5408\uff1a

\n\n

\u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u4f60\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u5b83\u4e00\u4e2a Star \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

\n

Made with \u2764\ufe0f for the NoesisGUI Community

\n" }, { "author": { "url": "member/MrDarnell", "name": "MrDarnell", "avatar": "https://cdn.v2ex.com/avatar/4d57/4884/406508_large.png?m=1711699756" }, "url": "t/1072382", "title": "\u60f3\u5b66\u4e60 Unreal 5 \uff0c\u6c42\u63a8\u8350\u6bd4\u8f83\u597d\u7684\u89c6\u9891\u6559\u7a0b", "id": "t/1072382", "date_published": "2024-09-12T09:33:53+00:00", "content_html": "

\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

\n" }, { "author": { "url": "member/sbldehanhan", "name": "sbldehanhan", "avatar": "https://cdn.v2ex.com/avatar/9b55/524c/511212_large.png?m=1736302807" }, "url": "t/1068797", "title": "UE5 \u9879\u76ee\u592a\u5927\uff0c\u7528\u4ec0\u4e48\u7248\u672c\u63a7\u5236\u7cfb\u7edf\uff1f", "id": "t/1068797", "date_published": "2024-08-29T09:12:45+00:00", "content_html": "" }, { "author": { "url": "member/hash", "name": "hash", "avatar": "https://cdn.v2ex.com/avatar/97da/a09f/59524_large.png?m=1692496084" }, "url": "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,
\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\"
\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.
\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": "t/1007809" }, { "author": { "url": "member/ilinxiao", "name": "ilinxiao", "avatar": "https://cdn.v2ex.com/avatar/9b2a/0842/20685_large.png?m=1697193173" }, "url": "t/975504", "title": "\u5bfb unity \u6216\u8005 ue \u6280\u672f\u56e2\u961f\uff0c\u7814\u53d1\u65b0\u6b3e\u6e38\u620f", "id": "t/975504", "date_published": "2023-09-20T04:39:20+00:00", "content_html": "\u6709\u610f\u8054\u7cfb V:bHZsaW54aWFvMjAyMw==" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/821128", "title": "\u4e00\u4e2a\u65b0\u7684 UE5 Tech Demo", "id": "t/821128", "date_published": "2021-12-09T07:21:08+00:00", "content_html": "https://www.unrealengine.com/en-US/wakeup

\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": "member/jtacm", "name": "jtacm", "avatar": "https://cdn.v2ex.com/avatar/51e5/fad8/41209_large.png?m=1773397215" }, "url": "t/799978", "title": "\u6709 UE4 \u5927\u795e\u6ca1\uff0c\u60f3\u95ee\u4e2a\u95ee\u9898\u3002", "id": "t/799978", "date_published": "2021-09-05T08:41:11+00:00", "content_html": "

\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

\n

\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

\n

\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

\n" }, { "author": { "url": "member/hicoldcat", "name": "hicoldcat", "avatar": "https://cdn.v2ex.com/avatar/26d1/ee50/357547_large.png?m=1673777879" }, "url": "t/792222", "date_modified": "2021-07-28T05:16:32+00:00", "content_html": "

\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

\n", "date_published": "2021-07-28T03:11:56+00:00", "title": "\u6709\u6ca1\u6709\u4e00\u8d77\u5b66 UE \u7684", "id": "t/792222" }, { "author": { "url": "member/Rico", "name": "Rico", "avatar": "https://cdn.v2ex.com/avatar/64f9/56da/56032_large.png?m=1686115225" }, "url": "t/779648", "title": "UE5 \u53d1\u5e03\u4e86", "id": "t/779648", "date_published": "2021-05-27T11:51:46+00:00", "content_html": "https://www.unrealengine.com/zh-CN/blog/unreal-engine-5-is-now-available-in-early-access
\u4e0d\u8bf4\u4e86\uff0c\u6362\u663e\u5361\u53bb\u4e86" }, { "author": { "url": "member/lovedec", "name": "lovedec", "avatar": "https://cdn.v2ex.com/avatar/022f/9c26/327432_large.png?m=1618451985" }, "url": "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": "t/744487", "date_published": "2021-01-13T03:28:30+00:00", "content_html": "" }, { "author": { "url": "member/chaodada", "name": "chaodada", "avatar": "https://cdn.v2ex.com/gravatar/13c19405bdced18fa542697fbee0e7d3?s=73&d=retro" }, "url": "t/669754", "title": "\u627e UE4 \u6280\u672f\u7f8e\u672f\u706f\u5149\u6e32\u67d3\uff0c\u5b9a\u5e8f\u5668\uff0c\u8fc7\u573a\u52a8\u753b", "id": "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
\u517c\u804c\uff0c\u85aa\u8d44\u53ef\u8c08
\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": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/653794", "title": "ORIGIN ZERO EP2", "id": "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

" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/590233", "title": "Attack from Outer Space", "id": "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



YouTube \u89c6\u9891\uff1a


\u539f\u53d1\u5e03\u5730\u5740\uff1a

https://forums.unrealengine.com/community/released-projects/1624825-attack-from-outer-space-playable-dxr-ray-tracing-tech-demo

Dropbox \u4e0b\u8f7d\u94fe\u63a5\uff1a

https://www.dropbox.com/s/svwn2zqf1tmgari/Attack_from_Outer_Space_1.0.1.zip?dl=0" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/560340", "title": "\u4e00\u4e2a UE4 \u7684\u5149\u7ebf\u8ffd\u8e2a\u6548\u679c\u6f14\u793a", "id": "t/560340", "date_published": "2019-05-01T05:29:32+00:00", "content_html": "
" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/221615", "date_modified": "2015-09-17T15:41:46+00:00", "content_html": "https://www.unrealengine.com/blog/infiltrator-released-for-free\r
\r
", "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": "t/221615" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/220386", "title": "Infinity Blade \u7684\u5927\u91cf\u7d20\u6750\u73b0\u5728\u53ef\u4ee5\u514d\u8d39\u4e0b\u8f7d\u4e86", "id": "t/220386", "date_published": "2015-09-13T08:41:10+00:00", "content_html": "https://www.unrealengine.com/new-content" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/207665", "title": "\u7528 UE4 \u505a\u7684\u838e\u6728\u6e38\u620f\u573a\u666f", "id": "t/207665", "date_published": "2015-07-22T15:24:15+00:00", "content_html": "" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/176248", "title": "V2EX \u6709\u4eba\u5173\u6ce8 UE4 \u4e48\uff1f", "id": "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": "member/wdhwg001", "name": "wdhwg001", "avatar": "https://cdn.v2ex.com/avatar/e30b/9759/66832_large.png?m=1648565728" }, "url": "t/174067", "date_modified": "2015-03-03T01:09:29+00:00", "content_html": "

\"pic\"

\n\n

\u521a\u521a\u6536\u5230\u4e86\u90ae\u4ef6\uff0c\u5f97\u77e5UE4\u5df2\u7ecf\u6c38\u4e45\u514d\u8d39\u4e86\u3002

\n\n

\u5177\u4f53\u53c2\u89c1\u5b98\u7f51: https://www.unrealengine.com/what-is-unreal-engine-4

\n\n

\u9644\u90ae\u4ef6\u539f\u6587\u81ea\u7ffb\uff0c\u76f4\u8bd1\u52ff\u602a\uff1a

\n\n
\n

\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\u73b0\u5728\uff0c\u6211\u4eec\u5c06Unreal Engine 4\u514d\u8d39\u7684\u63d0\u4f9b\u7ed9\u4e16\u754c\u5404\u5730\u7684\u5f00\u53d1\u8005\u3002

\n\n

\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

\n\n

\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\u60a8\u5c06\u53ef\u4ee5\u7ee7\u7eed\u514d\u8d39\u83b7\u5f97\u672a\u6765\u5168\u90e8\u7684\u66f4\u65b0\u3002

\n\n

\u540c\u65f6\uff0c\u7531\u4e8e\u60a8\u66fe\u662f\u6211\u4eec\u7684\u4ed8\u8d39\u8ba2\u9605\u8005\uff0c\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

\n
\n\n

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

\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": "t/174067" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/168288", "title": "Unreal Engine 4 Tech Demo Huangshan Mountains", "id": "t/168288", "date_published": "2015-02-04T12:06:20+00:00", "content_html": "" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/144831", "title": "UE4 Learn Tab", "id": "t/144831", "date_published": "2014-11-07T15:23:53+00:00", "content_html": "https://www.unrealengine.com/blog/learn-tab" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/129130", "title": "UE4 \u7684\u65b0\u6297\u952f\u9f7f\u7b97\u6cd5 Temporal AA", "id": "t/129130", "date_published": "2014-08-21T05:47:08+00:00", "content_html": "http://www.dsogaming.com/news/epic-games-shows-incredible-new-anti-aliasing-technique-screenshots-video-comparison/

" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/121392", "title": "UE4 Demos for Linux", "id": "t/121392", "date_published": "2014-07-07T10:20:52+00:00", "content_html": "http://ubuntugamingproject.blogspot.it/2014/07/unreal-engine-4-linux-demos.html" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/111729", "title": "\u4e0b\u4e00\u4ee3\u7684 Unreal Tournament", "id": "t/111729", "date_published": "2014-05-09T02:17:14+00:00", "content_html": "https://www.unrealengine.com/blog/the-future-of-unreal-tournament-begins-today

- \u5f00\u53d1\u8fdb\u5ea6\u5c06\u4f1a\u540c\u6b65\u5230 GitHub\uff0c\u5b8c\u5168\u516c\u5f00
- \u5c06\u4f1a\u662f\u4e00\u6b3e\u5f7b\u5e95\u7684\u514d\u8d39\u6e38\u620f" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/105716", "title": "UE4 \u5728 GDC 2014 \u4e0a\u7684\u5de5\u5177\u6f14\u793a", "id": "t/105716", "date_published": "2014-03-24T15:43:27+00:00", "content_html": "http://www.gamespot.com/videos/unreal-engine-4-tools-demonstration-gdc-2014/2300-6417896/" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86