{"id":1755,"date":"2025-03-24T08:49:59","date_gmt":"2025-03-23T23:49:59","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1755"},"modified":"2025-03-24T08:49:59","modified_gmt":"2025-03-23T23:49:59","slug":"unreal-engine-c%e5%85%a5%e9%96%80%ef%bc%9a%e7%88%86%e9%80%9f%e3%81%a7%e7%bf%92%e5%be%97%e3%81%99%e3%82%8b%e5%ae%9f%e8%b7%b5%e7%9a%84%e9%96%8b%e7%99%ba%e3%82%ac%e3%82%a4%e3%83%892024","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1755","title":{"rendered":"Unreal Engine C++\u5165\u9580\uff1a\u7206\u901f\u3067\u7fd2\u5f97\u3059\u308b\u5b9f\u8df5\u7684\u958b\u767a\u30ac\u30a4\u30c92024"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Unreal Engine \u306e C++ \u958b\u767a\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">Unreal \u306e C++ \u3068\u306f\uff1a\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3068\u306e\u9055\u3044\u3092\u5fb9\u5e95\u89e3\u8aac<\/a>      <\/li>      <li>        <a href=\"#i-2\">\u958b\u767a\u74b0\u5883\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u624b\u9806<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210\u304b\u3089\u30d3\u30eb\u30c9\u307e\u3067\u306e\u6d41\u308c<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">Unreal C++ \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5b9f\u8df5\u7684\u624b\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">\u30a2\u30af\u30bf\u30fc\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-6\">\u30b2\u30fc\u30e0\u30d7\u30ec\u30a4\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6d3b\u7528\u8853<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-7\">\u30e1\u30e2\u30ea\u7ba1\u7406\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u79d8\u8a23<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-8\">C++\u3068\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u306e\u52b9\u679c\u7684\u306a\u4f75\u7528\u6226\u7565<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-9\">\u305d\u308c\u305e\u308c\u306e\u7279\u5fb4\u3092\u8003\u616e\u3057\u305f\u6d3b\u7528\u306e\u30b3\u30c4<\/a>      <\/li>      <li>        <a href=\"#i-10\">C++\u304b\u3089\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3092\u64cd\u4f5c\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u958b\u767a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-12\">\u5b9f\u8df5\u7684\u306aUnreal C++\u958b\u767a\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-13\">\u30c7\u30d0\u30c3\u30b0\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u5b9f\u8df5\u624b\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-14\">\u30de\u30eb\u30c1\u30d7\u30ec\u30a4\u30e4\u30fc\u6a5f\u80fd\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u5177\u4f53\u7684\u306a\u624b\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-16\">\u73fe\u5834\u3067\u6d3b\u304d\u308bUnreal C++\u958b\u767a\u306e\u305f\u3081\u306e\u30d2\u30f3\u30c8<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-17\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u898f\u6a21\u3067\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u306e\u6d3b\u7528<\/a>      <\/li>      <li>        <a href=\"#i-18\">\u30b3\u30fc\u30c9\u54c1\u8cea\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-19\">\u5b9f\u52d9\u3067\u4f7f\u3048\u308b\u4fbf\u5229\u306a\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u30c4\u30fc\u30eb<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Unreal Engine \u306e C++ \u958b\u767a\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">Unreal \u306e C++ \u3068\u306f\uff1a\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3068\u306e\u9055\u3044\u3092\u5fb9\u5e95\u89e3\u8aac<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unreal Engine \u306e C++\u306f\u3001\u30a8\u30f3\u30b8\u30f3\u306e\u5b8c\u5168\u306a\u6a5f\u80fd\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u5f37\u529b\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u624b\u6cd5\u3067\u3059\u3002\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3068\u6bd4\u8f03\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-4f4a731f-108b-4fa1-a9c8-ef585c68adf9\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7279\u5fb4<\/th><th>Unreal C++<\/th><th>\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8<\/th><\/tr><\/thead><tbody><tr><td>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/td><td>\u9ad8\u901f\uff08\u30cd\u30a4\u30c6\u30a3\u30d6\u30b3\u30fc\u30c9\uff09<\/td><td>\u6bd4\u8f03\u7684\u4f4e\u901f\uff08\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u5b9f\u884c\uff09<\/td><\/tr><tr><td>\u30c7\u30d0\u30c3\u30b0\u6a5f\u80fd<\/td><td>\u5b8c\u5168\u306a\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb<\/td><td>\u9650\u5b9a\u7684<\/td><\/tr><tr><td>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406<\/td><td>Git\u7b49\u3067\u5bb9\u6613\u306b\u7ba1\u7406\u53ef\u80fd<\/td><td>\u30de\u30fc\u30b8\u304c\u56f0\u96e3<\/td><\/tr><tr><td>\u5b66\u7fd2\u66f2\u7dda<\/td><td>\u6025\uff08C++\u306e\u77e5\u8b58\u304c\u5fc5\u8981\uff09<\/td><td>\u7de9\u3084\u304b\uff08\u8996\u899a\u7684\u3067\u76f4\u611f\u7684\uff09<\/td><\/tr><tr><td>\u5b9f\u884c\u901f\u5ea6<\/td><td>\u6700\u592710\u500d\u4ee5\u4e0a\u9ad8\u901f<\/td><td>\u57fa\u6e96\u5024<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">C++\u3092\u9078\u629e\u3059\u3079\u304d\u30b1\u30fc\u30b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u91cd\u8981\u306a\u6a5f\u80fd\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u5927\u898f\u6a21\u306a\u30b7\u30b9\u30c6\u30e0\u306e\u8a2d\u8a08<\/li>\n\n\n\n<li>\u30d7\u30e9\u30b0\u30a4\u30f3\u958b\u767a<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u958b\u767a\u74b0\u5883\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u624b\u9806<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5fc5\u8981\u306a\u30c4\u30fc\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Visual Studio 2022\uff08\u63a8\u5968\uff09<\/li>\n\n\n\n<li>Unreal Engine\uff08Epic Games Launcher\u7d4c\u7531\uff09<\/li>\n\n\n\n<li>Visual Studio\u7528Unreal Engine\u62e1\u5f35\u6a5f\u80fd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Visual Studio\u306e\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Visual Studio\u306e\u63a8\u5968\u8a2d\u5b9a\n\/\/ Tools &gt; Options &gt; Text Editor &gt; C\/C++ &gt; Advanced\n\/\/ \"Disable External Dependencies Folder\" = True\n\/\/ \"Disable Solution Explorer Database\" = True<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u56fa\u6709\u306e\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e.uproject\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\n{\n    \"Modules\": [\n        {\n            \"Name\": \"YourProjectName\",\n            \"Type\": \"Runtime\",\n            \"LoadingPhase\": \"Default\"\n        }\n    ]\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210\u304b\u3089\u30d3\u30eb\u30c9\u307e\u3067\u306e\u6d41\u308c<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ 1. Epic Games Launcher\u304b\u3089\u65b0\u898f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210\n\/\/ 2. C++\u30af\u30e9\u30b9\u306e\u8ffd\u52a0\nclass AMyActor : public AActor\n{\n    GENERATED_BODY()\npublic:\n    AMyActor();\n\nprotected:\n    virtual void BeginPlay() override;\n\npublic:\n    virtual void Tick(float DeltaTime) override;\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d3\u30eb\u30c9\u624b\u9806\n\/\/ 1. Visual Studio\u3067Build Solution\u3092\u5b9f\u884c\n\/\/ \u307e\u305f\u306f\n\/\/ 2. Unreal Editor\u3067\u300cCompile\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\n\n\/\/ \u30e2\u30b8\u30e5\u30fc\u30eb\u5b9a\u7fa9\u4f8b\uff08Build.cs\uff09\npublic class YourProject : ModuleRules\n{\n    public YourProject(ReadOnlyTargetRules Target) : base(Target)\n    {\n        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;\n\n        PublicDependencyModuleNames.AddRange(new string[] { \"Core\", \"CoreUObject\", \"Engine\", \"InputCore\" });\n    }\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30c3\u30b0\u6e96\u5099\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u8ffd\u52a0\nvoid AMyActor::BeginPlay()\n{\n    Super::BeginPlay();\n\n    \/\/ \u69d8\u3005\u306a\u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u4f7f\u7528\u4f8b\n    UE_LOG(LogTemp, Warning, TEXT(\"Warning Message\"));\n    UE_LOG(LogTemp, Error, TEXT(\"Error Message\"));\n\n    \/\/ \u753b\u9762\u4e0a\u306b\u30c7\u30d0\u30c3\u30b0\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\n    GEngine-&gt;AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT(\"Debug Message\"));\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u4f9d\u5b58\u95a2\u4fc2\u3092\u9069\u5207\u306b\u7ba1\u7406\u3059\u308b<\/li>\n\n\n\n<li>\u30db\u30c3\u30c8\u30ea\u30ed\u30fc\u30c9\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u3066\u958b\u767a\u52b9\u7387\u3092\u4e0a\u3052\u308b<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6574\u5408\u6027\u3092\u4fdd\u3064\u305f\u3081\u306b\u30d3\u30eb\u30c9\u8a2d\u5b9a\u3092\u7406\u89e3\u3059\u308b<\/li>\n\n\n\n<li>\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u958b\u767a\u74b0\u5883\u306e\u6574\u5099\u3068\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u7406\u89e3\u306f\u3001\u30b9\u30e0\u30fc\u30ba\u306aUnreal C++\u958b\u767a\u306e\u57fa\u76e4\u3068\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u57fa\u790e\u77e5\u8b58\u3092\u6d3b\u304b\u3057\u305f\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u624b\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">Unreal C++ \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5b9f\u8df5\u7684\u624b\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u30a2\u30af\u30bf\u30fc\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a2\u30af\u30bf\u30fc\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001Unreal Engine\u306e\u30b2\u30fc\u30e0\u30d7\u30ec\u30a4\u306e\u57fa\u672c\u3068\u306a\u308b\u8981\u7d20\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u5b9f\u8df5\u7684\u306a\u5b9f\u88c5\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30bf\u30fc\u306e\u5b9f\u88c5\u4f8b\nUCLASS()\nclass MYGAME_API ACustomActor : public AActor\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\n    ACustomActor();\n\n    UPROPERTY(VisibleAnywhere)\n    UStaticMeshComponent* MeshComponent;\n\n    UPROPERTY(EditAnywhere, Category = \"Movement\")\n    float MovementSpeed = 100.0f;\n\n    \/\/ \u30ab\u30b9\u30bf\u30e0\u30a4\u30d9\u30f3\u30c8\n    UFUNCTION(BlueprintCallable, Category = \"Actions\")\n    void CustomAction();\n\nprotected:\n    virtual void BeginPlay() override;\n    virtual void Tick(float DeltaTime) override;\n\nprivate:\n    FVector InitialLocation;\n};\n\n\/\/ \u5b9f\u88c5\nACustomActor::ACustomActor()\n{\n    PrimaryActorTick.bCanEverTick = true;\n\n    \/\/ \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f5c\u6210\u3068\u8a2d\u5b9a\n    MeshComponent = CreateDefaultSubobject&lt;UStaticMeshComponent&gt;(TEXT(\"MeshComponent\"));\n    RootComponent = MeshComponent;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5b9f\u88c5\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass MYGAME_API UCustomComponent : public UActorComponent\n{\n    GENERATED_BODY()\n\npublic:\n    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = \"Stats\")\n    float Health = 100.0f;\n\n    UFUNCTION(BlueprintCallable, Category = \"Damage\")\n    void ApplyDamage(float DamageAmount);\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u30b2\u30fc\u30e0\u30d7\u30ec\u30a4\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6d3b\u7528\u8853<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b2\u30fc\u30e0\u30d7\u30ec\u30a4\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u305f\u3081\u306e\u4e3b\u8981\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GameMode \u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">UCLASS()\nclass MYGAME_API ACustomGameMode : public AGameModeBase\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30b2\u30fc\u30e0\u72b6\u614b\u306e\u7ba1\u7406\n    UFUNCTION(BlueprintCallable)\n    void StartNewRound();\n\n    UPROPERTY(EditDefaultsOnly, Category = \"Game Rules\")\n    int32 MaxPlayers = 4;\n\nprotected:\n    virtual void BeginPlay() override;\n\n    \/\/ \u30ab\u30b9\u30bf\u30e0\u30b2\u30fc\u30e0\u30eb\u30fc\u30eb\u306e\u5b9f\u88c5\n    UFUNCTION()\n    void HandleMatchStart();\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>PlayerController \u306e\u62e1\u5f35\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">UCLASS()\nclass MYGAME_API ACustomPlayerController : public APlayerController\n{\n    GENERATED_BODY()\n\nprotected:\n    \/\/ \u5165\u529b\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u306e\u8a2d\u5b9a\n    virtual void SetupInputComponent() override;\n\n    \/\/ \u30ab\u30b9\u30bf\u30e0\u5165\u529b\u51e6\u7406\n    void HandleCustomAction();\n\n    \/\/ \u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a\n    UFUNCTION(Server, Reliable)\n    void ServerCustomAction();\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u30e1\u30e2\u30ea\u7ba1\u7406\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u79d8\u8a23<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b9\u30de\u30fc\u30c8\u30dd\u30a4\u30f3\u30bf\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u9632\u6b62\u306e\u305f\u3081\u306e\u30b9\u30de\u30fc\u30c8\u30dd\u30a4\u30f3\u30bf\u4f7f\u7528\u4f8b\nTSharedPtr&lt;FCustomData&gt; DataPtr;\nTUniquePtr&lt;FCustomResource&gt; ResourcePtr;\n\n\/\/ \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30d7\u30fc\u30eb\u306e\u5b9f\u88c5\nUPROPERTY()\nTArray&lt;ACustomActor*&gt; ActorPool;\n\n\/\/ \u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u30b3\u30f3\u30c6\u30ca\u4f7f\u7528\nTArray&lt;FCustomStruct, TInlineAllocator&lt;8&gt;&gt; SmallArray;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\uff1a<\/li>\n<\/ol>\n\n\n<div id=\"id-569018e3-4a7a-4292-872d-ed07048fd03f\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6700\u9069\u5316\u30dd\u30a4\u30f3\u30c8<\/th><th>\u5b9f\u88c5\u65b9\u6cd5<\/th><th>\u52b9\u679c<\/th><\/tr><\/thead><tbody><tr><td>\u30e1\u30e2\u30ea\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><td>\u30d7\u30fc\u30eb\u306e\u4f7f\u7528<\/td><td>\u30d5\u30e9\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u9632\u6b62<\/td><\/tr><tr><td>\u30ad\u30e3\u30c3\u30b7\u30e5\u6d3b\u7528<\/td><td>\u30c7\u30fc\u30bf\u306e\u5c40\u6240\u6027\u5411\u4e0a<\/td><td>\u30a2\u30af\u30bb\u30b9\u901f\u5ea6\u5411\u4e0a<\/td><\/tr><tr><td>\u975e\u540c\u671f\u51e6\u7406<\/td><td>AsyncTask \u306e\u6d3b\u7528<\/td><td>\u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u8ca0\u8377\u8efd\u6e1b<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b\nvoid ACustomActor::HandleHeavyTask()\n{\n    AsyncTask(ENamedThreads::AnyBackgroundHiPriTask, []()\n    {\n        \/\/ \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u51e6\u7406\n        \/\/ ...\n\n        \/\/ \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u3067\u306e\u51e6\u7406\n        AsyncTask(ENamedThreads::GameThread, []()\n        {\n            \/\/ UI\u66f4\u65b0\u306a\u3069\n        });\n    });\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u8981\u306a\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30a3\u30c3\u30af\u95a2\u6570\u306e\u6700\u9069\u5316\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void ACustomActor::Tick(float DeltaTime)\n{\n    Super::Tick(DeltaTime);\n\n    \/\/ \u5fc5\u8981\u306a\u6642\u3060\u3051\u30c6\u30a3\u30c3\u30af\u3092\u6709\u52b9\u306b\u3059\u308b\n    if (!bNeedsTick)\n    {\n        SetActorTickEnabled(false);\n        return;\n    }\n\n    \/\/ \u8ddd\u96e2\u306b\u57fa\u3065\u304f\u30c6\u30a3\u30c3\u30af\u983b\u5ea6\u306e\u8abf\u6574\n    if (GetDistanceToPlayer() &gt; FarDistance)\n    {\n        PrimaryActorTick.TickInterval = 0.5f;\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u5b9f\u8df5\u7684\u306a\u624b\u6cd5\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u304b\u3064\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u9ad8\u3044Unreal C++\u958b\u767a\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u624b\u6cd5\u3068\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u52b9\u679c\u7684\u306a\u958b\u767a\u6226\u7565\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">C++\u3068\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u306e\u52b9\u679c\u7684\u306a\u4f75\u7528\u6226\u7565<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u305d\u308c\u305e\u308c\u306e\u7279\u5fb4\u3092\u8003\u616e\u3057\u305f\u6d3b\u7528\u306e\u30b3\u30c4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">C++\u3068\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u306e\u4f7f\u3044\u5206\u3051\u306e\u57fa\u672c\u539f\u5247\uff1a<\/p>\n\n\n<div id=\"id-fcbe656d-c899-4e90-9a83-e01d301ea11f\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6a5f\u80fd<\/th><th>\u63a8\u5968\u3059\u308b\u5b9f\u88c5\u65b9\u6cd5<\/th><th>\u7406\u7531<\/th><\/tr><\/thead><tbody><tr><td>\u30b3\u30a2\u30b7\u30b9\u30c6\u30e0<\/td><td>C++<\/td><td>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4fdd\u5b88\u6027\u306e\u78ba\u4fdd<\/td><\/tr><tr><td>UI\u64cd\u4f5c<\/td><td>\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8<\/td><td>\u8fc5\u901f\u306a\u958b\u767a\u3068\u8996\u899a\u7684\u306a\u8abf\u6574<\/td><\/tr><tr><td>\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u5236\u5fa1<\/td><td>\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8<\/td><td>\u76f4\u611f\u7684\u306a\u5236\u5fa1\u3068\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8\u5bfe\u5fdc<\/td><\/tr><tr><td>\u6570\u5024\u8a08\u7b97\u51e6\u7406<\/td><td>C++<\/td><td>\u51e6\u7406\u901f\u5ea6\u306e\u6700\u9069\u5316<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u88c5\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ C++\u5074\u3067\u306e\u57fa\u672c\u6a5f\u80fd\u306e\u5b9f\u88c5\nUCLASS(Blueprintable)\nclass MYGAME_API AHybridCharacter : public ACharacter\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u304b\u3089\u547c\u3073\u51fa\u3057\u53ef\u80fd\u306a\u95a2\u6570\n    UFUNCTION(BlueprintCallable, Category = \"Character\")\n    float CalculateDamage(float BaseAmount, float Multiplier);\n\n    \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3067\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u53ef\u80fd\u306a\u30a4\u30d9\u30f3\u30c8\n    UFUNCTION(BlueprintNativeEvent, Category = \"Character\")\n    void OnDamageReceived(float Amount);\n    virtual void OnDamageReceived_Implementation(float Amount);\n\n    \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u304b\u3089\u76e3\u8996\u53ef\u80fd\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\n    UPROPERTY(BlueprintReadWrite, Category = \"Stats\")\n    float Health;\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">C++\u304b\u3089\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3092\u64cd\u4f5c\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u53d6\u5f97\u3068\u64cd\u4f5c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u30af\u30e9\u30b9\u306e\u53c2\u7167\nUPROPERTY(EditDefaultsOnly, Category = \"Blueprint References\")\nTSubclassOf&lt;UUserWidget&gt; WidgetClass;\n\n\/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e\u751f\u6210\u3068\u8868\u793a\nvoid AGameController::ShowWidget()\n{\n    if (WidgetClass)\n    {\n        UUserWidget* Widget = CreateWidget&lt;UUserWidget&gt;(GetWorld(), WidgetClass);\n        Widget-&gt;AddToViewport();\n\n        \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u95a2\u6570\u306e\u547c\u3073\u51fa\u3057\n        if (UFunction* Func = Widget-&gt;FindFunction(TEXT(\"OnWidgetShown\")))\n        {\n            Widget-&gt;ProcessEvent(Func, nullptr);\n        }\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30a4\u30d9\u30f3\u30c8\u30c7\u30a3\u30b9\u30d1\u30c3\u30c1\u30e3\u30fc\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ C++\u5074\u3067\u306e\u30a4\u30d9\u30f3\u30c8\u5b9a\u7fa9\nDECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHealthChanged, float, NewHealth);\n\nUCLASS()\nclass MYGAME_API AHealthComponent : public UActorComponent\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3067\u30d0\u30a4\u30f3\u30c9\u53ef\u80fd\u306a\u30a4\u30d9\u30f3\u30c8\n    UPROPERTY(BlueprintAssignable, Category = \"Events\")\n    FOnHealthChanged OnHealthChanged;\n\n    \/\/ \u30a4\u30d9\u30f3\u30c8\u767a\u706b\n    void UpdateHealth(float NewValue)\n    {\n        Health = NewValue;\n        OnHealthChanged.Broadcast(Health);\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u958b\u767a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ C++\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u5b9a\u7fa9\nUINTERFACE(MinimalAPI, Blueprintable)\nclass UInteractableInterface : public UInterface\n{\n    GENERATED_BODY()\n};\n\nclass IInteractableInterface\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3067\u5b9f\u88c5\u53ef\u80fd\u306a\u7d14\u7c8b\u4eee\u60f3\u95a2\u6570\n    UFUNCTION(BlueprintNativeEvent, Category = \"Interaction\")\n    void OnInteract(AActor* Interactor);\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\uff1a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3067\u306e\u91cd\u3044\u51e6\u7406\u3092\u7279\u5b9a<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u6a5f\u80fd\u306e\u5b9f\u88c5\nUCLASS()\nclass MYGAME_API UPerformanceMonitor : public UObject\n{\n    GENERATED_BODY()\n\npublic:\n    UFUNCTION(BlueprintCallable, Category = \"Performance\")\n    static void StartMonitoring(const FString&amp; SectionName)\n    {\n        SCOPE_CYCLE_COUNTER(STAT_BlueprintPerformance);\n        \/\/ \u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u51e6\u7406\n    }\n};<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u4fdd\u5b88\u6027\u3092\u8003\u616e\u3057\u305f\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u30d1\u30bf\u30fc\u30f3\u306e\u5b9f\u88c5\u4f8b\nUCLASS()\nclass MYGAME_API AActorFactory : public AActor\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ C++\u3067\u57fa\u672c\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\n    UFUNCTION(BlueprintCallable, Category = \"Factory\")\n    AActor* CreateActor(TSubclassOf&lt;AActor&gt; ActorClass);\n\n    \/\/ \u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u306a\u51e6\u7406\n    UFUNCTION(BlueprintImplementableEvent, Category = \"Factory\")\n    void OnActorCreated(AActor* NewActor);\n};<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u958b\u767a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u5b9f\u8df5\u7684\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c1\u30fc\u30e0\u69cb\u6210\u306b\u5fdc\u3058\u305f\u5f79\u5272\u5206\u62c5<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b0\u30e9\u30de\u30fc: \u30b3\u30a2\u30b7\u30b9\u30c6\u30e0\u306eC++\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30c7\u30b6\u30a4\u30ca\u30fc: \u30b2\u30fc\u30e0\u30d7\u30ec\u30a4\u30ed\u30b8\u30c3\u30af\u306e\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u52b9\u7387\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C++\u30b3\u30fc\u30c9\u3068\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u306e\u5909\u66f4\u3092\u5206\u96e2<\/li>\n\n\n\n<li>\u30de\u30fc\u30b8\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u306e\u6700\u5c0f\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30c3\u30b0\u6226\u7565<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C++\u5074\u3067\u306e\u30ed\u30b0\u51fa\u529b\u6a5f\u80fd\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30d6\u30eb\u30fc\u30d7\u30ea\u30f3\u30c8\u5074\u3067\u306e\u8996\u899a\u7684\u30c7\u30d0\u30c3\u30b0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u4f75\u7528\u6226\u7565\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u52b9\u7387\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u4e21\u7acb\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u5177\u4f53\u7684\u306a\u958b\u767a\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">\u5b9f\u8df5\u7684\u306aUnreal C++\u958b\u767a\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u30c7\u30d0\u30c3\u30b0\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u5b9f\u8df5\u624b\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u9ad8\u5ea6\u306a\u30c7\u30d0\u30c3\u30b0\u6a5f\u80fd\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30ed\u30b0\u30ab\u30c6\u30b4\u30ea\u306e\u5b9a\u7fa9\nDECLARE_LOG_CATEGORY_EXTERN(LogCustomGame, Log, All);\nDEFINE_LOG_CATEGORY(LogCustomGame);\n\n\/\/ \u30c7\u30d0\u30c3\u30b0\u6a5f\u80fd\u3092\u6301\u3064\u30d9\u30fc\u30b9\u30af\u30e9\u30b9\nUCLASS()\nclass MYGAME_API ADebuggableActor : public AActor\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u6761\u4ef6\u4ed8\u304d\u30c7\u30d0\u30c3\u30b0\u8868\u793a\n    void DEBUG_ShowInfo()\n    {\n        #if WITH_EDITOR || UE_BUILD_DEBUG\n            const FString DebugMsg = FString::Printf(TEXT(\"Actor: %s, State: %s\"), \n                *GetName(), *CurrentState.ToString());\n            GEngine-&gt;AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, DebugMsg);\n\n            UE_LOG(LogCustomGame, Warning, TEXT(\"%s\"), *DebugMsg);\n        #endif\n    }\n\n    \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u8ffd\u8de1\n    void TrackMemoryUsage()\n    {\n        #if UE_BUILD_DEBUG\n            FPlatformMemory::DumpStats();\n        #endif\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30af\u30e9\u30c3\u30b7\u30e5\u89e3\u6790\u30c4\u30fc\u30eb\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30af\u30e9\u30c3\u30b7\u30e5\u30ec\u30dd\u30fc\u30c8\u6a5f\u80fd\nvoid UCrashAnalyzer::HandleCrash()\n{\n    \/\/ \u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u306e\u53d6\u5f97\n    const SIZE_T StackTraceSize = 65535;\n    ANSICHAR* StackTrace = (ANSICHAR*)FMemory::Malloc(StackTraceSize);\n    FPlatformStackWalk::StackWalkAndDump(StackTrace, StackTraceSize, 0);\n\n    \/\/ \u30af\u30e9\u30c3\u30b7\u30e5\u60c5\u5831\u306e\u8a18\u9332\n    UE_LOG(LogCustomGame, Error, TEXT(\"Crash detected:\\n%s\"), ANSI_TO_TCHAR(StackTrace));\n    FMemory::Free(StackTrace);\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30de\u30eb\u30c1\u30d7\u30ec\u30a4\u30e4\u30fc\u6a5f\u80fd\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u672c\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">UCLASS()\nclass MYGAME_API ANetworkedActor : public AActor\n{\n    GENERATED_BODY()\n\npublic:\n    ANetworkedActor()\n    {\n        bReplicates = true;\n        bAlwaysRelevant = true;\n    }\n\n    \/\/ \u30ec\u30d7\u30ea\u30b1\u30fc\u30c8\u5909\u6570\n    UPROPERTY(Replicated)\n    float ReplicatedValue;\n\n    \/\/ \u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u6761\u4ef6\u306e\u8a2d\u5b9a\n    virtual void GetLifetimeReplicatedProps(TArray&lt;FLifetimeProperty&gt;&amp; OutLifetimeProps) const override\n    {\n        Super::GetLifetimeReplicatedProps(OutLifetimeProps);\n\n        DOREPLIFETIME(ANetworkedActor, ReplicatedValue);\n        DOREPLIFETIME_CONDITION(ANetworkedActor, ConditionalValue, COND_OwnerOnly);\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>RPC\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">UCLASS()\nclass MYGAME_API ANetworkCharacter : public ACharacter\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30b5\u30fc\u30d0\u30fcRPC\n    UFUNCTION(Server, Reliable)\n    void ServerPerformAction();\n\n    \/\/ \u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8RPC\n    UFUNCTION(NetMulticast, Reliable)\n    void MulticastNotifyAction();\n\n    \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8RPC\n    UFUNCTION(Client, Reliable)\n    void ClientReceiveUpdate(const FGameState&amp; NewState);\n\nprotected:\n    void ServerPerformAction_Implementation()\n    {\n        \/\/ \u30b5\u30fc\u30d0\u30fc\u5074\u306e\u51e6\u7406\n        if (HasAuthority())\n        {\n            \/\/ \u30a2\u30af\u30b7\u30e7\u30f3\u5b9f\u884c\n            MulticastNotifyAction();\n        }\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u5177\u4f53\u7684\u306a\u624b\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u6700\u9069\u5316\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30a2\u30ed\u30b1\u30fc\u30bf\u306e\u5b9f\u88c5\nclass FCustomAllocator : public FMalloc\n{\npublic:\n    virtual void* Malloc(SIZE_T Size, uint32 Alignment) override\n    {\n        \/\/ \u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u304b\u3089\u306e\u5272\u308a\u5f53\u3066\n        return MemoryPool.Allocate(Size, Alignment);\n    }\n\n    virtual void Free(void* Ptr) override\n    {\n        \/\/ \u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u3078\u306e\u8fd4\u5374\n        MemoryPool.Deallocate(Ptr);\n    }\n\nprivate:\n    FMemoryPool MemoryPool;\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u7528\u30de\u30af\u30ed\n#define SCOPE_PERFORMANCE_LOG(ScopeName) \\\n    FScopedDurationTimer ScopedTimer([](float Duration) { \\\n        UE_LOG(LogCustomGame, Log, TEXT(\"%s took %f seconds\"), TEXT(ScopeName), Duration); \\\n    });\n\n\/\/ \u4f7f\u7528\u4f8b\nvoid APerformanceCriticalActor::HeavyOperation()\n{\n    SCOPE_PERFORMANCE_LOG(\"HeavyOperation\");\n\n    \/\/ \u51e6\u7406\u5185\u5bb9\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u306e\u6700\u9069\u5316\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\nvoid UAsyncProcessor::ProcessLargeData()\n{\n    AsyncTask(ENamedThreads::AnyBackgroundHiPriTask, [this]()\n    {\n        \/\/ \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u51e6\u7406\n        FPlatformProcess::Sleep(0.001f); \/\/ \u30b9\u30ec\u30c3\u30c9\u5360\u6709\u9632\u6b62\n\n        \/\/ \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u3067\u306e\u66f4\u65b0\n        AsyncTask(ENamedThreads::GameThread, [this]()\n        {\n            OnProcessingComplete.Broadcast();\n        });\n    });\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u9069\u5316\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u524a\u6e1b<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30d7\u30fc\u30ea\u30f3\u30b0<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u30d5\u30e9\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u5bfe\u7b56<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u8aad\u307f\u8fbc\u307f\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CPU\u8ca0\u8377\u306e\u8efd\u6e1b<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30a3\u30c3\u30af\u983b\u5ea6\u306e\u8abf\u6574<\/li>\n\n\n\n<li>\u6761\u4ef6\u4ed8\u304d\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u983b\u5ea6\u306e\u8abf\u6574<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u5727\u7e2e<\/li>\n\n\n\n<li>\u512a\u5148\u5ea6\u4ed8\u3051\u3055\u308c\u305f\u66f4\u65b0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u958b\u767a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u9ad8\u54c1\u8cea\u3067\u5b89\u5b9a\u3057\u305f\u30b2\u30fc\u30e0\u958b\u767a\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u52d9\u3067\u306e\u5177\u4f53\u7684\u306a\u6d3b\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-16\">\u73fe\u5834\u3067\u6d3b\u304d\u308bUnreal C++\u958b\u767a\u306e\u305f\u3081\u306e\u30d2\u30f3\u30c8<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u898f\u6a21\u3067\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u306e\u6d3b\u7528<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30d3\u30b9\u30ed\u30b1\u30fc\u30bf\u30fc\u30d1\u30bf\u30fc\u30f3\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b2\u30fc\u30e0\u30b5\u30fc\u30d3\u30b9\u306e\u7ba1\u7406\nUCLASS()\nclass MYGAME_API UGameServiceLocator : public UGameInstanceSubsystem\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30b5\u30fc\u30d3\u30b9\u306e\u767b\u9332\n    template&lt;typename T&gt;\n    void RegisterService(TScriptInterface&lt;T&gt; Service)\n    {\n        Services.Add(T::StaticClass(), Service);\n    }\n\n    \/\/ \u30b5\u30fc\u30d3\u30b9\u306e\u53d6\u5f97\n    template&lt;typename T&gt;\n    TScriptInterface&lt;T&gt; GetService()\n    {\n        return Services.FindRef(T::StaticClass());\n    }\n\nprivate:\n    TMap&lt;UClass*, TScriptInterface&lt;IInterface&gt;&gt; Services;\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b3\u30de\u30f3\u30c9\u30d1\u30bf\u30fc\u30f3\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b3\u30de\u30f3\u30c9\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\nUINTERFACE()\nclass UGameCommand : public UInterface\n{\n    GENERATED_BODY()\n};\n\nclass IGameCommand\n{\n    GENERATED_BODY()\n\npublic:\n    virtual void Execute() = 0;\n    virtual void Undo() = 0;\n};\n\n\/\/ \u30b3\u30de\u30f3\u30c9\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\nUCLASS()\nclass MYGAME_API UCommandManager : public UObject\n{\n    GENERATED_BODY()\n\npublic:\n    void ExecuteCommand(TScriptInterface&lt;IGameCommand&gt; Command)\n    {\n        Command-&gt;Execute();\n        CommandHistory.Add(Command);\n    }\n\n    void UndoLastCommand()\n    {\n        if (CommandHistory.Num() &gt; 0)\n        {\n            auto LastCommand = CommandHistory.Pop();\n            LastCommand-&gt;Undo();\n        }\n    }\n\nprivate:\n    TArray&lt;TScriptInterface&lt;IGameCommand&gt;&gt; CommandHistory;\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30b3\u30fc\u30c9\u54c1\u8cea\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5358\u4f53\u30c6\u30b9\u30c8\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306e\u4f8b\nIMPLEMENT_SIMPLE_AUTOMATION_TEST(FMathUtilsTest, \"MathUtils.BasicOperations\", EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::ProductFilter)\n\nbool FMathUtilsTest::RunTest(const FString&amp; Parameters)\n{\n    \/\/ \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\n    UMathUtils* MathUtils = NewObject&lt;UMathUtils&gt;();\n\n    TestEqual(\"Addition Test\", MathUtils-&gt;Add(2, 3), 5);\n    TestEqual(\"Multiplication Test\", MathUtils-&gt;Multiply(4, 3), 12);\n\n    return true;\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff1a<\/li>\n<\/ol>\n\n\n<div id=\"id-94a441cc-df19-4deb-81b4-67fa3bf5038f\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9805\u76ee<\/th><th>\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8<\/th><th>\u91cd\u8981\u5ea6<\/th><\/tr><\/thead><tbody><tr><td>\u547d\u540d\u898f\u5247<\/td><td>Unreal\u306e\u547d\u540d\u898f\u5247\u306b\u6e96\u62e0<\/td><td>\u9ad8<\/td><\/tr><tr><td>SOLID\u539f\u5247<\/td><td>\u5358\u4e00\u8cac\u4efb\u306e\u539f\u5247\u3092\u9075\u5b88<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/td><td>\u91cd\u3044\u51e6\u7406\u306e\u6700\u9069\u5316<\/td><td>\u4e2d<\/td><\/tr><tr><td>\u30e1\u30e2\u30ea\u7ba1\u7406<\/td><td>\u30ea\u30bd\u30fc\u30b9\u30ea\u30fc\u30af\u306e\u9632\u6b62<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/td><td>\u30b3\u30e1\u30f3\u30c8\u306e\u9069\u5207\u306a\u8a18\u8ff0<\/td><td>\u4e2d<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u9759\u7684\u89e3\u6790\u306e\u6d3b\u7528\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u9759\u7684\u89e3\u6790\u306e\u305f\u3081\u306e\u5c5e\u6027\nUCLASS(meta=(DeprecatedFunction))\nclass MYGAME_API ULegacyClass : public UObject\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u975e\u63a8\u5968\u95a2\u6570\u306e\u660e\u793a\n    UFUNCTION(meta=(DeprecatedFunction, DeprecationMessage=\"Use NewFunction instead\"))\n    void OldFunction();\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u5b9f\u52d9\u3067\u4f7f\u3048\u308b\u4fbf\u5229\u306a\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u30c4\u30fc\u30eb<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a8\u30c7\u30a3\u30bf\u62e1\u5f35\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30b9\u30bf\u30e0\u30a8\u30c7\u30a3\u30bf\u30c4\u30fc\u30eb\nUCLASS()\nclass MYGAME_API UCustomEditorTool : public UEditorUtilityWidget\n{\n    GENERATED_BODY()\n\npublic:\n    UFUNCTION(BlueprintCallable, Category = \"Editor Tools\")\n    void BatchProcessAssets()\n    {\n        \/\/ \u30a2\u30bb\u30c3\u30c8\u4e00\u62ec\u51e6\u7406\n        FAssetRegistryModule&amp; AssetRegistryModule = \n            FModuleManager::LoadModuleChecked&lt;FAssetRegistryModule&gt;(\"AssetRegistry\");\n\n        \/\/ \u30a2\u30bb\u30c3\u30c8\u306e\u691c\u7d22\u3068\u51e6\u7406\n        TArray&lt;FAssetData&gt; AssetList;\n        AssetRegistryModule.Get().GetAssetsByClass(\n            UStaticMesh::StaticClass()-&gt;GetFName(), AssetList);\n\n        for (const FAssetData&amp; Asset : AssetList)\n        {\n            ProcessAsset(Asset);\n        }\n    }\n};<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30c7\u30d0\u30c3\u30b0\u652f\u63f4\u30c4\u30fc\u30eb\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b2\u30fc\u30e0\u5185\u30c7\u30d0\u30c3\u30b0\u30b3\u30f3\u30bd\u30fc\u30eb\nUCLASS()\nclass MYGAME_API UDebugConsole : public UObject\n{\n    GENERATED_BODY()\n\npublic:\n    \/\/ \u30b3\u30de\u30f3\u30c9\u767b\u9332\n    void RegisterCommand(const FString&amp; Command, const FDebugCommandDelegate&amp; Delegate)\n    {\n        Commands.Add(Command, Delegate);\n    }\n\n    \/\/ \u30b3\u30de\u30f3\u30c9\u5b9f\u884c\n    void ExecuteCommand(const FString&amp; CommandLine)\n    {\n        FString Command;\n        FString Parameters;\n        CommandLine.Split(TEXT(\" \"), &amp;Command, &amp;Parameters);\n\n        if (auto Delegate = Commands.Find(Command))\n        {\n            Delegate-&gt;Execute(Parameters);\n        }\n    }\n\nprivate:\n    TMap&lt;FString, FDebugCommandDelegate&gt; Commands;\n};<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u52d9\u3067\u306e\u52b9\u7387\u5316\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u6d3b\u7528<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u983b\u51fa\u30d1\u30bf\u30fc\u30f3\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316<\/li>\n\n\n\n<li>\u30ab\u30b9\u30bf\u30e0\u30af\u30e9\u30b9\u30a6\u30a3\u30b6\u30fc\u30c9\u306e\u4f5c\u6210<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u81ea\u52d5\u5316<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c1\u30fc\u30e0\u958b\u767a\u306e\u52b9\u7387\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04\u306e\u81ea\u52d5\u30c1\u30a7\u30c3\u30af<\/li>\n\n\n\n<li>\u30ec\u30d3\u30e5\u30fc\u30d7\u30ed\u30bb\u30b9\u306e\u6a19\u6e96\u5316<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3089\u306e\u5b9f\u52d9\u7684\u306a\u30d2\u30f3\u30c8\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u54c1\u8cea\u3068\u958b\u767a\u52b9\u7387\u3092\u5927\u304d\u304f\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1755","post","type-post","status-publish","format-standard","category-cpp","nothumb"],"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1755"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1755\/revisions"}],"predecessor-version":[{"id":1756,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1755\/revisions\/1756"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}