<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>느긋한 주인장</title>
    <link>https://intunknown.tistory.com/</link>
    <description>주로 it관련 글을 작성하며 리뷰도 하고 잡다한 것들을 올립니다.(gain_time@naver.com)</description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 11:15:07 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>추향</managingEditor>
    <image>
      <title>느긋한 주인장</title>
      <url>https://tistory1.daumcdn.net/tistory/2743368/attach/2009a079228448b79a4a2d9b6cd642da</url>
      <link>https://intunknown.tistory.com</link>
    </image>
    <item>
      <title>Unreal FOverlapResult</title>
      <link>https://intunknown.tistory.com/entry/Unreal-FOverlapResult</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;FOverlapResult&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FOverlapResult는 언리얼엔진에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Overlap검사 결과를 담는 구조체&lt;/b&gt;&lt;/span&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OverlapMultiByChannel이나 OverlapMultiByObjectType 같은 함수를 호출했을 때, &quot;어떤 액터/컴포넌트와 겹쳤는지&quot;에 대한 정보를 담아주는 타입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crYhZR/dJMcaibclWI/leFLHd7YqwJLDKRZinvmI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crYhZR/dJMcaibclWI/leFLHd7YqwJLDKRZinvmI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crYhZR/dJMcaibclWI/leFLHd7YqwJLDKRZinvmI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrYhZR%2FdJMcaibclWI%2FleFLHd7YqwJLDKRZinvmI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;235&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;UE 5.4&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전에는 그냥 써도 됐었던 거 같은데 빌드할 때 오류가 있길래 보니까 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;5.4부터는 FOverlapResult를 사용하기 위해서는 Include를 따로 해줘야 하는 것 같더라고요.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770883379446&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;Engine/OverlapResult.h&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찾아보니까 CollisionQueryResult.h안에 정의되어 있어서 다른 충돌 관련 헤더를 Include 하면 자연스럽게 따라왔는데 5.4부터 바뀌었다고 하네요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;사용방법.&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770883818361&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;Engine/OverlapResult.h&quot;

//예시.
void func(){
	const FVector SelfLoc = GetActorLocation();
	FCollisionShape Shape = FCollisionShape::MakeSphere(Radius);
	FCollisionQueryParams Params;
	Params.AddIgnoredActor(this);
	TArray&amp;lt;FOverlapResult&amp;gt; Hits;
	DrawDebugSphere(GetWorld(), SelfLoc,Radius,30,FColor::Red,false,1);
	bool bAny = GetWorld()-&amp;gt;OverlapMultiByChannel(Hits,SelfLoc,FQuat::Identity,ECC_Pawn,Shape,Params);
	if (!bAny)return nullptr;
	for (const FOverlapResult&amp;amp; Hit : Hits) {
		AActor* Other = Hit.GetActor(); 
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>Overlap</category>
      <category>UE</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/708</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-FOverlapResult#entry708comment</comments>
      <pubDate>Thu, 12 Feb 2026 17:14:10 +0900</pubDate>
    </item>
    <item>
      <title>이벤트 뷰어를 이용해 시스템 비정상 종료 원인 찾기</title>
      <link>https://intunknown.tistory.com/entry/%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%B7%B0%EC%96%B4%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B9%84%EC%A0%95%EC%83%81-%EC%A2%85%EB%A3%8C-%EC%9B%90%EC%9D%B8-%EC%B0%BE%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7bSN/dJMcafkA1fb/67uB0KQyueY4tdKNssWzh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7bSN/dJMcafkA1fb/67uB0KQyueY4tdKNssWzh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7bSN/dJMcafkA1fb/67uB0KQyueY4tdKNssWzh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7bSN%2FdJMcafkA1fb%2F67uB0KQyueY4tdKNssWzh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 서브컴퓨터가 이유없이 꺼지는 일이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 게임을 트레이로 오래 켜놓았을 때 꺼져서, 처음엔 그래픽 드라이버 충돌로 인한 종료라고 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 드라이버를 재설치해봤지만, 증상은 여전 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글은 이 오류를 해결한 과정을 기록한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직까지 증상이 발생되지 않는걸로 보아, 일단은 해결된 것으로 보인다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;윈도우 이벤트 뷰어.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확한 종료 원인을 찾아보기 위해 이벤트 뷰어를 사용해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;win키 + R을 누르면 나오는 실행창에 eventvwr.msc를 입력하면 이벤트 뷰어를 실행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 뷰어에서 Windows로그-&amp;gt;시스템으로 들어가면 각종 시스템 이벤트를 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C9tD2/dJMcai9sG3o/yDwREXKzXyuPRvF91r6FWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C9tD2/dJMcai9sG3o/yDwREXKzXyuPRvF91r6FWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C9tD2/dJMcai9sG3o/yDwREXKzXyuPRvF91r6FWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC9tD2%2FdJMcai9sG3o%2FyDwREXKzXyuPRvF91r6FWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;394&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;832&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러가지 시스템 이벤트들이 보이는데 컴퓨터가 갑자기 꺼지는 정도의 이벤트는 &quot;위험&quot;이나 &quot;오류&quot; 정도의 수준으로 기록되기 때문에 &quot;현재 로그 필터링&quot;을 사용해서 한번 걸러냈다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAPffR/dJMcadUCoeL/0k62gGCO82dgYzTu2V8KDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAPffR/dJMcadUCoeL/0k62gGCO82dgYzTu2V8KDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAPffR/dJMcadUCoeL/0k62gGCO82dgYzTu2V8KDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAPffR%2FdJMcadUCoeL%2F0k62gGCO82dgYzTu2V8KDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;609&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번 걸러내고 보니 여러가지가 오류들이 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 달 사이에 약 3번정도 강제종료가 됐는데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 사이에 보인 주요 이벤트 ID는 16, 10010, 1796, 20, 38, 41, 6008, 161,162 등이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 오류들이 많았는데 이 부분은 잘 모르는 내용이라 GPT에게 물어봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인해본 결과, 컴퓨터 종료에 대한 내용은 41, 6008이었고 꺼지기 직전의 로그들을 살펴봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;161,162가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;161 : 장치 전원 관리나 하드웨어 절전 관련 오류.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;162 : 시스템이 절전 모드로 진입 실패.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 내용이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 게임을 트레이모드로 켜놓은 상태에서 절전모드로 들어갔던 것이 원인이 되었을 수 있겠다는 생각이 들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bULPtp/dJMcacIaQ9D/Cu3hjEpAJkxyXz0cGkVeGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bULPtp/dJMcacIaQ9D/Cu3hjEpAJkxyXz0cGkVeGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bULPtp/dJMcacIaQ9D/Cu3hjEpAJkxyXz0cGkVeGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbULPtp%2FdJMcacIaQ9D%2FCu3hjEpAJkxyXz0cGkVeGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;323&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 제어판-&amp;gt; 전원 옵션-&amp;gt; 고급옵션에서 절전에 관한 내용을 확인해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 절전관련된 내용들이 있었고, 이 부분들을 모두 꺼줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 이 부분은 잘 모르는 내용이라 GPT에 찾아가며 해결했고, 사실 이것때문에 해결된건지도 잘 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 벌써 3일째 컴퓨터가 꺼지지 않고 있는 것으로 보아 절전이 문제의 원인이었을 가능성이 높아보인다.&lt;/p&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>강제종료</category>
      <category>문제</category>
      <category>이벤트뷰어</category>
      <category>절전문제</category>
      <category>해결</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/705</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%B7%B0%EC%96%B4%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B9%84%EC%A0%95%EC%83%81-%EC%A2%85%EB%A3%8C-%EC%9B%90%EC%9D%B8-%EC%B0%BE%EA%B8%B0#entry705comment</comments>
      <pubDate>Mon, 3 Nov 2025 23:12:00 +0900</pubDate>
    </item>
    <item>
      <title>Unreal 로딩 구현하기 cpp</title>
      <link>https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 로딩 구현하기&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 글은 언리얼에서 로딩 화면 구현에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로딩을 구현하는 방법은 여러가지가 있지만 이 글은 그중 한가지를 보여주는 글입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mEibr/btsLtfEVAWR/aYWlBv3PjsIDObcgkP9mD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mEibr/btsLtfEVAWR/aYWlBv3PjsIDObcgkP9mD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mEibr/btsLtfEVAWR/aYWlBv3PjsIDObcgkP9mD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmEibr%2FbtsLtfEVAWR%2FaYWlBv3PjsIDObcgkP9mD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;235&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맵 로드가 시작되기 전에 로딩 화면을 설정하고, 최소 2초 동안 표시되도록 설정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로딩 화면은 LoadingWidget으로 보여지며, 맵이 로드된 후 로딩 화면을 종료합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 로딩 구현하기 cpp &lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UGameInstance는 게임을 종료하거나 맵을 전환할 때도 유지됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 특징으로 인해 맵 전환시에도 필요한 데이터를 유지하거나 로딩 화면을 표시하는 등의 작업에도 좋다고 생각해서 SlashGameInstace를 하나 만들어서 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드들을 사용하기 위해서는 모듈을 추가해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1735009865620&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; &quot;MoviePlayer&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USlashGameInstance.h&lt;/p&gt;
&lt;pre id=&quot;code_1735009719700&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;Engine/GameInstance.h&quot;
#include &quot;SlashGameInstance.generated.h&quot;

class UUserWidget;
/**
 * 
 */
UCLASS()
class SLASH_API USlashGameInstance : public UGameInstance
{
	GENERATED_BODY()
public:
	TSoftObjectPtr&amp;lt;UWorld&amp;gt; GetLevel(FString LevelName);
protected:
	//게임 인스턴스가 처음 생성될 때 호출됨.
	virtual void Init()override;
	UFUNCTION()//맵 로드가 시작되기 전에 로딩화면을 설정.
	void OnPreLoadMap(const FString&amp;amp; PreLoadMap);
	UFUNCTION()//맵이 로드된 후 로딩 화면을 종료.
	void OnDestinatioonWorldLoaded(UWorld* LoadedWorld);
	UPROPERTY(EditDefaultsOnly)
	TSoftClassPtr&amp;lt;UUserWidget&amp;gt; LoadingWidgetClass;

private:
	//String을 키로 사용해서 저장된 Level을 가져옴
	UPROPERTY(EditDefaultsOnly, Category = &quot;Level&quot;)
	TMap&amp;lt;FString, TSoftObjectPtr&amp;lt;UWorld&amp;gt;&amp;gt; MapList;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USlashGameInstance.cpp&lt;/p&gt;
&lt;pre id=&quot;code_1735009744165&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;SlashGameInstance.h&quot;
#include &quot;Blueprint/UserWidget.h&quot;
#include &quot;MoviePlayer.h&quot;

void USlashGameInstance::Init()
{
    Super::Init();
	FCoreUObjectDelegates::PreLoadMap.AddUObject(this,&amp;amp;ThisClass::OnPreLoadMap);
	FCoreUObjectDelegates::PostLoadMapWithWorld.AddUObject(this, &amp;amp;ThisClass::OnDestinatioonWorldLoaded);
}

void USlashGameInstance::OnPreLoadMap(const FString&amp;amp; PreLoadMap)
{
    //위젯 동기적으로 생성.
    const auto LoadingWidget = CreateWidget&amp;lt;UUserWidget&amp;gt;(this, LoadingWidgetClass.LoadSynchronous(), TEXT(&quot;LoadingScreen&quot;));
    TSharedRef&amp;lt;SWidget&amp;gt; LoadingSWidgetPtr = LoadingWidget-&amp;gt;TakeWidget();
    FLoadingScreenAttributes LoadingScreenAttributes;
    LoadingScreenAttributes.bAutoCompleteWhenLoadingCompletes = true;
    //로딩화면 최소 2초 유지.
    LoadingScreenAttributes.MinimumLoadingScreenDisplayTime = 2.f;
    //기본 로딩 위젯
    //LoadingScreenAttributes.WidgetLoadingScreen = FLoadingScreenAttributes::NewTestLoadingScreenWidget();
    LoadingScreenAttributes.WidgetLoadingScreen = LoadingSWidgetPtr;
    //로딩 시작.
    GetMoviePlayer()-&amp;gt;SetupLoadingScreen(LoadingScreenAttributes);
}
void USlashGameInstance::OnDestinatioonWorldLoaded(UWorld* LoadedWorld)
{   //로딩 종료
    GetMoviePlayer()-&amp;gt;StopMovie();
}
TSoftObjectPtr&amp;lt;UWorld&amp;gt; USlashGameInstance::GetLevel(FString LevelName)
{
    //맵 가져오기.
    if (MapList.IsEmpty()) {
        UE_LOG(LogTemp, Warning, TEXT(&quot;Map List Is Null Please Fill&quot;));
        return nullptr;
    }
    return *MapList.Find(LevelName);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;init() : 게임 인스턴스가 처음 생성될 때 호출됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PreLoadMap : 맵 로드가 시작되기 전에 로딩화면을 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PostLoadMapWithWorld : 맵이 로드된 후 로딩 화면을 종료.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;블루프린트(위젯 만들기) + 설정.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적당한 LoadingWidget을 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;없으면 위의 코드에서 그냥 주석처리 해놓은것으로 사용합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOoKHC/btsLvNfDEIh/rgTyqcB9Mqqd8jeC0zPB5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOoKHC/btsLvNfDEIh/rgTyqcB9Mqqd8jeC0zPB5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOoKHC/btsLvNfDEIh/rgTyqcB9Mqqd8jeC0zPB5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOoKHC%2FbtsLvNfDEIh%2FrgTyqcB9Mqqd8jeC0zPB5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;488&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만들어놓은 GameInstance를 블루프린트로 만들어서 로딩위젯 클래스를 넣어줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0rKs8/btsLt3KKTvv/JZTQNy8iu3ksxEQ7K53ybK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0rKs8/btsLt3KKTvv/JZTQNy8iu3ksxEQ7K53ybK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0rKs8/btsLt3KKTvv/JZTQNy8iu3ksxEQ7K53ybK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0rKs8%2FbtsLt3KKTvv%2FJZTQNy8iu3ksxEQ7K53ybK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;488&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임 인스턴스에 코드를 썻으니 이걸 사용하기 위해 Edit-&amp;gt;ProjectSettings-&amp;gt;GameInstance-&amp;gt;BP_SlashGameInstance로 설정해줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;929&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZrStz/btsLv9bHCIH/XsJ24Kqpr7DCkwKKuUcjL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZrStz/btsLv9bHCIH/XsJ24Kqpr7DCkwKKuUcjL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZrStz/btsLv9bHCIH/XsJ24Kqpr7DCkwKKuUcjL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZrStz%2FbtsLv9bHCIH%2FXsJ24Kqpr7DCkwKKuUcjL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;535&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;929&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결과 영상.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드에 적어놓은 FLoadingScreenAttributes::NewTestLoadingScreenWidget()과 LoadingSWidgetPtr을 사용한 경우 모두 들어있는 영상입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;//LoadingScreenAttributes.WidgetLoadingScreen = FLoadingScreenAttributes::NewTestLoadingScreenWidget();&lt;br /&gt;LoadingScreenAttributes.WidgetLoadingScreen = LoadingSWidgetPtr;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/oBn3IHvAtHI&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/oBn3IHvAtHI&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=oBn3IHvAtHI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/biGnhT/hyXOnw2W5M/92gH4YVKkD1SGmqztjDiUk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cUhgUp/hyXSA9jTP8/x0TuzzIbkvXn4E3jHQwHrk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;언리얼 로딩 스크린&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/oBn3IHvAtHI&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>loading</category>
      <category>movieplayer</category>
      <category>unreal</category>
      <category>widget</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/700</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp#entry700comment</comments>
      <pubDate>Tue, 24 Dec 2024 12:25:51 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 위젯 애니메이션 C++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 위젯 애니메이션&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 블루프린트에서 Widget Animation을 만들고 Cpp에서 사용하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v0d1l/btsLnZ2dISh/YAhO732DuFdBqCZ8F27Dwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v0d1l/btsLnZ2dISh/YAhO732DuFdBqCZ8F27Dwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v0d1l/btsLnZ2dISh/YAhO732DuFdBqCZ8F27Dwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv0d1l%2FbtsLnZ2dISh%2FYAhO732DuFdBqCZ8F27Dwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;235&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;위젯 애니메이션 만들기 Blueprint.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 보통 블루프린트에서 위젯과 애니메이션을 먼저 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서는 이렇게 되겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 위젯 만들기 : 애니메이션을 적용할 위젯을 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 애니메이션 만들기 : 애니메이션 작업을 시작하기 위해 빈 애니메이션을 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 위젯 요소 선택하기 : 애니메이션을 적용할 위젯 요소(텍스트, 버튼 등등)를 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 열쇠모양을 누르기 : 이걸 눌러놓으면 Properties가 변경될 때 자동으로 Key를 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 프레임에 Key 추가 : 타임라인에 Key를 추가하여 애니메이션 동작을 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진은 예시로 보여드리는 사진입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초기상태.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Scale : 3배&lt;/li&gt;
&lt;li&gt;Render Opacity : 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;최종상태.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Scale : 1배.&lt;/li&gt;
&lt;li&gt;Render Opacity : 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위젯이 크고 안 보이는 상태로 있다가 점점 작아지고 보이게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1824&quot; data-origin-height=&quot;1187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wIp3a/btsLoIFmJ5q/VGm3uo4gi0KemUJ4jF4Ic1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wIp3a/btsLoIFmJ5q/VGm3uo4gi0KemUJ4jF4Ic1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wIp3a/btsLoIFmJ5q/VGm3uo4gi0KemUJ4jF4Ic1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwIp3a%2FbtsLoIFmJ5q%2FVGm3uo4gi0KemUJ4jF4Ic1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;390&quot; data-origin-width=&quot;1824&quot; data-origin-height=&quot;1187&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;위젯 애니메이션 변수 연결 / 재생 C++&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;위젯 애니메이션 변수 연결&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블루프린트로 만들었던 애니메이션을 C++에서 사용하기 위해 변수를 연결해주겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블루프린트로 만들었던 애니메이션과 이름을 똑같이 해서 UWidgetAnimation을 만들어줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1734512825711&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UPROPERTY(Transient,meta = (BindWidgetAnim))
class UWidgetAnimation* MenuAnim;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 설명하면 이겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transient : 이건 휘발성 데이터, 임시로 사용할거니까 저장 ㄴㄴ.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;meta = (BindWidgetAnim) : 블루프린트에서 만든 애니메이션 중 이름이 같은 걸 자동으로 연결해 줘!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;애니메이션 재생.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PlayAnimation으로 UWidgetAnimation을 불러주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 예시는 Menu를 부르면 위젯 애니메이션이 작동하고, Menu를 사용하는 동안 게임 내 시간이 흐르지 않습니다.)&lt;/p&gt;
&lt;pre id=&quot;code_1734512905090&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void UMenuWidget::NativeConstruct()
{
	Super::NativeConstruct();
	//#include &quot;Animation/WidgetAnimation.h&quot;
	PlayAnimation(MenuAnim);
	if (GetOwningPlayer()) {
	FInputModeUIOnly InputMode;
	GetOwningPlayer()-&amp;gt;SetInputMode(InputMode);
	GetOwningPlayer()-&amp;gt;SetShowMouseCursor(true);
	}
	//#include &quot;Kismet\GameplayStatics.h&quot;
	UGameplayStatics::SetGlobalTimeDilation(GetWorld(), 0.f);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;위젯 애니메이션 실행.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 보여드린 예제를 실행한 영상입니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451738313&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bdpwpf/hyXOpUBNqE/rk5TBkFNgfu4tA27moFf7k/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/cGWSQC/hyXKkmZJbq/JZQD0HDxJN4Ai2Dgo9lmn1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451738313?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>c++</category>
      <category>cpp</category>
      <category>블루프린트</category>
      <category>애니메이션</category>
      <category>언리얼</category>
      <category>위젯</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/699</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C#entry699comment</comments>
      <pubDate>Wed, 18 Dec 2024 17:38:55 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 부서지는 오브젝트</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 부서지는 오브젝트&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼5에서 부서지는 오브젝트를 만드는 방법에 대한 내용입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mYtQH/btsLoKi40xq/tyMockLNKoDSRDv0lAeHOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mYtQH/btsLoKi40xq/tyMockLNKoDSRDv0lAeHOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mYtQH/btsLoKi40xq/tyMockLNKoDSRDv0lAeHOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmYtQH%2FbtsLoKi40xq%2FtyMockLNKoDSRDv0lAeHOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;240&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Geometry Collection&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fracture Mode를 선택하고 New를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1636&quot; data-origin-height=&quot;1124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSGSBr/btsLk9Ztoye/JHBkR7tMmHPvfxY1iK95i1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSGSBr/btsLk9Ztoye/JHBkR7tMmHPvfxY1iK95i1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSGSBr/btsLk9Ztoye/JHBkR7tMmHPvfxY1iK95i1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSGSBr%2FbtsLk9Ztoye%2FJHBkR7tMmHPvfxY1iK95i1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1636&quot; height=&quot;1124&quot; data-origin-width=&quot;1636&quot; data-origin-height=&quot;1124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름 설정하고 저장하면 Geometry Collection이 생성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KXfJq/btsLl8L6QZU/Im9lFVyKVZZ6cjAQNIPIyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KXfJq/btsLl8L6QZU/Im9lFVyKVZZ6cjAQNIPIyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KXfJq/btsLl8L6QZU/Im9lFVyKVZZ6cjAQNIPIyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKXfJq%2FbtsLl8L6QZU%2FIm9lFVyKVZZ6cjAQNIPIyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;506&quot; height=&quot;540&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 Geometry Collection을 선택하고 다양한 Fracture설정 중에서 Planar를 골라보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 Fracture Hierachy를 들어가서 0 으로 되어있는 SM_Claypot_01a를 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기가 잘리겠구나 라는 생각이 들도록 만드는 무언가가 나타납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진에서는 항아리 중간에 생겼네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fracture을 눌러 줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eJfZFO/btsLnljhohg/j7NHidTrby2IBHe8zkJjIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eJfZFO/btsLnljhohg/j7NHidTrby2IBHe8zkJjIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eJfZFO/btsLnljhohg/j7NHidTrby2IBHe8zkJjIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeJfZFO%2FbtsLnljhohg%2Fj7NHidTrby2IBHe8zkJjIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;411&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 이런식으로 0 밑에 두개가 생겼습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTPQtq/btsLmkFBNk0/hjXLVyJkkakOQC8EnnaUZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTPQtq/btsLmkFBNk0/hjXLVyJkkakOQC8EnnaUZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTPQtq/btsLmkFBNk0/hjXLVyJkkakOQC8EnnaUZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTPQtq%2FbtsLmkFBNk0%2FhjXLVyJkkakOQC8EnnaUZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;264&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이걸 위에서 떨어뜨려보면!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까 설정한 부분으로 두조각이 되는것을 확인할 수 있었습니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451723688&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/AwLN6/hyXKpBSamX/YFUW00JuW3iYwgZTCG7a90/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/l1fAN/hyXOqMDBCu/ygKHUkrBPuECOETmSavQXk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451723688?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Breakable Actor&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 만들었던 Actor는 부서지는 오브젝트 말고 다른 내용도 포함되어 있어 새로운 Actor를 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특별한 것이 필요한 것은 아니라서 간단하게 블루프린트로 만들었습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. Breakable Actor.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Actor 하나를 만들어서 GeometryCollection(cpp에선 UGeometryCollectionComponent)을 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GeometryCollection에 위에서 만든 GeometryCollection을 넣어줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFfITo/btsLnzv5VLg/DsAGUWzirjroC0KeCcnJ3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFfITo/btsLnzv5VLg/DsAGUWzirjroC0KeCcnJ3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFfITo/btsLnzv5VLg/DsAGUWzirjroC0KeCcnJ3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFfITo%2FbtsLnzv5VLg%2FDsAGUWzirjroC0KeCcnJ3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;534&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. GeometryCollection 설정.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Chaos Physics-&amp;gt;Events-&amp;gt;Notify Break=true;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctKTsT/btsLoJ5xU6C/QR5ZG0VwjIlfPlLnxXog6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctKTsT/btsLoJ5xU6C/QR5ZG0VwjIlfPlLnxXog6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctKTsT/btsLoJ5xU6C/QR5ZG0VwjIlfPlLnxXog6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctKTsT%2FbtsLoJ5xU6C%2FQR5ZG0VwjIlfPlLnxXog6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;183&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collision-&amp;gt;Generate Overlap Events=true;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nOrnX/btsLnyD0tX6/JrmfZFnugYnfDrWNcpHZa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nOrnX/btsLnyD0tX6/JrmfZFnugYnfDrWNcpHZa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nOrnX/btsLnyD0tX6/JrmfZFnugYnfDrWNcpHZa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnOrnX%2FbtsLnyD0tX6%2FJrmfZFnugYnfDrWNcpHZa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;367&quot; height=&quot;267&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;auto Activate = false;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Break Event추가.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GeometryCollection-&amp;gt; Add Event-&amp;gt; On Chaos Break Event추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부서질때마다 사운드가 나오게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u2ROV/btsLmSJHydn/4D3vOrkBmO0vahtWNvxbP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u2ROV/btsLmSJHydn/4D3vOrkBmO0vahtWNvxbP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u2ROV/btsLmSJHydn/4D3vOrkBmO0vahtWNvxbP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu2ROV%2FbtsLmSJHydn%2F4D3vOrkBmO0vahtWNvxbP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;254&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FieldSystem [Weapon]&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Weapon Actor.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weapon Actor에서 공격할 때 Create Fields 함수를 실행하도록 설정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 공격 시 Trace실행.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-공격 시 Trace를 실행하여 충돌하는지 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 충돌 대상 확인.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 충돌한 경우 Actor인지 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. CreateFields 함수 호출.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 충돌한 대상이 Actor인 경우, CreateFields함수를 실행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해당 함수는 C++에서 BlueprintImplementableEvent로 설정되어 있어, 블루프린트에서 마저 구현했습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Component.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FieldSystem 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RadialVector 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RadialFalloff 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FieldSystemMetaDataFilter 추가 -&amp;gt; Details-&amp;gt; Field -&amp;gt; ObjectType=Destruction으로 설정.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;315&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WKD0y/btsLnQj45GV/0DaI9cDtWanYVEGFbspwbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WKD0y/btsLnQj45GV/0DaI9cDtWanYVEGFbspwbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WKD0y/btsLnQj45GV/0DaI9cDtWanYVEGFbspwbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWKD0y%2FbtsLnQj45GV%2F0DaI9cDtWanYVEGFbspwbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;409&quot; data-origin-width=&quot;315&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CreateFields함수.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ2uU7/btsLn8Y5i6t/cJQUbFK4iWSyupHjutsfX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ2uU7/btsLn8Y5i6t/cJQUbFK4iWSyupHjutsfX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ2uU7/btsLn8Y5i6t/cJQUbFK4iWSyupHjutsfX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ2uU7%2FbtsLn8Y5i6t%2FcJQUbFK4iWSyupHjutsfX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;205&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(여기서부턴 틀릴 수 있음.)&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Set Radial Fallloff : 필드 효과가 거리(반경)에 따라 감소하는 정도를 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Field Magnitude : 필드의 최대 세기 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Min Range : 필드 효과가 최소한으로 작동하는 거리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Max Range : 필드 효과가 최대한으로 적용되는 거리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Default Value : 필드의 기본 값. 영향을 받지 않는 영역에 적용될 값.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Sphere Radius : 필드가 영향을 미치는 최대 반경.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Center Position : 필드의 중심 위치.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Falloff Type : 거리 감소 방식.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Field System Meta Data Filter : 필드 효과를 특정 오브젝트에만 적용하기 위해 메타데이터 기반 필터링.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Meta Data : 필드가 적용될 대상 오브젝트의 조건을 정의.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Add Transient Field : Field System Component에 필드를 추가하는 역할.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Enable Field : 필드 활성화 여부를 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Physics Type : 물리 효과의 타입 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp; * External Strain (외부 압력을 적용하는 필드 타입, 물체를 파괴함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp; * Linear Force (선형 방향으로 힘을 적용, 파괴되지 않은 물체 특정 방향으로 밀어냄).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이건 솔직히 빼도 될거같기도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Set Radial Vector : Radial Vector는 방사형으로 힘의 방향과 세기를 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Field Magnitude : 필드의 힘의 세기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Center Position : 필드 중심의 위치를 설정.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실행 결과.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무기에 Chaos Field System을 적용해 Breakable Actor를 파괴하는 예시 동영상.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/tSogCG-M02A?si=GCT-uj0Gu5Ja4rJT&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/tSogCG-M02A?si=GCT-uj0Gu5Ja4rJT&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=tSogCG-M02A&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/kT16L/hyXOinMabT/XO4qrITQ7TWGAkjdNednHk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/doHPud/hyXOdGKuZO/0CcBIXBCfkKPvWIQQLhdnK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Unreal5 부서지는 오브젝트&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/tSogCG-M02A&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;notranslate&quot; style=&quot;all: initial;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;Chaos Field Unreal 문서&quot; href=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/chaos-fields-user-guide-in-unreal-engine?application_version=5.4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chaos Field Unreal 문서.&lt;/a&gt;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>breakableactor</category>
      <category>chaos field system</category>
      <category>unreal</category>
      <category>기능</category>
      <category>언리얼</category>
      <category>오브젝트</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/698</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8#entry698comment</comments>
      <pubDate>Wed, 18 Dec 2024 05:12:14 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 RPG 프로젝트 2 C++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-RPG-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-2-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 RPG 프로젝트 2 C++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GAS(GamePlay Ability System)프레임워크를 사용해보고 싶어서 사용해 봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(GAS에 대한 자세한 내용은 아래.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GAS를 사용하는데 RPG가 제일 맞는 것 같았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NQRAK/btsLvx5e9Js/wQHbKQUNHK6hKCkt7h0HLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NQRAK/btsLvx5e9Js/wQHbKQUNHK6hKCkt7h0HLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NQRAK/btsLvx5e9Js/wQHbKQUNHK6hKCkt7h0HLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNQRAK%2FbtsLvx5e9Js%2FwQHbKQUNHK6hKCkt7h0HLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;게임에 대해.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 언어: C++, Blueprint&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 엔진: Unreal 5.4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 환경(실행 환경): Window 11&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;코드.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃허브 주소.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/RPG_Blade_1.git&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/ykarr/RPG_Blade_1.git&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735156504316&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ykarr/RPG_Blade_1&quot; data-og-description=&quot;Contribute to ykarr/RPG_Blade_1 development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ykarr/RPG_Blade_1.git&quot; data-og-url=&quot;https://github.com/ykarr/RPG_Blade_1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dxu3s0/hyXSBUPVuJ/FbKevsdvK6PQP6Ozq3hdf1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/brqpmt/hyXSzW1EcH/KR1gZo7xN1MvpKcKjwCxqK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/RPG_Blade_1.git&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ykarr/RPG_Blade_1.git&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dxu3s0/hyXSBUPVuJ/FbKevsdvK6PQP6Ozq3hdf1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/brqpmt/hyXSzW1EcH/KR1gZo7xN1MvpKcKjwCxqK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ykarr/RPG_Blade_1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to ykarr/RPG_Blade_1 development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기능.&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;캐릭터.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-Attribute&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 시작할 때 동기적으로 데이터를 가져와서 Attribute를 적합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIqYFk/btsLxZ2d1nc/xdxgIGpnTPKNTCbak4Szrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIqYFk/btsLxZ2d1nc/xdxgIGpnTPKNTCbak4Szrk/img.png&quot; data-origin-width=&quot;459&quot; data-origin-height=&quot;315&quot; data-is-animation=&quot;false&quot; style=&quot;width: 59.2317%; margin-right: 10px;&quot; data-widthpercent=&quot;59.93&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIqYFk/btsLxZ2d1nc/xdxgIGpnTPKNTCbak4Szrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIqYFk%2FbtsLxZ2d1nc%2FxdxgIGpnTPKNTCbak4Szrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;459&quot; height=&quot;315&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7KnpU/btsLxkZ0fPw/pSwGHTTKNlBPcaaazZMBcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7KnpU/btsLxkZ0fPw/pSwGHTTKNlBPcaaazZMBcK/img.png&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;740&quot; data-is-animation=&quot;false&quot; width=&quot;600&quot; height=&quot;616&quot; style=&quot;width: 39.6055%;&quot; data-widthpercent=&quot;40.07&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7KnpU/btsLxkZ0fPw/pSwGHTTKNlBPcaaazZMBcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7KnpU%2FbtsLxkZ0fPw%2FpSwGHTTKNlBPcaaazZMBcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-Weapon Spawn / 아이템 장착&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임을 시작할 때 무기를 소환하고 소켓에 장착.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weapon Class to Spawn만 바꾸면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbNZfC/btsLxPS1AGs/r7uYmpl4gwYD6UMWdjBt4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbNZfC/btsLxPS1AGs/r7uYmpl4gwYD6UMWdjBt4k/img.png&quot; width=&quot;600&quot; height=&quot;397&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;663&quot; data-is-animation=&quot;false&quot; style=&quot;width: 43.8592%; margin-right: 10px;&quot; data-widthpercent=&quot;44.9&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbNZfC/btsLxPS1AGs/r7uYmpl4gwYD6UMWdjBt4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbNZfC%2FbtsLxPS1AGs%2Fr7uYmpl4gwYD6UMWdjBt4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1002&quot; height=&quot;663&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vGqMu/btsLx7MzOPA/LcbOueTdUO2CfVC8SlleEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vGqMu/btsLx7MzOPA/LcbOueTdUO2CfVC8SlleEk/img.png&quot; data-origin-width=&quot;332&quot; data-origin-height=&quot;341&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.2547%; margin-right: 10px;&quot; data-widthpercent=&quot;28.93&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vGqMu/btsLx7MzOPA/LcbOueTdUO2CfVC8SlleEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvGqMu%2FbtsLx7MzOPA%2FLcbOueTdUO2CfVC8SlleEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;332&quot; height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwN09r/btsLzqSgPix/I7laXYD67IIeAG5BoQExBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwN09r/btsLzqSgPix/I7laXYD67IIeAG5BoQExBk/img.png&quot; data-origin-width=&quot;229&quot; data-origin-height=&quot;260&quot; data-is-animation=&quot;false&quot; style=&quot;width: 25.5605%;&quot; data-widthpercent=&quot;26.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwN09r/btsLzqSgPix/I7laXYD67IIeAG5BoQExBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwN09r%2FbtsLzqSgPix%2FI7laXYD67IIeAG5BoQExBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;229&quot; height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-가벼운 공격.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Light Attack Montage를 여러 개 만들어서 콤보에 따라 다른 공격이 나가도록 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHNhWh/btsLxFpj3Mh/whOdF8M70Sp6t1eTBKtGuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHNhWh/btsLxFpj3Mh/whOdF8M70Sp6t1eTBKtGuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHNhWh/btsLxFpj3Mh/whOdF8M70Sp6t1eTBKtGuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHNhWh%2FbtsLxFpj3Mh%2FwhOdF8M70Sp6t1eTBKtGuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;196&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;339&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데미지 계산식.&lt;/p&gt;
&lt;pre id=&quot;code_1735164574446&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (UsedLightAttackComboCount !=0) {
	//콤보가 1인경우(시작공격) 데미지증가 0
	const float DamageIncreasePercentLight = (UsedLightAttackComboCount - 1) * 0.05f+1.f;
	BaseDamage *= DamageIncreasePercentLight;
	//Debug::Print(TEXT(&quot;ScaledBaseDamageLight&quot;), BaseDamage);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEzS7O/btsLxP6vt7l/Cb2F5KrJyC5zHjMHcO0j5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEzS7O/btsLxP6vt7l/Cb2F5KrJyC5zHjMHcO0j5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEzS7O/btsLxP6vt7l/Cb2F5KrJyC5zHjMHcO0j5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEzS7O%2FbtsLxP6vt7l%2FCb2F5KrJyC5zHjMHcO0j5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;465&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-강공격&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강공은 공격력만 다르고 가벼운 공격과 비슷합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;431&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RIzUS/btsLytWbv1Q/GmWJTP1w1iwaHDrMYnF5L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RIzUS/btsLytWbv1Q/GmWJTP1w1iwaHDrMYnF5L0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RIzUS/btsLytWbv1Q/GmWJTP1w1iwaHDrMYnF5L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRIzUS%2FbtsLytWbv1Q%2FGmWJTP1w1iwaHDrMYnF5L0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;199&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;431&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데미지.&lt;/p&gt;
&lt;pre id=&quot;code_1735164590537&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (UsedHeavyAttackComboCount != 0) {
	//콤보가 1인경우(시작공격) 데미지증가 0
	const float DamageIncreasePercentHeavy = (UsedHeavyAttackComboCount - 1) * 0.15f + 1.f;
	BaseDamage *= DamageIncreasePercentHeavy;
	//Debug::Print(TEXT(&quot;ScaledBaseDamageHeavy&quot;), BaseDamage);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-분노상태.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분노 게이지를 모아서 분노 상태로 들어갈 수 있도록 만들었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;127&quot; data-origin-height=&quot;50&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAaoFj/btsLx7Z8KEx/uQBQZLVAt3anjMIMqCZck0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAaoFj/btsLx7Z8KEx/uQBQZLVAt3anjMIMqCZck0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAaoFj/btsLx7Z8KEx/uQBQZLVAt3anjMIMqCZck0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAaoFj%2FbtsLx7Z8KEx%2FuQBQZLVAt3anjMIMqCZck0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;39&quot; data-origin-width=&quot;127&quot; data-origin-height=&quot;50&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분노 상태에서는 원거리 공격을 할 수 있고, 사용중일 때 무적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy의 원거리 공격과 다르게 Overlap으로 설정해서 일정 거리까지 닿아도 없어지지 않고 작동합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QyU09/btsLxi2feNV/1KaNi6vGkmKosnCnjaHEW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QyU09/btsLxi2feNV/1KaNi6vGkmKosnCnjaHEW1/img.png&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;343&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5424%; margin-right: 10px;&quot; data-widthpercent=&quot;33.32&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QyU09/btsLxi2feNV/1KaNi6vGkmKosnCnjaHEW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQyU09%2FbtsLxi2feNV%2F1KaNi6vGkmKosnCnjaHEW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oXmMU/btsLzXWB6v7/e0eOkttO6kS8EeVeZoxm61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oXmMU/btsLzXWB6v7/e0eOkttO6kS8EeVeZoxm61/img.png&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;573&quot; data-is-animation=&quot;false&quot; style=&quot;width: 21.9888%; margin-right: 10px;&quot; data-widthpercent=&quot;22.51&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oXmMU/btsLzXWB6v7/e0eOkttO6kS8EeVeZoxm61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoXmMU%2FbtsLzXWB6v7%2Fe0eOkttO6kS8EeVeZoxm61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;447&quot; height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6QppP/btsLyW4YeZ3/c1jQZN0tx6f3ERQizqyZdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6QppP/btsLyW4YeZ3/c1jQZN0tx6f3ERQizqyZdk/img.png&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;392&quot; data-is-animation=&quot;false&quot; style=&quot;width: 43.1433%;&quot; data-widthpercent=&quot;44.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6QppP/btsLyW4YeZ3/c1jQZN0tx6f3ERQizqyZdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6QppP%2FbtsLyW4YeZ3%2Fc1jQZN0tx6f3ERQizqyZdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-특별한 공격.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;범위 안의 적을 공격하거나, 어떤 위치에 있는 적에게 순간이동하며 공격하거나 하는 쿨타임이 존재하는 능력입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cg4sFv/btsLyGuqiog/5ndG9B2WWSt9L7cYKWx9Z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cg4sFv/btsLyGuqiog/5ndG9B2WWSt9L7cYKWx9Z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cg4sFv/btsLyGuqiog/5ndG9B2WWSt9L7cYKWx9Z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcg4sFv%2FbtsLyGuqiog%2F5ndG9B2WWSt9L7cYKWx9Z0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;138&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-막기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적의 특별한 공격을 제외하고 막을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아슬아슬하게 막은 경우 잠시동안 시간이 느려집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckRUna/btsLzsWQMBe/5MCZl6yWoLGkzhepezbiU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckRUna/btsLzsWQMBe/5MCZl6yWoLGkzhepezbiU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckRUna/btsLzsWQMBe/5MCZl6yWoLGkzhepezbiU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckRUna%2FbtsLzsWQMBe%2F5MCZl6yWoLGkzhepezbiU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;188&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-구르기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roll Ability를 실행하면, 특정한 방향으로 구르게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난이도에 따라 구르기 레벨이 달라지고 구르기 레벨에 따라 이동거리가 달라집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zV5VC/btsLx8ksOt9/RGqg8LOD080Zu0BBSRsy51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zV5VC/btsLx8ksOt9/RGqg8LOD080Zu0BBSRsy51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zV5VC/btsLx8ksOt9/RGqg8LOD080Zu0BBSRsy51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzV5VC%2FbtsLx8ksOt9%2FRGqg8LOD080Zu0BBSRsy51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;219&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;-타겟락&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;범위 안에 Enemy가 있는 경우 가장 가까운 적에게 Target Lock을 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TargetLock을 사용하면 PlayerCharacter가 Targeting된 적을 바라보고 &lt;span&gt;&lt;span&gt;Strafing으로 움직임이 바뀝니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/pJh1PRzDDQo&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/pJh1PRzDDQo&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=pJh1PRzDDQo&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/chSRcl/hyXOkmWiZR/QJHpqXe1IKjGihdiAHCyBK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/HLCGe/hyXOopl5Wq/8Y4z9EcPr9b12mKTLPKVPK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Unreal Target Lock Ability&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/pJh1PRzDDQo&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-죽음.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터가 죽을 경우 Player Death Ability를 실행하고, UI가 실행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임을 다시 실행 / 메뉴로 이동 / 게임 종료.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTQK2k/btsLzfckkgM/jfcybYGAnf8KPSpRp2DXkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTQK2k/btsLzfckkgM/jfcybYGAnf8KPSpRp2DXkk/img.png&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;444&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.5704%; margin-right: 10px;&quot; data-widthpercent=&quot;49.14&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTQK2k/btsLzfckkgM/jfcybYGAnf8KPSpRp2DXkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTQK2k%2FbtsLzfckkgM%2FjfcybYGAnf8KPSpRp2DXkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cugJ82/btsLx7shet0/s1VZxgJdEZ5bumJI231Q60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cugJ82/btsLx7shet0/s1VZxgJdEZ5bumJI231Q60/img.png&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;612&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.2669%;&quot; data-widthpercent=&quot;50.86&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cugJ82/btsLx7shet0/s1VZxgJdEZ5bumJI231Q60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcugJ82%2FbtsLx7shet0%2Fs1VZxgJdEZ5bumJI231Q60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-UI 애니메이션&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;언리얼 위젯 애니메이션 C++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735161489214&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;언리얼 위젯 애니메이션 C++&quot; data-og-description=&quot;언리얼 위젯 애니메이션언리얼 블루프린트에서 Widget Animation을 만들고 Cpp에서 사용하는 방법에 대한 글입니다.위젯 애니메이션 만들기 Blueprint.저는 보통 블루프린트에서 위젯과 애니메이션을 &quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bGKj4Y/hyXSzJvPdS/rU1lzLaw68STkWTNQbBcJ1/img.png?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/B4ajX/hyXSFbSe2Z/q9iHsX5KOhkORSZxKNoFsk/img.png?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/bSHMsX/hyXSE45OMV/IJYAzqs4wpEn1QQpSzPtJK/img.png?width=1824&amp;amp;height=1187&amp;amp;face=0_0_1824_1187&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9C%84%EC%A0%AF-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bGKj4Y/hyXSzJvPdS/rU1lzLaw68STkWTNQbBcJ1/img.png?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/B4ajX/hyXSFbSe2Z/q9iHsX5KOhkORSZxKNoFsk/img.png?width=300&amp;amp;height=235&amp;amp;face=0_0_300_235,https://scrap.kakaocdn.net/dn/bSHMsX/hyXSE45OMV/IJYAzqs4wpEn1QQpSzPtJK/img.png?width=1824&amp;amp;height=1187&amp;amp;face=0_0_1824_1187');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 위젯 애니메이션 C++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 위젯 애니메이션언리얼 블루프린트에서 Widget Animation을 만들고 Cpp에서 사용하는 방법에 대한 글입니다.위젯 애니메이션 만들기 Blueprint.저는 보통 블루프린트에서 위젯과 애니메이션을&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-GameplayTag&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal-GameplayTag-c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Unreal GameplayTag c++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735159032614&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal GameplayTag c++&quot; data-og-description=&quot;Unreal GameplayTag최근 Unreal프로젝트를 만들면서 GameplayAbility를 사용하면서 GameplayTag를 많이 사용해 보았다.그러면서 에디터 내에서 태그를 추가하고 관리하는 방법이 아닌, 따로 파일을 만들어서 &quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal-GameplayTag-c&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal-GameplayTag-c&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cDOiLc/hyXOnKKmVp/Nqga7e20p0pYKyJhEZfHN0/img.png?width=454&amp;amp;height=353&amp;amp;face=0_0_454_353,https://scrap.kakaocdn.net/dn/bCNngM/hyXOe73znY/2Ef8RO16YukgsL9TTiNcb0/img.png?width=454&amp;amp;height=353&amp;amp;face=0_0_454_353,https://scrap.kakaocdn.net/dn/dqjyDG/hyXSzvXPQX/7vt2T3uYJDiksHz2Kp59Qk/img.png?width=663&amp;amp;height=365&amp;amp;face=0_0_663_365&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal-GameplayTag-c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal-GameplayTag-c&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cDOiLc/hyXOnKKmVp/Nqga7e20p0pYKyJhEZfHN0/img.png?width=454&amp;amp;height=353&amp;amp;face=0_0_454_353,https://scrap.kakaocdn.net/dn/bCNngM/hyXOe73znY/2Ef8RO16YukgsL9TTiNcb0/img.png?width=454&amp;amp;height=353&amp;amp;face=0_0_454_353,https://scrap.kakaocdn.net/dn/dqjyDG/hyXSzvXPQX/7vt2T3uYJDiksHz2Kp59Qk/img.png?width=663&amp;amp;height=365&amp;amp;face=0_0_663_365');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal GameplayTag c++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal GameplayTag최근 Unreal프로젝트를 만들면서 GameplayAbility를 사용하면서 GameplayTag를 많이 사용해 보았다.그러면서 에디터 내에서 태그를 추가하고 관리하는 방법이 아닌, 따로 파일을 만들어서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-쿨타임.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Ability에 있는 기능을 이용해 구현하고 CoolTime UI를 위해 GamePlayAbility Tick을 구현해 사용했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C&quot;&gt;GameplayAbility Tick 구현 C++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735159070841&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;GameplayAbility Tick 구현 C++&quot; data-og-description=&quot;GameplayAbility Tick기본적으로 GameplayAbility자체는 Tick을 제공하지 않기 때문에 GameplayAbility에서 Tick을 사용하기 위해서는 추가적인 설정이 필요합니다.Tick구현 - Ability Task.GameplayAbility에서 Tick을 사용&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/C0qq3/hyXOhRgevL/BahnhQpkiwbEAwvAxknbsK/img.png?width=508&amp;amp;height=400&amp;amp;face=0_0_508_400,https://scrap.kakaocdn.net/dn/bnMP0x/hyXOdH3sqn/uiCTlMRQudKG2QozN31PMk/img.png?width=508&amp;amp;height=400&amp;amp;face=0_0_508_400,https://scrap.kakaocdn.net/dn/bnhVpM/hyXOg5UvWb/eaVrjuSHccWllxlX8rTDFk/img.png?width=946&amp;amp;height=580&amp;amp;face=0_0_946_580&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/C0qq3/hyXOhRgevL/BahnhQpkiwbEAwvAxknbsK/img.png?width=508&amp;amp;height=400&amp;amp;face=0_0_508_400,https://scrap.kakaocdn.net/dn/bnMP0x/hyXOdH3sqn/uiCTlMRQudKG2QozN31PMk/img.png?width=508&amp;amp;height=400&amp;amp;face=0_0_508_400,https://scrap.kakaocdn.net/dn/bnhVpM/hyXOg5UvWb/eaVrjuSHccWllxlX8rTDFk/img.png?width=946&amp;amp;height=580&amp;amp;face=0_0_946_580');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GameplayAbility Tick 구현 C++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GameplayAbility Tick기본적으로 GameplayAbility자체는 Tick을 제공하지 않기 때문에 GameplayAbility에서 Tick을 사용하기 위해서는 추가적인 설정이 필요합니다.Tick구현 - Ability Task.GameplayAbility에서 Tick을 사용&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;Enemy.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt; -Attribute&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 시작할 때 비동기적으로 작동합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비동기적으로 Status를 적용하고, 무기를 불러오는 등...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tNgM0/btsLwGo0EH6/TsXUtnR2AbkojeUMTl5jp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tNgM0/btsLwGo0EH6/TsXUtnR2AbkojeUMTl5jp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tNgM0/btsLwGo0EH6/TsXUtnR2AbkojeUMTl5jp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtNgM0%2FbtsLwGo0EH6%2FTsXUtnR2AbkojeUMTl5jp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;456&quot; height=&quot;330&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-아이템 장착.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 소환된 후 무기를 소환하고, 무기를 장착합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-공격&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이어가 근접 공격이 가능한 영역에 들어오면, AI는 EQS를 사용하여 주변 환경을 평가하고, 이를 기반으로 공격하고 빠지는 전투를 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-막을 수 없는 공격&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI가 나오면서 막을 수 없는 공격을 경고합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lC8gu/btsLzZmAfxf/aKZqkO0GkRgLrpSqrWH4kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lC8gu/btsLzZmAfxf/aKZqkO0GkRgLrpSqrWH4kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lC8gu/btsLzZmAfxf/aKZqkO0GkRgLrpSqrWH4kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlC8gu%2FbtsLzZmAfxf%2FaKZqkO0GkRgLrpSqrWH4kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;193&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;369&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-아이템 드롭.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 죽으면서 아이템을 드롭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정한 확률로 드롭하고, 거기서 일정한 확률로 Health/Range를 채워줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(GamePlayEffect)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biP5eB/btsLx5HW54I/zoU97aDDthoWVhcxxOEnc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biP5eB/btsLx5HW54I/zoU97aDDthoWVhcxxOEnc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biP5eB/btsLx5HW54I/zoU97aDDthoWVhcxxOEnc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiP5eB%2FbtsLx5HW54I%2FzoU97aDDthoWVhcxxOEnc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;210&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-원거리 Enemy&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Character가 근처로 막을 수 없는 공격을 진행하거나 도망갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원거리에서 공격하고 EnemyProjectileAttackAbility을 이용해 Projectile Actor를 소환해서 공격합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-보스&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보스가 나타날 경우 보스의 HP가 나타나고, HP가 일정 이하로 줄어들면 보스가 아닌 Enemy를 소환합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rsCAx/btsLzqxYbyT/RGzW6WQEkuIMap9tej5Tjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rsCAx/btsLzqxYbyT/RGzW6WQEkuIMap9tej5Tjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rsCAx/btsLzqxYbyT/RGzW6WQEkuIMap9tej5Tjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrsCAx%2FbtsLzqxYbyT%2FRGzW6WQEkuIMap9tej5Tjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;390&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-소환&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Wave마다 랜덤 한 종류의 정해진 수의 Enemy를 소환합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;781&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qBFcK/btsLzthc3EZ/rsTef8dUzOxJeCZRqOlKO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qBFcK/btsLzthc3EZ/rsTef8dUzOxJeCZRqOlKO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qBFcK/btsLzthc3EZ/rsTef8dUzOxJeCZRqOlKO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqBFcK%2FbtsLzthc3EZ%2FrsTef8dUzOxJeCZRqOlKO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;469&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;781&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-UI&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy의 머리 상단에 표시할 HealthBar UI.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wNvrm/btsLxFiG8HN/YjJAKV5ka5Siyh2kWMhQvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wNvrm/btsLxFiG8HN/YjJAKV5ka5Siyh2kWMhQvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wNvrm/btsLxFiG8HN/YjJAKV5ka5Siyh2kWMhQvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwNvrm%2FbtsLxFiG8HN%2FYjJAKV5ka5Siyh2kWMhQvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;102&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-AI&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI는 Behavior Tree를 이용해 행동을 구현했고, EQS(Environment Query)를 사용했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdIJOV/btsLxjfKPuV/cAceBR1KJMbSb18w9yPmt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdIJOV/btsLxjfKPuV/cAceBR1KJMbSb18w9yPmt0/img.png&quot; data-origin-width=&quot;1543&quot; data-origin-height=&quot;822&quot; data-is-animation=&quot;false&quot; style=&quot;width: 56.1979%; margin-right: 10px;&quot; data-widthpercent=&quot;56.86&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdIJOV/btsLxjfKPuV/cAceBR1KJMbSb18w9yPmt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdIJOV%2FbtsLxjfKPuV%2FcAceBR1KJMbSb18w9yPmt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1543&quot; height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHG9ih/btsLzXvxb0t/0if0gnEo1hSfBda0PCkhqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHG9ih/btsLzXvxb0t/0if0gnEo1hSfBda0PCkhqk/img.png&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;363&quot; data-is-animation=&quot;false&quot; style=&quot;width: 42.6393%;&quot; data-widthpercent=&quot;43.14&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHG9ih/btsLzXvxb0t/0if0gnEo1hSfBda0PCkhqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHG9ih%2FbtsLzXvxb0t%2F0if0gnEo1hSfBda0PCkhqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;517&quot; height=&quot;363&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Behavior Tree : AI의 행동을 트리 구조로 구성하여, 상태에 행동을 제어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EQS : AI가 주변 환경을 평가하고, 이를 기반으로 최적의 행동을 선택하도록 돕는 시스템.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;Item&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-회복 아이템.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 사용할 수 있을 때 상호작용 아이콘이 나타납니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnAvSi/btsLzsCxqc6/zNFkbkvk3mbnaDWxX9XBWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnAvSi/btsLzsCxqc6/zNFkbkvk3mbnaDWxX9XBWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnAvSi/btsLzsCxqc6/zNFkbkvk3mbnaDWxX9XBWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnAvSi%2FbtsLzsCxqc6%2FzNFkbkvk3mbnaDWxX9XBWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;249&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-무기.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;무기에 InputMappingContext와 무기에 맞는 Animation, Ability, WeaponStatus 등을 넣어 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;824&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFZo7/btsLxuarX3v/p2fMIr8oCkfwbyEsR0sFgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFZo7/btsLxuarX3v/p2fMIr8oCkfwbyEsR0sFgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFZo7/btsLxuarX3v/p2fMIr8oCkfwbyEsR0sFgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFZo7%2FbtsLxuarX3v%2Fp2fMIr8oCkfwbyEsR0sFgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;824&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;824&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WeaponStatus-&amp;gt; 난이도에 따라 데미지가 달라집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;422&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o8hcQ/btsLxE46dGH/R8lkJgEwPDV0gWQDjqMhuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o8hcQ/btsLxE46dGH/R8lkJgEwPDV0gWQDjqMhuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o8hcQ/btsLxE46dGH/R8lkJgEwPDV0gWQDjqMhuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo8hcQ%2FbtsLxE46dGH%2FR8lkJgEwPDV0gWQDjqMhuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;422&quot; height=&quot;213&quot; data-origin-width=&quot;422&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;기타 기능.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-로딩.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Unreal 로딩 구현하기 cpp&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735167419035&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal 로딩 구현하기 cpp&quot; data-og-description=&quot;언리얼 로딩 구현하기아래의 글은 언리얼에서 로딩 화면 구현에 대한 글입니다.로딩을 구현하는 방법은 여러가지가 있지만 이 글은 그중 한가지를 보여주는 글입니다.맵 로드가 시작되기 전에 &quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sGqPu/hyXOrl25vk/I1TxnfwrHa9Abd0WiR9r51/img.png?width=410&amp;amp;height=321&amp;amp;face=0_0_410_321,https://scrap.kakaocdn.net/dn/uFN4O/hyXOqUZB1g/O0n2Umo8HNKZRyVQKkE9wk/img.png?width=410&amp;amp;height=321&amp;amp;face=0_0_410_321,https://scrap.kakaocdn.net/dn/bvAS8P/hyXOhwZWOH/Nax0cACZHdh0d776VU0Zq0/img.png?width=1041&amp;amp;height=929&amp;amp;face=0_0_1041_929&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal-%EB%A1%9C%EB%94%A9-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-cpp&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sGqPu/hyXOrl25vk/I1TxnfwrHa9Abd0WiR9r51/img.png?width=410&amp;amp;height=321&amp;amp;face=0_0_410_321,https://scrap.kakaocdn.net/dn/uFN4O/hyXOqUZB1g/O0n2Umo8HNKZRyVQKkE9wk/img.png?width=410&amp;amp;height=321&amp;amp;face=0_0_410_321,https://scrap.kakaocdn.net/dn/bvAS8P/hyXOhwZWOH/Nax0cACZHdh0d776VU0Zq0/img.png?width=1041&amp;amp;height=929&amp;amp;face=0_0_1041_929');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal 로딩 구현하기 cpp&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 로딩 구현하기아래의 글은 언리얼에서 로딩 화면 구현에 대한 글입니다.로딩을 구현하는 방법은 여러가지가 있지만 이 글은 그중 한가지를 보여주는 글입니다.맵 로드가 시작되기 전에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;-난이도 설정.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위젯을 통해 난이도를 설정-&amp;gt;USaveGame으로 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임을 시작할 때는 USaveGame-&amp;gt;PlayerCharcter-&amp;gt;GameModeBase형식으로 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(USaveGame을 사용하면 데이터가 저장되어 게임을 껐다 켜도 데이터가 유지됩니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jhg5B/btsLyXJw2BI/FX1pEi1KrEWnKCbNiGo8EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jhg5B/btsLyXJw2BI/FX1pEi1KrEWnKCbNiGo8EK/img.png&quot; data-origin-width=&quot;322&quot; data-origin-height=&quot;300&quot; data-is-animation=&quot;false&quot; style=&quot;width: 44.7325%; margin-right: 10px;&quot; data-widthpercent=&quot;45.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jhg5B/btsLyXJw2BI/FX1pEi1KrEWnKCbNiGo8EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJhg5B%2FbtsLyXJw2BI%2FFX1pEi1KrEWnKCbNiGo8EK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;322&quot; height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/odrbG/btsLx0NzcTE/sKAWBuuOoJEiK97S65uU31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/odrbG/btsLx0NzcTE/sKAWBuuOoJEiK97S65uU31/img.png&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;560&quot; data-is-animation=&quot;false&quot; style=&quot;width: 54.1047%;&quot; data-widthpercent=&quot;54.74&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/odrbG/btsLx0NzcTE/sKAWBuuOoJEiK97S65uU31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FodrbG%2FbtsLx0NzcTE%2FsKAWBuuOoJEiK97S65uU31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;알게된점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gameplay Ability System은 액터의 능력 및 스킬을 구축하기 위한 프레임워크입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;능력과 Actor를 분리시켜 의존성을 없애고, 유연한 개발이 가능하도록 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;AbilitySystemComponent&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-액터의 모든 어빌리티를 관리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 캐릭터, NPC 등 특정 액터에 부착.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;GameplayAbility&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-액터가 수행할 수 있는 능력을 정의.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 공격, 힐링, Targeting 등의 스킬이나 행동.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;AbilityTask&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-GameplayAbility 내에서 세부적인 동작을 정의.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 충돌 감지 등.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;GameplayTag&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-능력, 상태, 효과등을 식별하고 분류하는 데 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 태그를 이용해 죽었는지 살았는지부터 공격 중인지 화염상태인지 등 여러 가지 상태 식별.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;Gameplay Attribute&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-캐릭터의 수치를 관리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 캐릭터의 체력, 마나, 방어력, 공격력 등의 수치를 관리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;GameplayEffect&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-능력이나 아이템 사용 시 적용되는 효과 정의.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 체력 포션을 먹었을 때 피 50회복/피 10초간 지속회복.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;GameplayCue&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-능력 발동 시 발생하는 연출(비주얼, 사운드).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 캐릭터가 스킬을 사용할 때 나오는 이펙트와 사운드 등.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;아쉬운 점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼자서 개발하는 것이 제일 아쉬운 점이었던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼자서 개발하다 보니 리소스를 구하는 부분이나 Level을 구성하는 부분이 너무 오래 걸렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 GAS를 사용해보고 싶어서 시작한 프로젝트였기 때문에 GAS도 공부하면서 웬만하면 C++을 위주로 하고 싶어서 블루프린트 코드들을 C++로 바꾸고 진행하다 보니 이런 코드들이 블루프린트에서는 보이지만 C++에서는 보이지 않는 것들이 몇 개 있어서 이런 것들을 찾고, 만들고 하다 보니 시간이 너무 오래 걸렸습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;느낀 점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GAS(GamePlay Ability System)를 사용하며 이 시스템의 강력함과 유연함을 직접 체감할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 소규모 프로젝트에서는 GAS가 과하게 느껴지는 부분도 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GAS는 확장성이 뛰어나고, 능력이나 효과를 체계적으로 관리할 수 있는 구조 덕분에 대규모 프로젝트에서는 매우 유용한 도구가 될 것이라고 생각합니다. 하지만 소규모 개발에서는 초기 설정과 학습 곡선이 조금 부담스러웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;과한 것이 반드시 좋은 것은 아니다&quot; 라는 말을 GAS를 공부하고 적용하면서 떠올리게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GAS를 공부하고 적용하는데 들인 시간에 비해, 간단한 기능이라면 직접 구현했을 경우 더 빠르게 개발을 완료할 수 있었을 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찾아보니까 GAS는 대규모 시스템을 목표로 설계되었기 때문에 간단한 능력 구현에도 불필요한 구조와 시스템이 포함되는 경우가 많았습니다. 그럼에도 불구하고, GAS는 한번 익혀두면 꽤 쓸만하다는 생각이 들었고, 특히 네트워크 동기화가 필요한 멀티 플레이 환경에서는 큰 장점이 될 것이라고 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로, GAS는 프로젝트의 규모와 필요성에 따라 선택적으로 사용하는 것이 가장 효과적일 것 같고, 작은 규모의 프로젝트나 간단한 기능이라면 직접적인 방식으로 구현하는 것이 효과적일 것이라고 느꼈습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실행 영상.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/bNOfcP864uY&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/bNOfcP864uY&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=bNOfcP864uY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bFIDi9/hyXStvJNHH/e77ZqwiMX0zef0CWWnOvv1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/cMpDB6/hyXOch6Mih/xrfdO0nLuORMgwRF7S48jk/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Unreal RPG 테스트 2&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/bNOfcP864uY&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;notranslate&quot; style=&quot;all: initial;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>c++</category>
      <category>RPG</category>
      <category>기록</category>
      <category>언리얼</category>
      <category>프로젝트</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/697</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-RPG-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-2-C#entry697comment</comments>
      <pubDate>Mon, 16 Dec 2024 23:19:12 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 RPG 프로젝트 1 C++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-RPG-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-1-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 RPG 프로젝트 1 C++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 엔진을 처음 접하며 만든 첫 프로젝트로 기억합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당시 언리얼 엔진에 대해 전혀 알지 못했기 때문에, Unreal Engine의 기본적인 사용법과 C++을 활용한 게임 개발의 핵심 요소를 배우는 것이 목표였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nyKQD/btsLvLIXIM1/j23EgmbqEwpKAfKcSKizH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nyKQD/btsLvLIXIM1/j23EgmbqEwpKAfKcSKizH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nyKQD/btsLvLIXIM1/j23EgmbqEwpKAfKcSKizH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnyKQD%2FbtsLvLIXIM1%2Fj23EgmbqEwpKAfKcSKizH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;게임에 대해.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 언어: c++, blueprint&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 엔진: unreal5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 환경(실행 환경): window 10&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;코드.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃허브 주소:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/RPG_Slash_1.git&quot;&gt;https://github.com/ykarr/RPG_Slash_1.git&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177204913&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ykarr/RPG_Slash_1&quot; data-og-description=&quot;Contribute to ykarr/RPG_Slash_1 development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ykarr/RPG_Slash_1.git&quot; data-og-url=&quot;https://github.com/ykarr/RPG_Slash_1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMrk3v/hyXSy4XCZo/KyP7dY8LIaGKC7FPGHetiK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/RPG_Slash_1.git&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ykarr/RPG_Slash_1.git&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMrk3v/hyXSy4XCZo/KyP7dY8LIaGKC7FPGHetiK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ykarr/RPG_Slash_1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to ykarr/RPG_Slash_1 development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기능.&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;캐릭터.&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;1. 상태.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터의 상태를 체계적으로 관리하기 위해 Enum Class를 활용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 상태는 캐릭터가 게임 내에서 취할 수 있는 다양한 행동과 상태를 명확히 정의하고, 이를 통해 캐릭터의 동작을 직관적이고 쉽게 관리할 수 있도록 설계했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOjdZP/btsLwrZYDQn/Se0jM50DPUAKRHK7cLwvS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOjdZP/btsLwrZYDQn/Se0jM50DPUAKRHK7cLwvS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOjdZP/btsLwrZYDQn/Se0jM50DPUAKRHK7cLwvS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOjdZP%2FbtsLwrZYDQn%2FSe0jM50DPUAKRHK7cLwvS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;468&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. 공격.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무기를 소지한 경우 공격이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무기의 Collision 결과를 기반으로 각 Actor에게 GetHit 인터페이스를 통해 적중 결과를 전달합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-Hit-C&quot;&gt;Unreal5 Hit C++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177240148&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 Hit C++&quot; data-og-description=&quot;Unreal5 Hit C++ 안녕하세요. 저번 글에서 공격 애니메이션을 추가했습니다. 이번 글에서는 Box Component를 이용해 공격한 위치를 보여주도록 하겠습니다. [프로그래밍/언리얼] - Unreal5 Attack Animation C++ U&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Hit-C&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Hit-C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cQccNW/hyXSzisKfJ/G6jaECwSuKHWwv61nGYnwK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/bmWUAZ/hyXSxEXiIU/P9ZX57tbgolJkOgRompHq1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/NNF7G/hyXSqZ7uj4/QLKjMx3tk9kYhyH6kUKxwk/img.png?width=1951&amp;amp;height=1486&amp;amp;face=0_0_1951_1486&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-Hit-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Hit-C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cQccNW/hyXSzisKfJ/G6jaECwSuKHWwv61nGYnwK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/bmWUAZ/hyXSxEXiIU/P9ZX57tbgolJkOgRompHq1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/NNF7G/hyXSqZ7uj4/QLKjMx3tk9kYhyH6kUKxwk/img.png?width=1951&amp;amp;height=1486&amp;amp;face=0_0_1951_1486');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 Hit C++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 Hit C++ 안녕하세요. 저번 글에서 공격 애니메이션을 추가했습니다. 이번 글에서는 Box Component를 이용해 공격한 위치를 보여주도록 하겠습니다. [프로그래밍/언리얼] - Unreal5 Attack Animation C++ U&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;3. 피격.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이어 캐릭터가 피격당한 경우.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weapon에 적용된&amp;nbsp; Damage만큼의 피해를 입고 UI를 업데이트합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후, 피격당했을 때 내적을 계산합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-Dot-Product%EB%82%B4%EC%A0%81-C&quot;&gt;Unreal5 Dot Product(내적) C++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177238408&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 Dot Product(내적) C++&quot; data-og-description=&quot;Unreal5 Dot Product(내적) C++ 저번글에서 간단한 Hit를 구현했는데 좀 더 살을 붙여보려고 합니다. 이번 글에서는 Dot Product를 이용해 Player가 때리는 각도를 알아보려고 합니다. [프로그래밍/언리얼] - U&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Dot-Product%EB%82%B4%EC%A0%81-C&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Dot-Product%EB%82%B4%EC%A0%81-C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bcB7Dt/hyXOmLNIWE/675AflT0DDPWxbrnX6930K/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/8kEA2/hyXSqsiDl6/j553yFlzw4YGdvxkkuX8H0/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/bTmp4P/hyXSyw5bEs/CvFvMBSoDkdEkoGfKm5oa0/img.png?width=1614&amp;amp;height=1151&amp;amp;face=0_0_1614_1151&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-Dot-Product%EB%82%B4%EC%A0%81-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Dot-Product%EB%82%B4%EC%A0%81-C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bcB7Dt/hyXOmLNIWE/675AflT0DDPWxbrnX6930K/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/8kEA2/hyXSqsiDl6/j553yFlzw4YGdvxkkuX8H0/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/bTmp4P/hyXSyw5bEs/CvFvMBSoDkdEkoGfKm5oa0/img.png?width=1614&amp;amp;height=1151&amp;amp;face=0_0_1614_1151');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 Dot Product(내적) C++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 Dot Product(내적) C++ 저번글에서 간단한 Hit를 구현했는데 좀 더 살을 붙여보려고 합니다. 이번 글에서는 Dot Product를 이용해 Player가 때리는 각도를 알아보려고 합니다. [프로그래밍/언리얼] - U&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 외적을 계산해서 맞은 방향을 알아냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%A7%9E%EC%9D%80-%EB%B0%A9%ED%96%A5-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0-CrossProduct%EC%99%B8%EC%A0%81-c&quot;&gt;Unreal5 맞은 방향 알아내기 CrossProduct(외적) c++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177243614&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 맞은 방향 알아내기 CrossProduct(외적) c++&quot; data-og-description=&quot;Unreal5 맞은 방향 알아내기 CrossProduct c++ Dot Product는 두 벡터의 사잇각이 0-180도 사이에 있을 때 값을 계산합니다. 즉, 두 벡터가 평행하면 값이 최대가 되고, 직교하면 0이 되며, 반대 방향이면 값&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%A7%9E%EC%9D%80-%EB%B0%A9%ED%96%A5-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0-CrossProduct%EC%99%B8%EC%A0%81-c&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%A7%9E%EC%9D%80-%EB%B0%A9%ED%96%A5-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0-CrossProduct%EC%99%B8%EC%A0%81-c&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/coR3vc/hyXSDd5GHS/9QGJJrJE5ZnJqPzjCkFMl1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/of2Bb/hyXOhRhScj/t6GESqQvPHkCehLaBLQ2yK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cYXhaa/hyXSt3CdOo/tIvg5kdsJ6wujfmleBaldK/img.png?width=1588&amp;amp;height=1330&amp;amp;face=0_0_1588_1330&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%A7%9E%EC%9D%80-%EB%B0%A9%ED%96%A5-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0-CrossProduct%EC%99%B8%EC%A0%81-c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%A7%9E%EC%9D%80-%EB%B0%A9%ED%96%A5-%EC%95%8C%EC%95%84%EB%82%B4%EA%B8%B0-CrossProduct%EC%99%B8%EC%A0%81-c&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/coR3vc/hyXSDd5GHS/9QGJJrJE5ZnJqPzjCkFMl1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/of2Bb/hyXOhRhScj/t6GESqQvPHkCehLaBLQ2yK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cYXhaa/hyXSt3CdOo/tIvg5kdsJ6wujfmleBaldK/img.png?width=1588&amp;amp;height=1330&amp;amp;face=0_0_1588_1330');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 맞은 방향 알아내기 CrossProduct(외적) c++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 맞은 방향 알아내기 CrossProduct c++ Dot Product는 두 벡터의 사잇각이 0-180도 사이에 있을 때 값을 계산합니다. 즉, 두 벡터가 평행하면 값이 최대가 되고, 직교하면 0이 되며, 반대 방향이면 값&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 이제 맞은 방향에 맞게 Hit Animation을 실행합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;4. 회피.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 때마다 Stamina를 사용하고, State를 EActionState::EAS_Dodge로 설정해서 구르는 동안 공격등을 실행하지 못하도록 했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4aUWC/btsLw35rFRm/YTqgYi9cxrFkTjdtlJ2gQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4aUWC/btsLw35rFRm/YTqgYi9cxrFkTjdtlJ2gQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4aUWC/btsLw35rFRm/YTqgYi9cxrFkTjdtlJ2gQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4aUWC%2FbtsLw35rFRm%2FYTqgYi9cxrFkTjdtlJ2gQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;288&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;5.Attribute&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Attribute Component를 이용해 값을 계산해서 뱉어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간이 지나면 다시 회복되는 스태미나는 Tick을 이용해 회복시켜 줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;289&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8sKlw/btsLzsvPcXV/K2x8mfFwqQQ29WGy8zB461/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8sKlw/btsLzsvPcXV/K2x8mfFwqQQ29WGy8zB461/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8sKlw/btsLzsvPcXV/K2x8mfFwqQQ29WGy8zB461/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8sKlw%2FbtsLzsvPcXV%2FK2x8mfFwqQQ29WGy8zB461%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;91&quot; data-origin-width=&quot;289&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;6. FootIK&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inverse Kinematics(역운동학, IK)는 일반적으로 로봇공학에서 사용되는 개념으로, 끝단의 위치가 주어졌을 때, 그 위치를 만족시키기 위해 로봇의 관절 각도를 계산하는 기술입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기술을 사용해서 캐릭터의 발 위치를 보다 자연스럽게 해줬습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-Foot-IK&quot;&gt;Unreal5 Foot IK&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177251827&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 Foot IK&quot; data-og-description=&quot;Unreal5 Foot IK *그냥 공부하면서 작성하는 글입니다. 이 글은 이전글과 이어지는 글이므로 이해하기 위해서 이전 글이 필요할 수 있습니다. [프로그래밍/언리얼] - Unreal5 점프 애니메이션 Unreal5 점&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Foot-IK&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Foot-IK&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bNzvZo/hyXOqHsX89/NnSy9DLx9RfJERhHklX7k1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/byrZSu/hyXOeG2F0t/ZNIoIKMsbR9AXps1tlcukK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/CG1h7/hyXSCTNaS1/2CdKURpjFAdnfdt8pPdKck/img.png?width=998&amp;amp;height=1318&amp;amp;face=0_0_998_1318&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-Foot-IK&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-Foot-IK&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bNzvZo/hyXOqHsX89/NnSy9DLx9RfJERhHklX7k1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/byrZSu/hyXOeG2F0t/ZNIoIKMsbR9AXps1tlcukK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/CG1h7/hyXSCTNaS1/2CdKURpjFAdnfdt8pPdKck/img.png?width=998&amp;amp;height=1318&amp;amp;face=0_0_998_1318');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 Foot IK&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 Foot IK *그냥 공부하면서 작성하는 글입니다. 이 글은 이전글과 이어지는 글이므로 이해하기 위해서 이전 글이 필요할 수 있습니다. [프로그래밍/언리얼] - Unreal5 점프 애니메이션 Unreal5 점&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;7. 아이템 장착/ 해제.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 장착할 수 있는 상태라면 장착하고, 장착할 수 없는 상태라면 장착할 수 없도록 구현했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장착키를 다시 누르면 현재 장착한 무기를 다른 곳에 있는 소켓에 넣어둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무기를 들고 있을 때 버리기 키를 누르면 무기가 줍기 전 상태로 돌아갑니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;8. UI&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI는 HUD랑 뭐 별거 없으니까... 생략하겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Enemy.&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;1.Enemy의 상태.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 Player에서 있었던 Enum을 이용해 상태관리를 하고, 그 상태를 바탕으로 Enemy의 행동이 정해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 말하면, 순찰-&amp;gt;발견-&amp;gt;추격-&amp;gt;공격-&amp;gt;순찰 순입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;569&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czCBkJ/btsLzYH08te/T2FltkbgcXyoB5RXl5pK4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czCBkJ/btsLzYH08te/T2FltkbgcXyoB5RXl5pK4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czCBkJ/btsLzYH08te/T2FltkbgcXyoB5RXl5pK4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczCBkJ%2FbtsLzYH08te%2FT2FltkbgcXyoB5RXl5pK4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;390&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;569&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. 순찰 / 추격.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평소에는 Patrol target 중에서 랜덤 한 위치로 순찰을 다니다가 UPawnSensingComponent에 플레이어가 포착되면 플레이어를 추격하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dp78h8/btsLzCkUgZm/hKYxI526fqKNwij0mNUPa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dp78h8/btsLzCkUgZm/hKYxI526fqKNwij0mNUPa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dp78h8/btsLzCkUgZm/hKYxI526fqKNwij0mNUPa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdp78h8%2FbtsLzCkUgZm%2FhKYxI526fqKNwij0mNUPa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;418&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;3. 공격.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공격을 할 수 있는 위치까지 추격하게 되면, Enemy는 공격을 시작하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 위협적일 수 있도록 MotionWarping을 이용해 어느 시점까지 공격하면서 플레이어를 향해 이동합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;4. 피격.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 피격당하는 경우 Player와 비슷합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 피격당하는 순간 머리 위에 HealthBar가 생성되고 일정 시간 피격당하지 않으면 보이지 않는 상태로 돌아갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Okq72/btsLx2kmNjS/MuKkkUBK6k9792DwZhnIlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Okq72/btsLx2kmNjS/MuKkkUBK6k9792DwZhnIlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Okq72/btsLx2kmNjS/MuKkkUBK6k9792DwZhnIlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOkq72%2FbtsLx2kmNjS%2FMuKkkUBK6k9792DwZhnIlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;219&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;5. Death&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 죽은 경우 State가 바뀌게 되며 행동을 멈춥니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 아이템이 떨어집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mvHzD/btsLwKEWRNP/VEkIPerrdbw18x8MZNEGm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mvHzD/btsLwKEWRNP/VEkIPerrdbw18x8MZNEGm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mvHzD/btsLwKEWRNP/VEkIPerrdbw18x8MZNEGm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmvHzD%2FbtsLwKEWRNP%2FVEkIPerrdbw18x8MZNEGm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;205&quot; height=&quot;133&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;item&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;1. Gold&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Breakable Object를 부셨을 때, Gold가 되는 아이템이 드롭됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8&quot;&gt;언리얼 부서지는 오브젝트&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177252106&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;언리얼 부서지는 오브젝트&quot; data-og-description=&quot;언리얼 부서지는 오브젝트언리얼5에서 부서지는 오브젝트를 만드는 방법에 대한 내용입니다.Geometry CollectionFracture Mode를 선택하고 New를 눌러줍니다.이름 설정하고 저장하면 Geometry Collection이 생&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOEl5F/hyXOe73NRR/McNuUIOIAcVjNWNyDHani1/img.png?width=403&amp;amp;height=322&amp;amp;face=0_0_403_322,https://scrap.kakaocdn.net/dn/do7VbS/hyXSzW108a/RDKvJfPUFxgA20PHV6bng0/img.png?width=403&amp;amp;height=322&amp;amp;face=0_0_403_322,https://scrap.kakaocdn.net/dn/754Js/hyXSCsH2DO/l3fzSXyK5czRqybo3ugr60/img.png?width=1076&amp;amp;height=957&amp;amp;face=0_0_1076_957&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%B6%80%EC%84%9C%EC%A7%80%EB%8A%94-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOEl5F/hyXOe73NRR/McNuUIOIAcVjNWNyDHani1/img.png?width=403&amp;amp;height=322&amp;amp;face=0_0_403_322,https://scrap.kakaocdn.net/dn/do7VbS/hyXSzW108a/RDKvJfPUFxgA20PHV6bng0/img.png?width=403&amp;amp;height=322&amp;amp;face=0_0_403_322,https://scrap.kakaocdn.net/dn/754Js/hyXSCsH2DO/l3fzSXyK5czRqybo3ugr60/img.png?width=1076&amp;amp;height=957&amp;amp;face=0_0_1076_957');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 부서지는 오브젝트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 부서지는 오브젝트언리얼5에서 부서지는 오브젝트를 만드는 방법에 대한 내용입니다.Geometry CollectionFracture Mode를 선택하고 New를 눌러줍니다.이름 설정하고 저장하면 Geometry Collection이 생&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. Soul&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 죽은경우 Soul을 드롭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Soul에 접근하면 획득할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mvHzD/btsLwKEWRNP/VEkIPerrdbw18x8MZNEGm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mvHzD/btsLwKEWRNP/VEkIPerrdbw18x8MZNEGm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mvHzD/btsLwKEWRNP/VEkIPerrdbw18x8MZNEGm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmvHzD%2FbtsLwKEWRNP%2FVEkIPerrdbw18x8MZNEGm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;205&quot; height=&quot;133&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;3. Weaon&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weapon Actor&amp;nbsp; Class를 만들어서 무기 생성 및 장착합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장착하는 경우 무기 Effect와 무기 장착을 위해 생성된 Collision을 비활성 상태로 만들어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9E%A5%EC%B0%A9-C&quot;&gt;Unreal5 무기 생성 및 장착 C++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177254347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 무기 생성 및 장착 C++&quot; data-og-description=&quot;Unreal5 무기 생성 및 장착 C++. *이 글은 공부하면서 작성하는 글이며, 이전글과 이어지는 글이므로 이해하기 위해서는 이전글 확인이 필요할 수 있습니다. [프로그래밍/언리얼] - Unreal5 Overlap C++ Unr&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9E%A5%EC%B0%A9-C&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9E%A5%EC%B0%A9-C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bTgSJC/hyXSpGUJYw/0TKoP0jw4N9qJik3ifzQ71/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cgs5hN/hyXSrY2AG8/GjvDKyA16EKwAmHvqb9mn0/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cIrR6C/hyXOqHsxJ0/S8VnsJhYqz3qKY1zWYCtu1/img.png?width=1839&amp;amp;height=1685&amp;amp;face=0_0_1839_1685&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9E%A5%EC%B0%A9-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9E%A5%EC%B0%A9-C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bTgSJC/hyXSpGUJYw/0TKoP0jw4N9qJik3ifzQ71/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cgs5hN/hyXSrY2AG8/GjvDKyA16EKwAmHvqb9mn0/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cIrR6C/hyXOqHsxJ0/S8VnsJhYqz3qKY1zWYCtu1/img.png?width=1839&amp;amp;height=1685&amp;amp;face=0_0_1839_1685');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 무기 생성 및 장착 C++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 무기 생성 및 장착 C++. *이 글은 공부하면서 작성하는 글이며, 이전글과 이어지는 글이므로 이해하기 위해서는 이전글 확인이 필요할 수 있습니다. [프로그래밍/언리얼] - Unreal5 Overlap C++ Unr&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공격 Animation에 Notify를 사용해서 무기가 공격하는 중에만 Collision을 검사할 수 있도록 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C&quot;&gt;Unreal5 무기 Collision C++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1735177257035&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 무기 Collision C++&quot; data-og-description=&quot;Unreal5 무기 Collision C++ 안녕하세요. 이번 글에서는 무기 Collision 설정으로 공격 가능한 상태일 때만 Collision이 활성화되도록 하겠습니다. [프로그래밍/언리얼] - Unreal5 맞은 방향 알아내기 CrossProduct&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KbrCv/hyXSzCL7ZX/HpsHYAS4bt8B5H7dm2taa1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/bPwG4Z/hyXOpIzjol/3xRwnTROKcd6GVZc8gc1sK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cM0toK/hyXOnDXlp0/Y9DMtxwPZrTOdrmyMMmOBk/img.png?width=2230&amp;amp;height=1519&amp;amp;face=0_0_2230_1519&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KbrCv/hyXSzCL7ZX/HpsHYAS4bt8B5H7dm2taa1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/bPwG4Z/hyXOpIzjol/3xRwnTROKcd6GVZc8gc1sK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/cM0toK/hyXOnDXlp0/Y9DMtxwPZrTOdrmyMMmOBk/img.png?width=2230&amp;amp;height=1519&amp;amp;face=0_0_2230_1519');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 무기 Collision C++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 무기 Collision C++ 안녕하세요. 이번 글에서는 무기 Collision 설정으로 공격 가능한 상태일 때만 Collision이 활성화되도록 하겠습니다. [프로그래밍/언리얼] - Unreal5 맞은 방향 알아내기 CrossProduct&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collision을 이용해 맞았는지 확인하고, 같은 태그(같은 Enemy)인지 검사한 후 Damage와 Effect를 실행합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;알게 된 점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 엔진을 처음 배우며 다양한 요소를 경험할 수 있었고, 이를 통해 게임 개발에 필요한 틀을 제공받아 제작 과정에서 큰 도움을 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 학부 시절에는 상속이 중요하다는 것을 머리로는 알았지만 실감하기 어려웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 프로젝트를 통해 상속을 활용하면 코드 중복을 줄이고, 새로운 기능 추가나 기존 기능 수정이 훨씬 수월해진다는 점을 체감할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(여기서는 상속만 이야기 했지만 여러가지가 있습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄 요약: 언리얼 엔진에 많이 익숙해진 것 같고, 기본의 중요성을 깨달았다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;아쉬운 점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 언리얼 엔진을 사용해 진행한 프로젝트였던 만큼, 혼자 작업하다 보니 아쉬운 점이 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RPG 장르는 구현해야 할 기능이 많고, 공부해야 할 내용과 필요한 리소스도 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 한정된 시간과 경험만으로는 출시할 만한 퀄리티를 달성하기까지의 거리가 너무 멀게 느껴져, 결국 프로젝트를 빠르게 마무리하게 되어 아쉬움이 남았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 시간자체는 충분히 있었지만, 리소스를 구하거나 레벨을 구성하는 과정에서 어려움이 많았습니다. 또한, 언리얼 엔진에 대한 이해도가 부족해 인터넷에서 자료를 찾아가며 진행하다보니, 더 진행하면 과연 이 프로젝트를 끝낼 수 있을지 의문이 들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 효율적인 코드 작성 방법에 대한 확신도 없었고, 언리얼의 다양한 기능(ex.Behavior Tree)도 몰라서 제대로 활용하지 못해 프로젝트를 진행하면서 한계를 느끼기도 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 경험들은 아쉬움으로 남았지만, 동시에 많은 것을 배우고 고민할 수 있는 기회가 되었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;느낀 점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확실히 이런 프로젝트를 진행하면서 만들고, 버그에 걸리고, 디버깅을 통해 문제를 해결하며 방법을 검색하는 과정에서 코드에 점점 더 익숙해지고 C++과 언리얼의 이해도가 높아지는 것을 느꼈습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 기능을 프로젝트를 진행하며 공부할 수 있었고, 학부생 시절에는 중요하다고 생각했지만 실감하지 못했던 개념들의 중요성을 이번 프로젝트를 통해 더 깊이 느낄 수 있었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실행 영상.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 프로젝트 실행 영상.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/_WJOPLFuXFY?si=Zqt6kIl7i6i4wmH1&quot;&gt;https://youtu.be/_WJOPLFuXFY?si=Zqt6kIl7i6i4wmH1&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=_WJOPLFuXFY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bHJbsE/hyXOnqh06x/kLWKscDHLbwFfFMFognknK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/xFyTb/hyXStCm1fR/8NopCBcfWheSSMOkeN4eGK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;언리얼 RPG 테스트 1&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/_WJOPLFuXFY&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>Project</category>
      <category>RPG</category>
      <category>SLASH</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/696</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-RPG-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-1-C#entry696comment</comments>
      <pubDate>Mon, 16 Dec 2024 23:17:40 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 멀티플레이 FPS C++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%A9%80%ED%8B%B0%ED%94%8C%EB%A0%88%EC%9D%B4-FPS</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 멀티플레이 FPS C++&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이 게임에 대해 공부하기 위해 만든 프로젝트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이 FPS를 개발하면서 Steam이나 Lan매칭을 위한 멀티플레이 플러그인을 만들어서 사용했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7fVxq/btsLw4Qx9Ws/lU99VeX7H24FojkEDZb66K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7fVxq/btsLw4Qx9Ws/lU99VeX7H24FojkEDZb66K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7fVxq/btsLw4Qx9Ws/lU99VeX7H24FojkEDZb66K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7fVxq%2FbtsLw4Qx9Ws%2FlU99VeX7H24FojkEDZb66K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 그냥 멀티플레이 FPS를 C++로 만들면서 공부나 해볼까 하면서 진행한 프로젝트였는데 이 프로젝트를 진행하면서 생각보다 멀티플레이 게임을 만들때 생각해야되는 것이 많구나 하는 것을 느낀 프로젝트였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;프로젝트.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 언어&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : c++ &amp;amp; 블루프린트(약간)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 엔진&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Unreal5.4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 환경(실행 환경) : 윈도우 11.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이 FPS 코드(멀티플레이 플러그인 포함).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/MultiFPS&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/ykarr/MultiFPS&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1734213211354&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ykarr/MultiFPS: unreal&quot; data-og-description=&quot;unreal. Contribute to ykarr/MultiFPS development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ykarr/MultiFPS&quot; data-og-url=&quot;https://github.com/ykarr/MultiFPS&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bHJuBy/hyXKw1Ao9U/rhBKWYHvNcmfWUdfVhsWt1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/Hlb6n/hyXKuQkR1J/qjgcjanPlXXT2B5Gk6MBK0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/MultiFPS&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ykarr/MultiFPS&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bHJuBy/hyXKw1Ao9U/rhBKWYHvNcmfWUdfVhsWt1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/Hlb6n/hyXKuQkR1J/qjgcjanPlXXT2B5Gk6MBK0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ykarr/MultiFPS: unreal&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;unreal. Contribute to ykarr/MultiFPS development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기능.&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 멀티플레이 플러그인.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1.1 멀티플레이 메인화면.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmJwm7/btsLjFbujwx/YRVUkZjRPJGOM6axCBA7gK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmJwm7/btsLjFbujwx/YRVUkZjRPJGOM6axCBA7gK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmJwm7/btsLjFbujwx/YRVUkZjRPJGOM6axCBA7gK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmJwm7%2FbtsLjFbujwx%2FYRVUkZjRPJGOM6axCBA7gK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;306&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1.2 멀티플레이 호스트 메뉴.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이 가능 인원 설정, Lan연결인지 Steam연결인지 설정해서 Session생성했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lf7iV/btsLkczVlfb/KbKeckIvefHTqz20fwm4M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lf7iV/btsLkczVlfb/KbKeckIvefHTqz20fwm4M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lf7iV/btsLkczVlfb/KbKeckIvefHTqz20fwm4M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flf7iV%2FbtsLkczVlfb%2FKbKeckIvefHTqz20fwm4M0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;238&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1.3 멀티플레이 세션 찾기 메뉴.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LAN이나 Online(Steam) 선택해서 세션을 찾고, 10초동안 해당 세션에 들어갈 수 있도록 만들었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5wc7a/btsLiKLyl4o/l2zb5JG4PVNIyk4dzpc9I0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5wc7a/btsLiKLyl4o/l2zb5JG4PVNIyk4dzpc9I0/img.png&quot; width=&quot;400&quot; height=&quot;199&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;275&quot; data-is-animation=&quot;false&quot; style=&quot;width: 59.037%; margin-right: 10px;&quot; data-widthpercent=&quot;59.73&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5wc7a/btsLiKLyl4o/l2zb5JG4PVNIyk4dzpc9I0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5wc7a%2FbtsLiKLyl4o%2Fl2zb5JG4PVNIyk4dzpc9I0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;553&quot; height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dt26ab/btsLqzon14v/9j0c4e9a0RM4HjsUNzdMe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dt26ab/btsLqzon14v/9j0c4e9a0RM4HjsUNzdMe1/img.png&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;388&quot; data-is-animation=&quot;false&quot; style=&quot;width: 39.8002%;&quot; data-widthpercent=&quot;40.27&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dt26ab/btsLqzon14v/9j0c4e9a0RM4HjsUNzdMe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdt26ab%2FbtsLqzon14v%2F9j0c4e9a0RM4HjsUNzdMe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;526&quot; height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 캐릭터.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.1 팀 선택.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션에 입장하면 팀을 선택할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Select Team Widget(Client)을 통해 팀을 선택하면 GameMode(Server)에서 각 팀의 정해진 스폰 위치중 랜덤한 위치에 정해진 팀 캐릭터를 스폰시키게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYALpr/btsLimRZ748/gEKRQM0k0lvUpsMhAhSuC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYALpr/btsLimRZ748/gEKRQM0k0lvUpsMhAhSuC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYALpr/btsLimRZ748/gEKRQM0k0lvUpsMhAhSuC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYALpr%2FbtsLimRZ748%2FgEKRQM0k0lvUpsMhAhSuC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;260&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.2 1인칭 캐릭터.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 캐릭터를 만들 때 고민을 좀 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상대방에게 몸은 모두 보이고, 그림자도 모두 보여야 하는데 1인칭 게임이다보니 머리가 Player에게 보이면 안된다고 생각했습니다. 그래서 이것을 해결하기 위해 고민을 좀 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 좋은 방법이 생각나지 않아서 Mesh를 두개 사용해서 해결했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1개는 SkeletonMesh-&amp;gt;bOwnerNoSee = true; 를 설정해서 Player에게 보이지 않고 상대방에게만 보이지 않도록 설정했습니다. 나머지 한개는 GetMesh()-&amp;gt;bOnlyOwnerSee = true;로 설정해서 플레이어에게만 보이도록 설정하고 Mesh의 Head부분만 숨겼습니다. 이렇게 해서 그림자도 bOwnerNoSee 설정을 해놓은 Mesh만 보이도록 설정해서 겉으로 보기에는 다 정상적으로 나오게 만들었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lniEX/btsLjcAQ9VZ/trnPBUYggqYBVzOSUmrVB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lniEX/btsLjcAQ9VZ/trnPBUYggqYBVzOSUmrVB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lniEX/btsLjcAQ9VZ/trnPBUYggqYBVzOSUmrVB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlniEX%2FbtsLjcAQ9VZ%2FtrnPBUYggqYBVzOSUmrVB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;339&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.3 상태 관리.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enum을 이용해 상태관리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;걷는중인지, 뛰는중인지, 움크리고 있는지 이부분을 Enum과 Tarray를 이용해 스택형으로 관리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ex) 뛰다가 움크리면 움크리기가 실행되고, 움크리기를 그만하면 다시 키를 누르지 않아도 뛰고있게됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UnArm, Pistol, Rifle 이렇게 3가지 경우가 있는데 이 경우를 Enum을 이용해 관리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 Enum을 무기 장착 Soket설정 등등에 사용했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPdBWz/btsLjrqVgjN/SKWWkKXKal6Hjqi8GTBXGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPdBWz/btsLjrqVgjN/SKWWkKXKal6Hjqi8GTBXGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPdBWz/btsLjrqVgjN/SKWWkKXKal6Hjqi8GTBXGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPdBWz%2FbtsLjrqVgjN%2FSKWWkKXKal6Hjqi8GTBXGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;437&quot; height=&quot;254&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.4 Attribute&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DataTable을 활용해 캐릭터의 Status를 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWqjs9/btsLitQ1fNn/DnocfQvNFcMZACZ5yxnSsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWqjs9/btsLitQ1fNn/DnocfQvNFcMZACZ5yxnSsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWqjs9/btsLitQ1fNn/DnocfQvNFcMZACZ5yxnSsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWqjs9%2FbtsLitQ1fNn%2FDnocfQvNFcMZACZ5yxnSsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;499&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.5 Aim offset&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 함수를 사용해 AimDirection을 구하고 AimDirection값으로 Aim Offset을 설정했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1734221504883&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void ABattleCharacterBase::CalculateAimDirection()
{
	FRotator Rot = UKismetMathLibrary::NormalizedDeltaRotator(GetControlRotation(), GetActorRotation());
	AimDirection = Rot.Pitch;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터의 컨트롤러 기준 회전값과 캐릭터의 월드 기준 회전값 간의 차이를 계산하고, 이 값을 -180 ~ 180범위로 정규화해서 Rot 변수에 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 Rot.pitch의 값이 음수라면 해당 플레이어의 Aim이 아래를 향하고 있는 것이고, 양수라면 하늘을 향하는 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5btsA/btsLkkki4WU/92Uh9PIrL2Z89rP1sJspDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5btsA/btsLkkki4WU/92Uh9PIrL2Z89rP1sJspDK/img.png&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;520&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5btsA/btsLkkki4WU/92Uh9PIrL2Z89rP1sJspDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5btsA%2FbtsLkkki4WU%2F92Uh9PIrL2Z89rP1sJspDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KAqHn/btsLjtvs322/V4M6Qz2E1szwJxrzZGA2aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KAqHn/btsLjtvs322/V4M6Qz2E1szwJxrzZGA2aK/img.png&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;520&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KAqHn/btsLjtvs322/V4M6Qz2E1szwJxrzZGA2aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKAqHn%2FbtsLjtvs322%2FV4M6Qz2E1szwJxrzZGA2aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.6 아이템 장착.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무기 아이템(Collision)에 Player가 접근했을 때 무장상태가 아닌경우 손에 무기 아이템을 장착하고 손이나 등에 무기가 있는경우 무장되지 않은 무기를 소켓에 장착합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 장착하면서 UI 업데이트가 진행됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I7krx/btsLqxKRsfq/2dQ3ryDcLSTAjK20C4ub70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I7krx/btsLqxKRsfq/2dQ3ryDcLSTAjK20C4ub70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I7krx/btsLqxKRsfq/2dQ3ryDcLSTAjK20C4ub70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI7krx%2FbtsLqxKRsfq%2F2dQ3ryDcLSTAjK20C4ub70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;316&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.7 총 장전.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장전 애니메이션은 현재 장착중인 무기 아이템에서 가져와서 실행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장전 애니메이션은 일시적인 행위라서 나중에 들어올 플레이어들에게 영향을 끼치지 않아도 되므로, 굳이 RepNotify하지 않아도 됩니다. 이 부분은 따로 아래에 설명을 작성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.8 총 쏘기.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트에서 총을 쏘는 키를 누르면 서버에서 Shoot코드를 실행하고, 총 사운드와 이펙트를 Multicast로 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linetrace를 활용해 Linetrace의 위치가 Head bone인경우 Head Shoot 그 외의 나머지인경우 BodyShoot으로 설정해 받는 데미지가 다르도록 설정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탄약 수나 사격 조건은 서버에서만 확인할 수 있도록 만들었고, 총을 쏠 때 사운드나 이펙트를 Multicast로 호출해서 모든 클라이언트가 동일한 사운드와 이펙트를 실행하도록 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;즉, 클라이언트에서는 서버 RPC 호출만 담당했습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 아이템.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3.1 데이터 테이블.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템에 대한 정보는 데이터 테이블을 사용해 관리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템 이름, Type, Thumbnail아이콘, 해당 무기의 사용 애니메이션, 사운드, 이펙트, 데미지 등을 저장해 사용했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;1048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWnAzQ/btsLjborSgE/r5vr64kEfS8tcD34DrpjK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWnAzQ/btsLjborSgE/r5vr64kEfS8tcD34DrpjK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWnAzQ/btsLjborSgE/r5vr64kEfS8tcD34DrpjK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWnAzQ%2FbtsLjborSgE%2Fr5vr64kEfS8tcD34DrpjK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;564&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;1048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3.2 아이템 장착(상호작용)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 장착하는 상호작용은 Collision으로 처리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Begin overlap함수등을 만들어 특정 Collision에 Player Tag를 가지고 있는 Actor가 접근하면 장착하거나 하지않거나를 수행하는 방식으로 코드를 작성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 버리는 경우 특정 Actor가 Collision 영역에 들어왔을때만 호출되므로, 버리는게 모두 완료된 이후 begin overlap이 동작하도록 bool함수를 설정해서 들고있다가 떨어뜨린 무기라면 Sphere Collision 범위 밖으로 나갔다 와야 다시 상호작용 할 수 있도록 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0GIyq/btsLiXRoeYi/iH11xlfGAYA9KJsxrnaWFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0GIyq/btsLiXRoeYi/iH11xlfGAYA9KJsxrnaWFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0GIyq/btsLiXRoeYi/iH11xlfGAYA9KJsxrnaWFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0GIyq%2FbtsLiXRoeYi%2FiH11xlfGAYA9KJsxrnaWFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;409&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;알게된점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플레이 게임에서의 서버의 역할.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RepNotify와 Multicast의 차이와 사용이유.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;Multicast.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능: 서버에서 실행된 함수를 모든 클라이언트에게 브로드캐스트.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제한: Multicast는 실행 시점에 연결된 클라이언트만 영향을 받음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 플레이어가 무기를 장착하는 애니메이션을 실행하기 위해 Multicast를 사용하면 이후 서버에 접속한 클라이언트는 이 애니메이션을 볼 수 없음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적합: 일시적 효과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 폭발, 파티클 등의 일시적 효과.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;RepNotify&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능: 변수가 변경될 때 해당 변경을 클라이언트에 알리고, 추가적으로 서버와 클라이언트에서 이를 처리할 기회 제공.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징: 서버에서 변수가 변경되면 클라이언트로 자동 복제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수가 변경될 때에만 클라이언트의 OnRep_함수가 호출됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지속적으로 유지되어야하는 정보에 적합.( 게임에 전송해야 할 시각적 변경 사항이 있는 경우. )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 클라이언트가 항상 최신 상태를 유지하도록 보장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 클라이언트가 서버에 연결되더라도 현재 상태를 동기화 받을 수 있음.&lt;/p&gt;
&lt;div data-purpose=&quot;bookmark-body&quot;&gt;
&lt;div data-purpose=&quot;safely-set-inner-html:rich-text-viewer:html&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--------------------------------------------------------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* NONE : 기본값이며 변화를 안 알린다&lt;br /&gt;* Replicated : 다른 머신 모두가 그 변화를 알 수 있도록한다&lt;br /&gt;-&amp;gt; 설정이 되어 있으면, 변화가 다른 머신에 반드시 전달 되다는 보장이 있다&lt;br /&gt;* 엄청난 양의 리플리케이션을 하는 경우에는 네트워크 지연(랙)이 발생할수 있다. 빠르긴 하지만 즉시 작업은 아니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* RepNotify : Replicated키워드의 역활을 그대로 한다. 여기에 추가로 변수가 변할 떄, 누군가가 변경을 하면, 이에 대한 반응을 할 수 있는 기회를 준다. 함수를 호출하여 작업을 할 수 있는 기회를 얻는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;*주의점&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Replication&lt;/span&gt;&lt;span&gt;관련&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;옵션에서&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;Replicated&lt;/span&gt;&lt;span&gt;와&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;RepNotify&lt;/span&gt;&lt;span&gt;는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;차이가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있는데.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Replicated&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;계속&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;감지하고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;RepNotify&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;변화가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있을때에만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;감지한다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; C&lt;/span&gt;&lt;span&gt;++에서는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;RepNotify&lt;/span&gt;&lt;span&gt;는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수동으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;호출해줘야&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하지만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;블루&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;프린트에서는 편의상 자동으로 클라이언트와 서버에서 호출한다. &lt;/span&gt;&lt;span&gt;만약&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;한번만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;실행이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;되어진다면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;그것은&lt;/span&gt;&lt;span&gt; 함수&lt;/span&gt;&lt;span&gt;수호출&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;리플리케이션이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;적절하다.(폭발&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;같은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;일시적인것)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;하지만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;계속&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;유지되어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;지는것은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;변수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;리플리케이션을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하는것이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;좋다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;아쉬운 점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼자서 처음 만들어보는 멀티플레이 게임이다보니 이게 왜 버그가 났는지에 대해 단시간에 찾기가 쉽지 않았고, Replicated 문제가 발생하면 Delay로 해결해서 이 부분에서 문제가 생기는 경우도 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 가벼운 마음으로 시작한 프로젝트라서 평소와 다르게 한개의 클래스에 과도하게 많은 기능을 넣어 수정하기가 힘든 부분이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평소 Standalon프로젝트를 많이 개발하면서 만든 기능들은 다른 방식으로 구현해보고 싶어서 구현한 부분이 몇가지 있는데 만들고 보니 이 부분들이 좀 아쉬웠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;느낀점.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블루프린트로 만들어진 멀티플레이 FPS를 참고하며 C++로 개발을 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진행 화정에서 C++과 블루프린트에서 멀티플레이가 다르게 동작하는 부분이 있다는 것을 알게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 차이점을 이해하고 해결하기 위해 관련 자료를 찾아보며 멀티플레이에 대한 전반적인 이해를 높일 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 블루프린트에서 자동으로 처리 되는 부분을 C++에서는 수동으로 구현해야 하는 경우도 있었고, 예상치 못한 버그가 자주 발생해 이를 수정하며 많은 공부가 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 멀티플레이 게임 특성상 솔로 게임과는 달리 동기화 문제를 신경 써야 했고, 동일한 기능을 개발하더라도 코드가 더 길어지고 다양한 문제가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 간단한 멀티플레이 FPS를 만들어보자 하는 가벼운 마음으로 시작했지만, 프로젝트를 진행하면서 멀티플레이 환경에서 고려해야 할 요소들이 훨씬 많다는 것을 깨닫게 되는 프로젝트였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;플레이 영상.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/4WwZydjSaW0?si=drN332raHMK-MLAc&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/4WwZydjSaW0?si=drN332raHMK-MLAc&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=4WwZydjSaW0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bamf3L/hyXOpNhDak/9v4zaMZXKgd5nPpY5snw3k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/0ufku/hyXOoAP5bi/qCdzpWsvZaXi8uYS9eZcmk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;언리얼 Multiplay FPS 테스트&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/4WwZydjSaW0&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>c++</category>
      <category>FPS</category>
      <category>multiplay</category>
      <category>언리얼</category>
      <category>프로젝트</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/695</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%A9%80%ED%8B%B0%ED%94%8C%EB%A0%88%EC%9D%B4-FPS#entry695comment</comments>
      <pubDate>Sun, 15 Dec 2024 06:56:15 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 호러게임 프로젝트 c++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%98%B8%EB%9F%AC%EA%B2%8C%EC%9E%84-c</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 호러게임 프로젝트 C++ &lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에 나오는 호러게임은 언리얼을 공부하던 초반에 만든 프로젝트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 당시 언리얼 엔진의 기능에 익숙하지 않았고, C++에 더 익숙해지기 위해 개발을 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 특별한 아이디어보다는 공포게임에서 흔히 볼 수 있는 요소들을 우선적으로 구현해보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHQ7Sn/btsLlcl9xa1/ok22ae9Tj1GJ9TflvjXfDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHQ7Sn/btsLlcl9xa1/ok22ae9Tj1GJ9TflvjXfDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHQ7Sn/btsLlcl9xa1/ok22ae9Tj1GJ9TflvjXfDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHQ7Sn%2FbtsLlcl9xa1%2Fok22ae9Tj1GJ9TflvjXfDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;321&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;323&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공포게임은 스토리와 레벨 디자인이 가장 중요하다고 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분은 제가 자신이 없어서 프로젝트를 중단하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 특별하게 추가할 수 있는 요소가 생각나면 나중에 다시 개발할 계획이지만, 이 프로젝트를 이어서 계발하기보다는 처음부터 다시 시작할 생각입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;게임에 대해.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 언어&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : C++&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 엔진 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Unreal 5.1 (현재는 5.4.4)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 환경(실행 환경) : 윈도우 11.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;코드.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/HorrorGameTest&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/ykarr/HorrorGameTest&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1733729318468&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ykarr/HorrorGameTest&quot; data-og-description=&quot;Contribute to ykarr/HorrorGameTest development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ykarr/HorrorGameTest&quot; data-og-url=&quot;https://github.com/ykarr/HorrorGameTest&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oNQ8Q/hyXGK0lz0Q/nOTQsbkFjPNME8AaAkKyQK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bP4h3U/hyXKrrf27W/d2DxkusAI2gMlLgYosuKn0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/HorrorGameTest&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ykarr/HorrorGameTest&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oNQ8Q/hyXGK0lz0Q/nOTQsbkFjPNME8AaAkKyQK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bP4h3U/hyXKrrf27W/d2DxkusAI2gMlLgYosuKn0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ykarr/HorrorGameTest&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to ykarr/HorrorGameTest development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기능.&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 아이템.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템 주변에 접근하면 화살표가 나타납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 주울 수 있는 거리에 접근하면 &quot;E&quot; key UI가 나타납니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U6kkL/btsLfYwJxGr/KN0k0k4rBkSzD36Jpp9tj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U6kkL/btsLfYwJxGr/KN0k0k4rBkSzD36Jpp9tj1/img.png&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;780&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.0302%; margin-right: 10px;&quot; data-widthpercent=&quot;46.57&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U6kkL/btsLfYwJxGr/KN0k0k4rBkSzD36Jpp9tj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU6kkL%2FbtsLfYwJxGr%2FKN0k0k4rBkSzD36Jpp9tj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;719&quot; height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FC63L/btsLfOViIfv/uKNY11qd9OGt1FuxseHDn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FC63L/btsLfOViIfv/uKNY11qd9OGt1FuxseHDn1/img.png&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;1026&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.807%;&quot; data-widthpercent=&quot;53.43&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FC63L/btsLfOViIfv/uKNY11qd9OGt1FuxseHDn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFC63L%2FbtsLfOViIfv%2FuKNY11qd9OGt1FuxseHDn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1085&quot; height=&quot;1026&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현을 하기위해 아이템 Actor에 Begin Overlap, EndOverlap 함수를 만들어서 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다보니 여러가지 불편한게 많아서 그냥 캐릭터에 Collision을 만들어서 처리하거나 다른 방법으로 구현하는게 많았나 하는 생각이 많이 드는 기능이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아이템 주변에 플레이어가 접근하면 아이템 위치를 알려주기 위해 Collision을 사용했는데 Collision이 너무 크고 많아서 레벨을 수정하거나 할 때 불편함.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 인벤토리.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인벤토리에 아이템이 없을 때는 아이템 칸이 활성화되지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(마우스를 올려도 색이 변하거나 하지 않음.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bocXJQ/btsLaKZlsHZ/qCpzlEFYbKd0TD0tfE5jTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bocXJQ/btsLaKZlsHZ/qCpzlEFYbKd0TD0tfE5jTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bocXJQ/btsLaKZlsHZ/qCpzlEFYbKd0TD0tfE5jTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbocXJQ%2FbtsLaKZlsHZ%2FqCpzlEFYbKd0TD0tfE5jTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;269&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템이 존재하면 아이템 칸이 활성화되며, 아이템 위에 마우스를 올리면 Tooltip(아이템에 대한 정보)을 보여줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDcJCG/btsLbAuXqbX/pAhVp4juliblFr41WEpKt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDcJCG/btsLbAuXqbX/pAhVp4juliblFr41WEpKt0/img.png&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;540&quot; data-is-animation=&quot;false&quot; style=&quot;width: 42.2687%; margin-right: 10px;&quot; data-widthpercent=&quot;42.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDcJCG/btsLbAuXqbX/pAhVp4juliblFr41WEpKt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDcJCG%2FbtsLbAuXqbX%2FpAhVp4juliblFr41WEpKt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;776&quot; height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crmYnD/btsLakNAW8v/JlzQ8cCKhQkEulJlgwHz50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crmYnD/btsLakNAW8v/JlzQ8cCKhQkEulJlgwHz50/img.png&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;625&quot; data-is-animation=&quot;false&quot; style=&quot;width: 56.5685%;&quot; data-widthpercent=&quot;57.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crmYnD/btsLakNAW8v/JlzQ8cCKhQkEulJlgwHz50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrmYnD%2FbtsLakNAW8v%2FJlzQ8cCKhQkEulJlgwHz50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1202&quot; height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템을 클릭하면 사용할 것인지, 살펴볼 것인지, 떨어뜨릴 것인지 결정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vDYtD/btsLbmwSzoi/JKgpoSPypTi4n9cTEelhK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vDYtD/btsLbmwSzoi/JKgpoSPypTi4n9cTEelhK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vDYtD/btsLbmwSzoi/JKgpoSPypTi4n9cTEelhK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvDYtD%2FbtsLbmwSzoi%2FJKgpoSPypTi4n9cTEelhK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;263&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Examin을 누르면 이렇게 동작합니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451511195&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/gLdnB/hyXGM4TRo7/8OhKZA07lb3aEeE6zss0a1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/S6DSc/hyXGCupDQ8/JnXd1ZkTUIgca3ZiUi8xu1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451511195?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Examin을 구현하기 위해 맵에서 조금 떨어진 공간에 Examin Actor를 만들어서 SceneCapture2D를 이용해 랜더링 정보를&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Render Target(실시간으로 업데이트되는 텍스처)에 넘겨줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;945&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tSxGX/btsLiI8sHfh/vnlrHQknnIl5fzKAxc7sj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tSxGX/btsLiI8sHfh/vnlrHQknnIl5fzKAxc7sj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tSxGX/btsLiI8sHfh/vnlrHQknnIl5fzKAxc7sj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtSxGX%2FbtsLiI8sHfh%2FvnlrHQknnIl5fzKAxc7sj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;319&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;945&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 받은 랜더링 정보를 Material형식으로 만들었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi6Ata/btsLkj0ihG2/LZxXYakFymqUv05JAf8QU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi6Ata/btsLkj0ihG2/LZxXYakFymqUv05JAf8QU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi6Ata/btsLkj0ihG2/LZxXYakFymqUv05JAf8QU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi6Ata%2FbtsLkj0ihG2%2FLZxXYakFymqUv05JAf8QU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;343&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 플레이어의 UI에 Image형식으로 보여줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj2vuf/btsLj4bcm85/oYIo6Ga73JwHgmSaI7Iuc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj2vuf/btsLj4bcm85/oYIo6Ga73JwHgmSaI7Iuc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj2vuf/btsLj4bcm85/oYIo6Ga73JwHgmSaI7Iuc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj2vuf%2FbtsLj4bcm85%2FoYIo6Ga73JwHgmSaI7Iuc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;343&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 숨을 수 있는 오브젝트 (Locker)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linetrace를 사용해서 Locker에 숨거나 Locker에서 나올 수 있게 구현했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Locker는 Enemy의 추격을 피할 수 있는 위치로 이에 대한 설명은 아래 Enemy쪽에서 더 적을 예정입니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451532392&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cMXigE/hyXKpAlkC4/4tN8qYidW70jImSzXplD11/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/x4pLm/hyXKnoYZB1/OimBzJXluRh1CDy9xpUSmk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451532392?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrow Component를 이용해 로커에 들어갈 때의 위치와 방향, 들어갔을 때의 위치와 방향, 나올 때의 위치와 방향을 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci9skm/btsLkjMK4nc/BE01pfbkjMJtg5oEKjryl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci9skm/btsLkjMK4nc/BE01pfbkjMJtg5oEKjryl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci9skm/btsLkjMK4nc/BE01pfbkjMJtg5oEKjryl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci9skm%2FbtsLkjMK4nc%2FBE01pfbkjMJtg5oEKjryl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;506&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Thimeline과 float curve를 이용해 부드럽게 로커에 들어가거나 나올 수 있도록 TimelineEvent들을 활용했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNrnN9/btsLkJ5p88g/Sk3FyrUhq1EAAitPt4cGxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNrnN9/btsLkJ5p88g/Sk3FyrUhq1EAAitPt4cGxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNrnN9/btsLkJ5p88g/Sk3FyrUhq1EAAitPt4cGxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNrnN9%2FbtsLkJ5p88g%2FSk3FyrUhq1EAAitPt4cGxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;228&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 정보를 알려주는 메모 아이템.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 아이템은 글이 써져 있을 뿐이지 Examin과 거의 동일하기 때문에 설명은 생략합니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451532404&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/EVCHG/hyXKsRlcPu/p4K9kaH4kJnQkeAmXnP9kk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/iCFJt/hyXKv8ncfO/DjupDM1j2UM78k21UrKVx0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451532404?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글폰트 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;언리얼 한글폰트&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1734302803358&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;언리얼 한글폰트&quot; data-og-description=&quot;언리얼 한글폰트. UE5에서 한글 폰트를 적용하는 방법에 대한 글입니다. 해당 글에서 사용한 폰트는 눈누라는 사이트에서 받았습니다. UMG에 한글폰트 적용하기. UMG 간단합니다. 다운받은 TTF 파일&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/behZQJ/hyXOn29ChI/JNKwMH2OpnxIRvlWZkZ1c1/img.png?width=800&amp;amp;height=488&amp;amp;face=0_0_800_488,https://scrap.kakaocdn.net/dn/cu7dVx/hyXKxl2olj/tgxjs1m3kLS06q2p9gGWf1/img.png?width=800&amp;amp;height=488&amp;amp;face=0_0_800_488,https://scrap.kakaocdn.net/dn/d69LOx/hyXKj2pr4J/2Doot6oGpVT1fkUDgEb2M1/img.png?width=739&amp;amp;height=416&amp;amp;face=0_0_739_416&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/behZQJ/hyXOn29ChI/JNKwMH2OpnxIRvlWZkZ1c1/img.png?width=800&amp;amp;height=488&amp;amp;face=0_0_800_488,https://scrap.kakaocdn.net/dn/cu7dVx/hyXKxl2olj/tgxjs1m3kLS06q2p9gGWf1/img.png?width=800&amp;amp;height=488&amp;amp;face=0_0_800_488,https://scrap.kakaocdn.net/dn/d69LOx/hyXKj2pr4J/2Doot6oGpVT1fkUDgEb2M1/img.png?width=739&amp;amp;height=416&amp;amp;face=0_0_739_416');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 한글폰트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 한글폰트. UE5에서 한글 폰트를 적용하는 방법에 대한 글입니다. 해당 글에서 사용한 폰트는 눈누라는 사이트에서 받았습니다. UMG에 한글폰트 적용하기. UMG 간단합니다. 다운받은 TTF 파일&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 상호작용 가능한 자물쇠.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호는 C++의 생성자에서 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 필요하다면, Beginplay에서 비밀번호를 수정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d45gjd/btsLjIl0EBB/L0b3XjYW9aHSUz28lA87TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d45gjd/btsLjIl0EBB/L0b3XjYW9aHSUz28lA87TK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d45gjd/btsLjIl0EBB/L0b3XjYW9aHSUz28lA87TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd45gjd%2FbtsLjIl0EBB%2FL0b3XjYW9aHSUz28lA87TK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;371&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자물쇠에 상호작용하면 SetViewTargetWithBlend함수를 사용해 플레이어의 시점에서 설정된 Camera Component 시점으로 부드럽게 변경됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baM7Pz/btsLji83viH/cbw2jwwkG2fxNaLYqnAv30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baM7Pz/btsLji83viH/cbw2jwwkG2fxNaLYqnAv30/img.png&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;421&quot; data-is-animation=&quot;false&quot; style=&quot;width: 54.2345%; margin-right: 10px;&quot; data-widthpercent=&quot;54.87&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baM7Pz/btsLji83viH/cbw2jwwkG2fxNaLYqnAv30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaM7Pz%2FbtsLji83viH%2Fcbw2jwwkG2fxNaLYqnAv30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;838&quot; height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEJKNQ/btsLgZnZtHC/KCpEZ2KhVzEKBsdBp8NLu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEJKNQ/btsLgZnZtHC/KCpEZ2KhVzEKBsdBp8NLu1/img.png&quot; data-origin-width=&quot;1655&quot; data-origin-height=&quot;1011&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;45.13&quot; style=&quot;width: 44.6027%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEJKNQ/btsLgZnZtHC/KCpEZ2KhVzEKBsdBp8NLu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEJKNQ%2FbtsLgZnZtHC%2FKCpEZ2KhVzEKBsdBp8NLu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1655&quot; height=&quot;1011&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 자물쇠에 넣어놓은 UI위젯과 상호작용해 비밀번호를 설정맞추면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호를 맞추면 자물쇠개 풀리는 애니메이션이 발생하고 사라집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2107&quot; data-origin-height=&quot;1156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5my5z/btsLhuOrcLL/Kkmol8pxuu3hXzpTtgI0Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5my5z/btsLhuOrcLL/Kkmol8pxuu3hXzpTtgI0Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5my5z/btsLhuOrcLL/Kkmol8pxuu3hXzpTtgI0Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5my5z%2FbtsLhuOrcLL%2FKkmol8pxuu3hXzpTtgI0Ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2107&quot; height=&quot;1156&quot; data-origin-width=&quot;2107&quot; data-origin-height=&quot;1156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시점변경에 관련된 영상.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;언리얼 카메라 시점 변경 c++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1734044080306&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;언리얼 카메라 시점 변경 c++&quot; data-og-description=&quot;언리얼 카메라 시점 변경 c++언리얼에서 c++을 이용해 카메라 시점을 변경 하는 방법에 대해 보여주는 글입니다.이 글에서는 'SetViewTargetWithBlend'함수를 활용해 카메라 전환 시 부드러운 화면 전환&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c&quot; data-og-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mF0oE/hyXKqmzXnc/z2pUjkkCQxGBEtP5MZHpFk/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/KG25Q/hyXKl6BPGg/oB1ykMZuFTkh2JfgSkdzx0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cxmlSH/hyXKtDAPRi/GcECDHcJ4qAd6rve4VMUt0/img.png?width=432&amp;amp;height=489&amp;amp;face=0_0_432_489&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mF0oE/hyXKqmzXnc/z2pUjkkCQxGBEtP5MZHpFk/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/KG25Q/hyXKl6BPGg/oB1ykMZuFTkh2JfgSkdzx0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cxmlSH/hyXKtDAPRi/GcECDHcJ4qAd6rve4VMUt0/img.png?width=432&amp;amp;height=489&amp;amp;face=0_0_432_489');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 카메라 시점 변경 c++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 카메라 시점 변경 c++언리얼에서 c++을 이용해 카메라 시점을 변경 하는 방법에 대해 보여주는 글입니다.이 글에서는 'SetViewTargetWithBlend'함수를 활용해 카메라 전환 시 부드러운 화면 전환&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 문&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문은 처음에 한쪽으로만 열리는 문, 양쪽으로 열리는 문, 물리가 적용되는 문 이렇게 3종류를 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 이 프로젝트를 시작하면서 열쇠를 숨겨놓고 찾아서 탈출하는 쪽이 공포게임에서 흔한 종류라고 생각했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 열쇠를 찾고 탈출할때 상호작용없이 물리적으로 문을 여는 것 보다 상호작용을 통해 문을 여는쪽이 나중에 더 좋다고 생각해서 다음 방법을 선택했습니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451672880&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/oFNKl/hyXOmpDOrt/wYR2pcJo0maiiqODlT77jk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/ny0z2/hyXKv2Pa54/x9YiZCpvglrRLeNp97EkHK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451672880?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enemy가 플레이어를 추적할 수 있도록 하기 위해 Can Ever Affect Navigation 설정을 False로 설정하고, Overlap함수를 이용해 Enmey가 문의 Collision에 접근하면 열리고 Collision을 벗어나면 문이 닫히도록 만들었습니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/451673247&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/02KEI/hyXOiOjELA/skgVXCVrnqFpwmfyzYxpg0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/vA5Ty/hyXOdTMmxG/Odu9VefmNMAifeARYE9Dc0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/451673247?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;7. 분위기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깜빡이는 조명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SetTimer함수를 이용해 Delay시간후 Intensity를 변경해 깜빡이는 조명을 구현했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BGM&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오브젝트 하나에 BGM을 위한 Sound를 넣었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;8. Attribute.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;HP System.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HP는 피해, 회복, UI모두 구현했지만 잡히면 죽는 몬스터 하나만 구현해서 사실상 쓰이지는 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Stamina System.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;걷기와 달리기가 존재해서 달리기를 하면 스태미너가 줄어들고, 일정시간 달리지 않으면 스태미너를 조금씩 회복합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Battery System.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;손전등이 존재해서 손전등을 사용하면 배터리가 소모되고, 소모된 배터리는 &quot;배터리&quot;아이템을 이용해 회복가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EB4r2/btsLiTabSF6/KOrt9T6kmBKp5FccLncES1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EB4r2/btsLiTabSF6/KOrt9T6kmBKp5FccLncES1/img.png&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;146&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4225%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EB4r2/btsLiTabSF6/KOrt9T6kmBKp5FccLncES1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEB4r2%2FbtsLiTabSF6%2FKOrt9T6kmBKp5FccLncES1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;257&quot; height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/odK4l/btsLiLXFXM7/NEp2eFxSGIJPIBN8XRXTc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/odK4l/btsLiLXFXM7/NEp2eFxSGIJPIBN8XRXTc1/img.png&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;225&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4148%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/odK4l/btsLiLXFXM7/NEp2eFxSGIJPIBN8XRXTc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FodK4l%2FbtsLiLXFXM7%2FNEp2eFxSGIJPIBN8XRXTc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;9. Enemy&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Behavior tree를 이용해 Enemy의 행동을 구현했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이동은 이동 가능한 위치중 랜덤한 위치로 이동합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이동하는 중에 플레이어를 발견하면 특정한 소리를 내며 플레이어를 쫒아옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 플레이어는 Locker에 숨어서 회피할 수 있으며, Enemy 시야에서 Locker에 숨으면 발각되어 게임이 종료됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 플레이어를 인지한 경우 고개를 플레이어를 향해 돌립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 플레이어를 놓친 경우 놓친 위치의 근처에서 약 3번정도 찾아보고 다시 플레이어를 찾기위해 배회합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;게임 테스트 영상입니다.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://youtu.be/CH1fWj39H3Q?si=P_lkaf7gFQVpZTmI&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/CH1fWj39H3Q?si=P_lkaf7gFQVpZTmI&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=CH1fWj39H3Q&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/PpGIe/hyXKyRqIqy/4UCOYy445AKvwuPkossm3K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/baRD9H/hyXGzLgVBs/ifSL7n7hUQ4V9nRxtTYub0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;공포게임 테스트 플레이 영상.&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/CH1fWj39H3Q&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div class=&quot;notranslate&quot; style=&quot;all: initial;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>기록</category>
      <category>언리얼</category>
      <category>테스트</category>
      <category>프로젝트</category>
      <category>호러게임</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/694</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%98%B8%EB%9F%AC%EA%B2%8C%EC%9E%84-c#entry694comment</comments>
      <pubDate>Tue, 10 Dec 2024 03:16:07 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 인벤토리 플러그인 C++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9D%B8%EB%B2%A4%ED%86%A0%EB%A6%AC-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 인벤토리 플러그인 &lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심심해서 만드는 중인 인벤토리 플러그인입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++로 제작하였고, 거의 다 만들었지만 아직 미완입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cixy06/btsLazXF0qQ/YArGfuLJ5av2JsWmIO0at0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cixy06/btsLazXF0qQ/YArGfuLJ5av2JsWmIO0at0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cixy06/btsLazXF0qQ/YArGfuLJ5av2JsWmIO0at0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcixy06%2FbtsLazXF0qQ%2FYArGfuLJ5av2JsWmIO0at0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;앞으로 추가하려고 생각하고 있는것.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. QuickSlot 키보드로 사용할 수 있도록 하기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 장비창 부분 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 아이템 사용을 EffectActorClass를 추가해서 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 인벤토리 드래그 드롭으로 이동.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;완성한 부분.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 아이템 저장(Stack가능한 아이템, Stack불가능한 아이템.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 아이템 버리기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 아이템 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 아이템 위치 변경(Swap)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 아이템 툴팁.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. QuickSlot 구현.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. UI 구현(장비창, 인벤창, QuickSlot)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. ItemBase, ItemActor 구현.(ItemBase는 아이템 정보 저장소 같은 느낌.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;코드 압축.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI에 사용한 이미지를 뺀 코드.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/inventorysystemPlugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/ykarr/inventorysystemPlugin&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1733609161742&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ykarr/inventorysystemPlugin: Unreal inventory system Plugin&quot; data-og-description=&quot;Unreal inventory system Plugin. Contribute to ykarr/inventorysystemPlugin development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ykarr/inventorysystemPlugin&quot; data-og-url=&quot;https://github.com/ykarr/inventorysystemPlugin&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cU48UP/hyXKoVpFbo/k0KM6VH1XSUHB7teh7X6dk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/cNwPjI/hyXGNP2PqE/SFov2Kh0bJ6EVB0k5JSRoK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ykarr/inventorysystemPlugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ykarr/inventorysystemPlugin&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cU48UP/hyXKoVpFbo/k0KM6VH1XSUHB7teh7X6dk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/cNwPjI/hyXGNP2PqE/SFov2Kh0bJ6EVB0k5JSRoK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ykarr/inventorysystemPlugin: Unreal inventory system Plugin&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal inventory system Plugin. Contribute to ykarr/inventorysystemPlugin development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실행 결과.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3인칭 튜토리얼에 추가해서 실행한 결과.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/DjtFztG-yOs&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/DjtFztG-yOs&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=DjtFztG-yOs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cEifnx/hyXGDmnYSr/8KU6gqcYkp891yEwsw9EN0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cqokSz/hyXGHvzItN/eIOMGvK6IzWXUW3qandZgk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;언리얼 인벤토리 플러그인 테스트&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/DjtFztG-yOs&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>inventory</category>
      <category>plugin</category>
      <category>unreal</category>
      <category>언리얼</category>
      <category>인벤토리</category>
      <category>제작중</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/692</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%9D%B8%EB%B2%A4%ED%86%A0%EB%A6%AC-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-C#entry692comment</comments>
      <pubDate>Sun, 8 Dec 2024 07:06:06 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 절차적 던전 생성</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%A0%88%EC%B0%A8%EC%A0%81-%EB%8D%98%EC%A0%84-%EC%83%9D%EC%84%B1</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qIuZx/btsKMmxRmTd/U4UGZhVVTDDcRIUVbArmF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qIuZx/btsKMmxRmTd/U4UGZhVVTDDcRIUVbArmF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qIuZx/btsKMmxRmTd/U4UGZhVVTDDcRIUVbArmF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqIuZx%2FbtsKMmxRmTd%2FU4UGZhVVTDDcRIUVbArmF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;던전 생성&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 절차적으로 던전을 생성하기 위해 작성한 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작동은 하지만 미완성입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;간단한 설명.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Main Room을 생성하고, Arrow List(ChildrenArrow)를 가져옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 'ChildrenArrow'에서 랜덤으로 Arrow를 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 선택한 Arrow의 위치에 Room을 스폰합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4 스폰된 방이 겹치는지 확인합니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.1 충돌이 발생하면 방을 삭제하고 다른 Arrow로 시도합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.2 충돌이 발생하지 않으면 방을 유지합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. Room생성에 성공하면 Room의 Arrow를 'ChildrenArrow'에 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 Room Num을 만족하거나 Arrow없어질 때까지 3-5의 과정을 반복합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행한 결과는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방은 두개만 넣어서 실행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/xYDS74XW1Aw&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/xYDS74XW1Aw&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=xYDS74XW1Aw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/OIAHk/hyXzVftyzs/dykQdu5Fu8dTSpISME34K1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/tZ1JC/hyXzJsy1jm/XrF7N4dttKAUIw7W7qRbrK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;언리얼 던전 생성&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/xYDS74XW1Aw&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;주요 코드.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Generator Room.h&lt;/p&gt;
&lt;pre id=&quot;code_1731919943924&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.
#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;GameFramework/Actor.h&quot;
#include &quot;EscapeMapGenerator.generated.h&quot;

class ARoom;
class ACorridor;

UCLASS()
class ESCAPE_API AEscapeMapGenerator : public AActor
{
	GENERATED_BODY()
public:	
    UPROPERTY(EditAnywhere, Category = &quot;Dungeon Settings&quot;)
    int32 RoomNum = 30;
protected:
	AEscapeMapGenerator();
	virtual void BeginPlay() override;
    TArray&amp;lt;USceneComponent*&amp;gt; ChildrenArrow;
    void GenerateDungeon();
    void SpawnNextRoom(FVector SpawnLoc, FRotator SpawnRot, const TSubclassOf&amp;lt;ARoom&amp;gt;&amp;amp; InRoomClass);
    UPROPERTY(EditAnywhere, Category = &quot;Dungeon Settings&quot;)
    TArray&amp;lt;ARoom*&amp;gt; Rooms;
    UPROPERTY(EditAnywhere, Category = &quot;Dungeon Settings&quot;)
    TArray&amp;lt;ACorridor*&amp;gt; Corridors;
    UPROPERTY(EditAnywhere, Category = &quot;Dungeon Settings&quot;)
	TSubclassOf&amp;lt;ARoom&amp;gt; MainRoomClass;
    UPROPERTY(EditAnywhere, Category = &quot;Dungeon Settings&quot;)
    TArray&amp;lt;TSubclassOf&amp;lt;ARoom&amp;gt;&amp;gt; RoomClasses;
private:
    FTimerHandle RoomSpawnDelay;
    int32 CurrentRoomCount=0;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Generator Room.cpp&lt;/p&gt;
&lt;pre id=&quot;code_1731919999557&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.
#include &quot;MapGen/EscapeMapGenerator.h&quot;
//구성요소.
#include &quot;MapGen/Room.h&quot;
#include &quot;MapGen/Corridor.h&quot;

#include &quot;Kismet\KismetMathLibrary.h&quot;
#include &quot;Kismet/KismetSystemLibrary.h&quot;
//Component
#include &quot;Components/BoxComponent.h&quot;
//Debug용 커스텀 코드.
#include &quot;DrawDebugHelpers.h&quot;
#include &quot;CustomDebugHelper.h&quot;
// Sets default values
AEscapeMapGenerator::AEscapeMapGenerator()
{
	PrimaryActorTick.bCanEverTick = false;
}
void AEscapeMapGenerator::BeginPlay()
{
	Super::BeginPlay();
	GenerateDungeon();
}
void AEscapeMapGenerator::GenerateDungeon()
{
	//Spawn MainRoom
	if (RoomNum&amp;gt;0) {
		SpawnNextRoom(FVector::ZeroVector, FRotator::ZeroRotator, MainRoomClass);
		CurrentRoomCount = 1;
		//Spawn Other Room
		GetWorld()-&amp;gt;GetTimerManager().ClearTimer(RoomSpawnDelay);
		GetWorld()-&amp;gt;GetTimerManager().SetTimer(RoomSpawnDelay, FTimerDelegate::CreateLambda([this]() {
			if (CurrentRoomCount &amp;lt; RoomNum &amp;amp;&amp;amp; ChildrenArrow.Num() &amp;gt; 0) {
				int32 RandomClassIndex = FMath::RandRange(0, RoomClasses.Num() - 1);
				int32 RandomIndex = FMath::RandRange(0, ChildrenArrow.Num() - 1);
				USceneComponent* SelectArrow = ChildrenArrow[RandomIndex];
				ChildrenArrow.RemoveAt(RandomIndex); // 사용된 Arrow를 제거
				SpawnNextRoom(SelectArrow-&amp;gt;GetComponentLocation(), SelectArrow-&amp;gt;GetComponentRotation(), RoomClasses[RandomClassIndex]);
			}
			else {
				Debug::Print(&quot;End_Generator&quot;);
				Debug::Print(FString::FormatAsNumber(ChildrenArrow.Num()));

				GetWorld()-&amp;gt;GetTimerManager().ClearTimer(RoomSpawnDelay);
			}
		}), 0.1f, true);
	}
}
void AEscapeMapGenerator::SpawnNextRoom(FVector SpawnLoc,FRotator SpawnRot,const TSubclassOf&amp;lt;ARoom&amp;gt;&amp;amp; InRoomClass)
{
	FActorSpawnParameters SpawnParams;
	SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn;
	//Spawn
	ARoom* RoomActor = GetWorld()-&amp;gt;SpawnActor&amp;lt;ARoom&amp;gt;(InRoomClass, SpawnLoc, SpawnRot, SpawnParams);
	TArray&amp;lt;AActor*&amp;gt; OverlappingActors;
	FCollisionQueryParams QueryParams;
	QueryParams.AddIgnoredActor(RoomActor);  // RoomActor는 검사에서 제외됨
	RoomActor-&amp;gt;BoxComponent-&amp;gt;GetOverlappingActors(OverlappingActors, ARoom::StaticClass());
	OverlappingActors.Remove(RoomActor);
	if (OverlappingActors.Num() &amp;gt; 0)
	{
		Debug::DrawDebugBox(RoomActor-&amp;gt;BoxComponent,true);
		RoomActor-&amp;gt;Destroy(); return;
	}
	else
	{
		Debug::DrawDebugBox(RoomActor-&amp;gt;BoxComponent);
		// 겹침이 없는 경우: Children 업데이트 및 후속 작업 수행
		CurrentRoomCount++;
		TArray&amp;lt;USceneComponent*&amp;gt; NewChildrenArrow;
		RoomActor-&amp;gt;ArrowFolder-&amp;gt;GetChildrenComponents(false, NewChildrenArrow);
		ChildrenArrow.Append(NewChildrenArrow); return;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Room.h&lt;/p&gt;
&lt;pre id=&quot;code_1731920038077&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.
#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;GameFramework/Actor.h&quot;
#include &quot;Room.generated.h&quot;

class UBoxComponent;
class UArrowComponent;
UCLASS()
class ESCAPE_API ARoom : public AActor
{
	GENERATED_BODY()
public:	
	UPROPERTY(EditDefaultsOnly,BlueprintReadOnly)
	USceneComponent* ArrowFolder;
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	UBoxComponent* BoxComponent;
protected:
	ARoom();
	virtual void BeginPlay() override;
	UPROPERTY(EditDefaultsOnly)
	USceneComponent* GeometryFolder;
	USceneComponent* RootSceneComponent;
	UPROPERTY(EditDefaultsOnly)
	UArrowComponent* ActorArrowComponent;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Room.cpp&lt;/p&gt;
&lt;pre id=&quot;code_1731920070445&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.

#include &quot;MapGen/Room.h&quot;
#include &quot;Components/BoxComponent.h&quot;
#include &quot;Components/ArrowComponent.h&quot;
// Sets default values
ARoom::ARoom()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = false;
	RootSceneComponent =CreateDefaultSubobject&amp;lt;USceneComponent&amp;gt;(TEXT(&quot;RootSceneComponent&quot;));
	SetRootComponent(RootSceneComponent);
	ActorArrowComponent =CreateDefaultSubobject&amp;lt;UArrowComponent&amp;gt;(TEXT(&quot;ActorArrowComponent&quot;));
	ActorArrowComponent-&amp;gt;SetupAttachment(GetRootComponent());
	GeometryFolder=CreateDefaultSubobject&amp;lt;USceneComponent&amp;gt;(TEXT(&quot;GeometryFolder&quot;));
	GeometryFolder-&amp;gt;SetupAttachment(GetRootComponent());
	ArrowFolder =CreateDefaultSubobject&amp;lt;USceneComponent&amp;gt;(TEXT(&quot;ArrowFolder&quot;));
	ArrowFolder-&amp;gt;SetupAttachment(GetRootComponent());
	BoxComponent=CreateDefaultSubobject&amp;lt;UBoxComponent&amp;gt;(TEXT(&quot;BoxComponent&quot;));
	BoxComponent-&amp;gt;SetupAttachment(GetRootComponent());
}
void ARoom::BeginPlay()
{
	Super::BeginPlay();
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Blueprint&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 Room을 구성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Arrow의 위치를 기반으로 Room을 생성하기 때문에 문이 위치한 지점에 Arrow를 배치합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;1203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ty1ez/btsKOkeccEX/d5ECfmQobSulfHsbQNQkvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ty1ez/btsKOkeccEX/d5ECfmQobSulfHsbQNQkvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ty1ez/btsKOkeccEX/d5ECfmQobSulfHsbQNQkvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fty1ez%2FbtsKOkeccEX%2Fd5ECfmQobSulfHsbQNQkvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;439&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;1203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Room을 생성하면 0,0,0의 위치에서 생성되기 때문에 이것을 생각해서 Room을 구현합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/45FWB/btsKNUAi9Vi/WEW0a9OklQ1djb8dcRp791/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/45FWB/btsKNUAi9Vi/WEW0a9OklQ1djb8dcRp791/img.png&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;1203&quot; data-is-animation=&quot;false&quot; width=&quot;600&quot; height=&quot;439&quot; style=&quot;width: 41.6366%; margin-right: 10px;&quot; data-widthpercent=&quot;42.13&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/45FWB/btsKNUAi9Vi/WEW0a9OklQ1djb8dcRp791/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F45FWB%2FbtsKNUAi9Vi%2FWEW0a9OklQ1djb8dcRp791%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1644&quot; height=&quot;1203&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGOpNL/btsKMDT7zOF/cyrQJBuzOKdJfJiAXyR531/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGOpNL/btsKMDT7zOF/cyrQJBuzOKdJfJiAXyR531/img.png&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;310&quot; data-is-animation=&quot;false&quot; style=&quot;width: 57.2006%;&quot; data-widthpercent=&quot;57.87&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGOpNL/btsKMDT7zOF/cyrQJBuzOKdJfJiAXyR531/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGOpNL%2FbtsKMDT7zOF%2FcyrQJBuzOKdJfJiAXyR531%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;boxComponent를 이용해 충돌체크를 하기 때문에 방 크기에 맞춰 사용합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;1203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/euQ5WQ/btsKLZC8or2/krFvvY1tVkUhkKKsQCWrW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/euQ5WQ/btsKLZC8or2/krFvvY1tVkUhkKKsQCWrW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/euQ5WQ/btsKLZC8or2/krFvvY1tVkUhkKKsQCWrW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeuQ5WQ%2FbtsKLZC8or2%2FkrFvvY1tVkUhkKKsQCWrW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;439&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;1203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>generator</category>
      <category>map</category>
      <category>Room</category>
      <category>Unreal5</category>
      <category>던전</category>
      <category>생성</category>
      <category>언리얼</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/691</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%A0%88%EC%B0%A8%EC%A0%81-%EB%8D%98%EC%A0%84-%EC%83%9D%EC%84%B1#entry691comment</comments>
      <pubDate>Mon, 18 Nov 2024 18:26:38 +0900</pubDate>
    </item>
    <item>
      <title>Unreal GameplayTag c++</title>
      <link>https://intunknown.tistory.com/entry/Unreal-GameplayTag-c</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bw7eg/btsKEZve8AM/9kXtKo2DkxsGxAXehBAhk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bw7eg/btsKEZve8AM/9kXtKo2DkxsGxAXehBAhk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bw7eg/btsKEZve8AM/9kXtKo2DkxsGxAXehBAhk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBw7eg%2FbtsKEZve8AM%2F9kXtKo2DkxsGxAXehBAhk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;233&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal GameplayTag&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 Unreal프로젝트를 만들면서 GameplayAbility를 사용하면서 GameplayTag를 많이 사용해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면서 에디터 내에서 태그를 추가하고 관리하는 방법이 아닌, 따로 파일을 만들어서 코드 상태로 태그를 선언하는 방법을 사용해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따로 에디터 내에서 태그를 추가하는 방식이 아닌, 파일을 만들어서 GameplayTag를 추가하고 관리하는 방식이 C++에서 태그를 사용할 때 꽤 편하다는 것을 느낄 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 컴파일 타임에 확인할 수 있어 잘못된 태그를 쉽게 찾아낼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 자동완성 기능을 사용해 오타 없이 빠르게 작성해서 사용할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 외에도 장점이 더 있지만, 개인적으로는 이것들이 가장 크게 느껴졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 이렇게 느꼈다는 것이고, 이 글에서는 간단한 소개와 사용하는 방법에 대한 내용을 작성할 것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 컴파일 타임에 확인이 가능해서 잘못된 태그를 찾아내기 편하다.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디터에서 추가한다면 실행하기 전까지 오류가 있는지 알 수 없지만, 이건 잘못 작성하면 애초에 컴파일 및 빌드가 안돼서 실행할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 어차피 자동완성 켜놓으면 잘못쓰기가 힘들다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 자동완성 기능을 사용해 오타 없이 빠르게 작성해서 사용할 수 있다.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음이 보통 에디터에서 추가한 태그를 가져오는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길고 FName형식이라 태그 이름에 오타가 생겨도 알려주지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임은 정상적으로? 실행은 되겠지만 해당 태그에 오타가 있다면 해당 태그를 사용하는 기능이 작동하지 않을 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1731329478661&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FGameplayTag::RequestGameplayTag(FName(&quot;Player.State.FinishAttack&quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음이 파일을 만들어서 관리하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헤더파일만 추가하고 비슷하게 입력하면 다른 것들처럼 적당히 알아서 자동완성 시켜준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 틀리면 컴파일이 안된다.&lt;/p&gt;
&lt;pre id=&quot;code_1731329611349&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;BladeGameplayTags::Shared_Event_HitReact&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU5Ycw/btsKGimZ7O1/CFm6RDOC8eP9YF8iwRmC71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU5Ycw/btsKGimZ7O1/CFm6RDOC8eP9YF8iwRmC71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU5Ycw/btsKGimZ7O1/CFm6RDOC8eP9YF8iwRmC71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU5Ycw%2FbtsKGimZ7O1%2FCFm6RDOC8eP9YF8iwRmC71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;215&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;사용하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;build.cs에 GameplayTags모듈을 추가한다.&lt;/p&gt;
&lt;div class=&quot;notranslate&quot; style=&quot;all: initial;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mdxz9/btsKEefyms3/PFh3DCm1E3nVOF0jQp6wBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mdxz9/btsKEefyms3/PFh3DCm1E3nVOF0jQp6wBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mdxz9/btsKEefyms3/PFh3DCm1E3nVOF0jQp6wBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMdxz9%2FbtsKEefyms3%2FPFh3DCm1E3nVOF0jQp6wBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;358&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;1. GameplayTags 파일 추가하기.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 아무것도 상속받지 않는 C++클래스를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아무거나 생성하고 헤더파일을 지워도 된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 지웠으면 NativeGameplayTags.h를 include 해주고 아래의 예시처럼 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1731330647137&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//header
#pragma once
#include &quot;NativeGameplayTags.h&quot;

namespace BladeGameplayTags {
	/** Input **/
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Move);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Look);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Jump);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_EquipSword);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_UnEquipSword);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_LightAttack_Sword);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_HeavyAttack_Sword);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Roll);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_SwitchTarget);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_MustBeHeld);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_MustBeHeld_Block);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Toggleable);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Toggleable_TargetLock);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_Toggleable_Rage);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_SpecialWeaponAbility_Light);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_SpecialWeaponAbility_Heavy);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_SpecialWeaponAbility_3);
	BLADE_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(InputTag_PickUp_Potions);
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1731330705171&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;BladeGameplayTags.h&quot;
namespace BladeGameplayTags {
	/** Input **/
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Move, &quot;InputTag.Move&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Look, &quot;InputTag.Look&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Jump, &quot;InputTag.Jump&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_EquipSword, &quot;InputTag.EquipSword&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_UnEquipSword, &quot;InputTag.UnEquipSword&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_LightAttack_Sword, &quot;InputTag.LightAttack.Sword&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_HeavyAttack_Sword, &quot;InputTag.HeavyAttack.Sword&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Roll, &quot;InputTag.Roll&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_SwitchTarget, &quot;InputTag.SwitchTarget&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_MustBeHeld, &quot;InputTag.MustBeHeld&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_MustBeHeld_Block, &quot;InputTag.MustBeHeld.Block&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Toggleable, &quot;InputTag.Toggleable&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Toggleable_TargetLock, &quot;InputTag.Toggleable.TargetLock&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_Toggleable_Rage, &quot;InputTag.Toggleable.Rage&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_SpecialWeaponAbility_Light, &quot;InputTag.SpecialWeaponAbility.Light&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_SpecialWeaponAbility_Heavy, &quot;InputTag.SpecialWeaponAbility.Heavy&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_SpecialWeaponAbility_3, &quot;InputTag.SpecialWeaponAbility.3&quot;);
	UE_DEFINE_GAMEPLAY_TAG(InputTag_PickUp_Potions, &quot;InputTag.PickUp.Potions&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코멘트가 필요하다면 COMMENT가 붙은 것을 사용하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NativeGameplayTags.h 에서 복붙하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WLBu3/btsKEm5xcN8/Vhq0okgNCJysLf3uBcOBS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WLBu3/btsKEm5xcN8/Vhq0okgNCJysLf3uBcOBS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WLBu3/btsKEm5xcN8/Vhq0okgNCJysLf3uBcOBS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWLBu3%2FbtsKEm5xcN8%2FVhq0okgNCJysLf3uBcOBS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;353&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. GameplayTags 사용하기.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하는 방법은 간단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가한 파일을 include 하고, GameplayTag를 선언한 네임스페이스를 통해 태그를 불러와 사용하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 사진 참고.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kAoCj/btsKFl5OlWL/FZ8GnlMPHwMd7tMQTyWVnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kAoCj/btsKFl5OlWL/FZ8GnlMPHwMd7tMQTyWVnK/img.png&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;667&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.4203%; margin-right: 10px;&quot; data-widthpercent=&quot;31.79&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kAoCj/btsKFl5OlWL/FZ8GnlMPHwMd7tMQTyWVnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkAoCj%2FbtsKFl5OlWL%2FFZ8GnlMPHwMd7tMQTyWVnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;638&quot; height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b07fht/btsKGlqvcEf/pkiQ6l45LfKJWfOI5kxra1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b07fht/btsKGlqvcEf/pkiQ6l45LfKJWfOI5kxra1/img.png&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;382&quot; data-is-animation=&quot;false&quot; style=&quot;width: 67.4169%;&quot; data-widthpercent=&quot;68.21&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b07fht/btsKGlqvcEf/pkiQ6l45LfKJWfOI5kxra1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb07fht%2FbtsKGlqvcEf%2FpkiQ6l45LfKJWfOI5kxra1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;784&quot; height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>c++</category>
      <category>gameplaytag</category>
      <category>unreal</category>
      <category>언리얼</category>
      <category>오블완</category>
      <category>태그</category>
      <category>티스토리챌린지</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/690</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-GameplayTag-c#entry690comment</comments>
      <pubDate>Mon, 11 Nov 2024 22:41:57 +0900</pubDate>
    </item>
    <item>
      <title>플러그인 모듈 설정으로 인한 블루프린트 함수 노출 문제</title>
      <link>https://intunknown.tistory.com/entry/%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EB%AA%A8%EB%93%88-%EC%84%A4%EC%A0%95%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EB%B8%94%EB%A3%A8%ED%94%84%EB%A6%B0%ED%8A%B8-%ED%95%A8%EC%88%98-%EB%85%B8%EC%B6%9C-%EB%AC%B8%EC%A0%9C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NzLSh/btsKDQ5O5u0/LMcz6hBaMelfCQKOuN3yq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NzLSh/btsKDQ5O5u0/LMcz6hBaMelfCQKOuN3yq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NzLSh/btsKDQ5O5u0/LMcz6hBaMelfCQKOuN3yq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNzLSh%2FbtsKDQ5O5u0%2FLMcz6hBaMelfCQKOuN3yq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;235&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제발생.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 플러그인을 제작하면서 플러그인 쪽에서 선언한 함수가 프로젝트에서 블루프린트로 호출했을 때 노출되지 않는 문제가 발생했습니다. 이 부분은 오류가 아니었고, 플러그인에 대해 잘 몰랐던 내용이라 해결방법을 찾아내기 어려웠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결방법 찾는중.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UFUNCTION(BlueprintCallalbe) 설정을 했음에도 함수가 노출되지 않는 것을 보고 당황했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 안에 비슷하게 만들어서 확인해 보니 잘 되는것을 확인했고, 이로 인해 플러그인 문제라는 것은 알았지만 해결방법을 몰라서 열심히 삽질을 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UCLASS에 타입 설정을 해보기도 하고, 빌드쪽 문제인가 싶어 Binaries, Intermediate, Saved, sln (플러그인쪽도 포함) 삭제한 후 다시 빌드해보는등 이것말고도 한참 열심히 삽질을 해보다가 해결방법을 찾았습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제의 원인은 플러그인 모듈의 Type설정이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 플러그인 쪽을 많이 만져보지 않다 보니 이 부분이 문제가 될 줄은 몰랐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 플러그인의 Type이 기본적으로 Editor로 설정되어있었는데 이게 문제였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈의 Type을 Runtime으로 변경하니 잘 동작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정한 플러그인(.uplugin)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhhRIF/btsKCUnQPhk/OXZ42lyh7icMwzyqiRckk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhhRIF/btsKCUnQPhk/OXZ42lyh7icMwzyqiRckk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhhRIF/btsKCUnQPhk/OXZ42lyh7icMwzyqiRckk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhhRIF%2FbtsKCUnQPhk%2FOXZ42lyh7icMwzyqiRckk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;398&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>multiplay</category>
      <category>unreal</category>
      <category>멀티플레이</category>
      <category>모듈</category>
      <category>언리얼</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <category>플러그인</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/689</guid>
      <comments>https://intunknown.tistory.com/entry/%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EB%AA%A8%EB%93%88-%EC%84%A4%EC%A0%95%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EB%B8%94%EB%A3%A8%ED%94%84%EB%A6%B0%ED%8A%B8-%ED%95%A8%EC%88%98-%EB%85%B8%EC%B6%9C-%EB%AC%B8%EC%A0%9C#entry689comment</comments>
      <pubDate>Sun, 10 Nov 2024 19:51:51 +0900</pubDate>
    </item>
    <item>
      <title>독거미 키보드 먹통 해결</title>
      <link>https://intunknown.tistory.com/entry/%EB%8F%85%EA%B1%B0%EB%AF%B8-%ED%82%A4%EB%B3%B4%EB%93%9C-%EB%A8%B9%ED%86%B5-%ED%95%B4%EA%B2%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/29Ui0/btsKDke0y6i/yoqTnqIvqtgJQCkMLeic40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/29Ui0/btsKDke0y6i/yoqTnqIvqtgJQCkMLeic40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/29Ui0/btsKDke0y6i/yoqTnqIvqtgJQCkMLeic40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F29Ui0%2FbtsKDke0y6i%2FyoqTnqIvqtgJQCkMLeic40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;키보드 증상.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가를 잘못 눌렀는지 갑자기 키보드 입력이 먹통이 되는 문제가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키보드를 소프트웨어로 리셋해도 백라이트만 초기화되고, 키 입력은 여전히 작동하지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인을 위해 다른 컴퓨터에 연결해보니 다른 컴퓨터에서도 키 입력은 작동하지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 키보드를 연결해보니 정상적으로 작동하는 것을 확인하고 키보드의 문제임을 확신했습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;예상원인.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키보드 소프트웨어를 설정하다가 펌웨어 버튼을 눌러봤는데 이 부분에서 꼬인 것이 아닐까 싶습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;고치기 위해 필요한 준비물.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;펌웨어를 재설치해볼 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 펌웨어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 펌웨어를 다운받고 실행받기 위한 컴퓨터.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 키보드를 연결해 줄 C 타입 케이블.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 독거미 키보드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;펌웨어는 여기서 받으면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://funkeys.co.kr/bbs/board.php?bo_table=download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://funkeys.co.kr/bbs/board.php?bo_table=download&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1731162146893&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;펀키스 공식 홈페이지&quot; data-og-description=&quot;펀키스, Funkeys, 바밀로, 더키, Varmilo, Ducky, 더키 키보드, 바밀로 키보드, 키보드 커스텀, 기계식 키보드, 명품 기계식 키보드, 프리미엄 기계식 키보드, 커스텀 기계식 키보드, Mechanical Keybard, Custom &quot; data-og-host=&quot;funkeys.co.kr&quot; data-og-source-url=&quot;https://funkeys.co.kr/bbs/board.php?bo_table=download&quot; data-og-url=&quot;https://funkeys.co.kr&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://funkeys.co.kr/bbs/board.php?bo_table=download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://funkeys.co.kr/bbs/board.php?bo_table=download&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;펀키스 공식 홈페이지&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;펀키스, Funkeys, 바밀로, 더키, Varmilo, Ducky, 더키 키보드, 바밀로 키보드, 키보드 커스텀, 기계식 키보드, 명품 기계식 키보드, 프리미엄 기계식 키보드, 커스텀 기계식 키보드, Mechanical Keybard, Custom&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;funkeys.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사이트에서 받은 87pro 유무선 펌웨어입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/lH5ny/btsKDBne8CQ/wbLpjPQK6inUGi7CG8vKMk/Aula%20F87PRO%EC%9A%A9%20%ED%8E%8C%EC%9B%A8%EC%96%B4.exe?attach=1&amp;amp;knm=tfile.exe&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;Aula F87PRO용 펌웨어.exe&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;2.05MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 C 타입 케이블을 연결해서 펌웨어를 설치하니까 정상적으로 입력이 되었습니다.&lt;/p&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>87pro</category>
      <category>독거미</category>
      <category>소프트웨어</category>
      <category>오류해결</category>
      <category>오블완</category>
      <category>키보드</category>
      <category>티스토리챌린지</category>
      <category>펌웨어</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/688</guid>
      <comments>https://intunknown.tistory.com/entry/%EB%8F%85%EA%B1%B0%EB%AF%B8-%ED%82%A4%EB%B3%B4%EB%93%9C-%EB%A8%B9%ED%86%B5-%ED%95%B4%EA%B2%B0#entry688comment</comments>
      <pubDate>Sat, 9 Nov 2024 23:35:16 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 플러그인 Online Subsystem Steam</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-Online-Subsystem-Steam</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1W7bo/btsKDiHRaM8/IkBW88YajZajamdY2JqhYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1W7bo/btsKDiHRaM8/IkBW88YajZajamdY2JqhYK/img.png&quot; data-alt=&quot;썸네일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1W7bo/btsKDiHRaM8/IkBW88YajZajamdY2JqhYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1W7bo%2FbtsKDiHRaM8%2FIkBW88YajZajamdY2JqhYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;234&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;썸네일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Online Subsystem steam&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 엔진에서 스팀과 연동된 네트워크 기능을 효율적으로 구현할 수 있도록 지원해 주는 플러그인입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 언리얼에서 Steam플러그인을 사용하기 위한 기본적인 설정만을 작성할 겁니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;플러그인 활성화.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디터로 들어가서 Online Subsystem steam을 검색해서 플러그인을 활성화해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼 체크해 주면 에디터가 다시 시작하면서 활성화됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgIedt/btsKCRRNgbN/LirqpK3BO0BxUwLTGrDnIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgIedt/btsKCRRNgbN/LirqpK3BO0BxUwLTGrDnIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgIedt/btsKCRRNgbN/LirqpK3BO0BxUwLTGrDnIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgIedt%2FbtsKCRRNgbN%2FLirqpK3BO0BxUwLTGrDnIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;314&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 파일로 들어가서 프로젝트명.Build.cs로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 &quot;OnlineSubsystemSteam&quot;, &quot;OnlineSubsystem&quot;을 추가합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdH7Oi/btsKDpmGixJ/0XAsVy8Mk5ywGwoJay95t0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdH7Oi/btsKDpmGixJ/0XAsVy8Mk5ywGwoJay95t0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdH7Oi/btsKDpmGixJ/0XAsVy8Mk5ywGwoJay95t0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdH7Oi%2FbtsKDpmGixJ%2F0XAsVy8Mk5ywGwoJay95t0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;275&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러그인 추가로 오류가 생길 수 있으므로 모듈을 추가한 후 에디터로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 Tools-&amp;gt;Refresh Visual Studio를 눌러 project를 Refresh해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t0gLD/btsKDiODyQJ/k7ktB0BysX2kyY09lIOsj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t0gLD/btsKDiODyQJ/k7ktB0BysX2kyY09lIOsj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t0gLD/btsKDiODyQJ/k7ktB0BysX2kyY09lIOsj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft0gLD%2FbtsKDiODyQJ%2Fk7ktB0BysX2kyY09lIOsj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;192&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;DefaultEngine.ini&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스팀을 사용하기 위해서 DefaultEngine.ini를 수정해줘야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은 아래 사이트를 확인하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/online-subsystem-steam-interface-in-unreal-engine?application_version=5.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dev.epicgames.com/documentation/en-us/unreal-engine/online-subsystem-steam-interface-in-unreal-engine?application_version=5.0&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DefaultEngine.ini는 프로젝트 파일경로-&amp;gt; Config폴더에서 찾을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DefaultEngine.ini에서 다음의 내용을 뒤에 붙여 넣기 하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1731066103649&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[/Script/Engine.GameEngine]
	+NetDriverDefinitions=(DefName=&quot;GameNetDriver&quot;,DriverClassName=&quot;OnlineSubsystemSteam.SteamNetDriver&quot;,DriverClassNameFallback=&quot;OnlineSubsystemUtils.IpNetDriver&quot;)

	[OnlineSubsystem]
	DefaultPlatformService=Steam

	[OnlineSubsystemSteam]
	bEnabled=true
	SteamDevAppId=480

	; If using Sessions
	// 이렇게 되어있는데
    //; bInitServerOnClient=true
	// 세션을 사용하려면 이렇게 해줘야함.
    bInitServerOnClient=true
   
	[/Script/OnlineSubsystemSteam.SteamNetDriver]
	NetConnectionClassName=&quot;OnlineSubsystemSteam.SteamNetConnection&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석으로 적어놓았지만 다시 한번 작성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 문서내용을 그대로 복붙하면 세션 생성이 정상적으로 작동하지 않으므로 수정해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;bInitServerOnClient=true이걸로.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 플러그인을 사용하기 위한 기본적인 준비가 완료되었습니다.&lt;/p&gt;
&lt;div class=&quot;notranslate&quot; style=&quot;all: initial;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>multiplay</category>
      <category>Online</category>
      <category>steam</category>
      <category>스팀</category>
      <category>언리얼</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <category>플러그인</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/687</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-Online-Subsystem-Steam#entry687comment</comments>
      <pubDate>Fri, 8 Nov 2024 20:53:56 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 프로필 유형 초기화되는 경우</title>
      <link>https://intunknown.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%94%84%EB%A1%9C%ED%95%84-%EC%9C%A0%ED%98%95-%EC%B4%88%EA%B8%B0%ED%99%94%EB%90%98%EB%8A%94-%EA%B2%BD%EC%9A%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6qGHv/btsKvai8IMp/hKnmY8KSG382YlDj1LVv61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6qGHv/btsKvai8IMp/hKnmY8KSG382YlDj1LVv61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6qGHv/btsKvai8IMp/hKnmY8KSG382YlDj1LVv61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6qGHv%2FbtsKvai8IMp%2FhKnmY8KSG382YlDj1LVv61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;네트워크 프로필 문제.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우에서 네트워크를 이용해 파일 공유를 하려고 설정을 하다가 문제가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 프로필을 개인 네트워크로 변경했는데 재부팅을 하면 공용 네트워크로 다시 돌아가는 문제였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해서 컴퓨터를 재부팅하면 해당 컴퓨터에 접속하기 위해서 다시 개인 네트워크 프로필로 바꿔줘야 했습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 1 해결방법 배치파일 생성.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷에서 여러 해결방법을 찾아보고 사용했지만 해결이 되지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 꼬인것 같은데 컴퓨터를 밀기에는 설치된게 많아서 다시 설치하는 시간이 아까웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 임시 방편으로 배치파일과 스케줄러(Scheduler)를 이용해 문제를 해결했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용한 배치파일입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배치파일을 안만들어본지 좀 되서 기억이 안나서 GPT한테 시켰습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘만들어주더라고요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드를 텍스트파일에 작성하고 .bat 확장자로 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1730672249554&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@echo off
:: Check for administrative privileges
NET SESSION &amp;gt;nul 2&amp;gt;&amp;amp;1
IF %ERRORLEVEL% NEQ 0 (
    PowerShell -Command &quot;Start-Process cmd -Argument '/c %~f0' -Verb RunAs&quot;
    exit /b
)

:: Set the network profile to Private silently
powershell -Command &quot;Set-NetConnectionProfile -NetworkCategory Private -ErrorAction SilentlyContinue&quot;
exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배치파일도 블로그에 올라가나?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/GJj6S/btsKvGaQd1J/abihS8iNgKgVCdXwpE9Ub0/set_network_profile_no_notification.bat?attach=1&amp;amp;knm=tfile.bat&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;set_network_profile_no_notification.bat&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올라가는군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눌러보니 잘 작동하지만 누를때마다 관리자 권한으로 실행해야해서 알림이 자꾸 뜹니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웬지 시작프로그램에 등록하면 컴퓨터 켤때마다 눌러야될 것 같아서 스케줄러 설정으로 방향을 틀었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결방법1.2 스케쥴러 설정.&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배치파일은 적당히 안보이는곳에 숨겨두고 Window키+R을 눌러서 실행창을 불러옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 &quot;taskschd.msc&quot;를 입력하고 확인을 눌러줍니다.&lt;/p&gt;
&lt;div class=&quot;notranslate&quot; style=&quot;all: initial;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btTeKO/btsKvfEGNcz/v65cTKYcExCSpzHJ5gPcbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btTeKO/btsKvfEGNcz/v65cTKYcExCSpzHJ5gPcbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btTeKO/btsKvfEGNcz/v65cTKYcExCSpzHJ5gPcbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtTeKO%2FbtsKvfEGNcz%2Fv65cTKYcExCSpzHJ5gPcbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;207&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 작업 스케줄러가 나올텐데 오른쪽 메뉴중에 '작업 만들기'를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bas7ff/btsKt9TaGb7/LxvQHuFT3iW1GOxIFZ8C90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bas7ff/btsKt9TaGb7/LxvQHuFT3iW1GOxIFZ8C90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bas7ff/btsKt9TaGb7/LxvQHuFT3iW1GOxIFZ8C90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbas7ff%2FbtsKt9TaGb7%2FLxvQHuFT3iW1GOxIFZ8C90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;302&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 높은 수준의 권한으로 실행을 체크합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh572b/btsKuVsXwxn/iq2TgygZqukAG6M0fSFDBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh572b/btsKuVsXwxn/iq2TgygZqukAG6M0fSFDBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh572b/btsKuVsXwxn/iq2TgygZqukAG6M0fSFDBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh572b%2FbtsKuVsXwxn%2Fiq2TgygZqukAG6M0fSFDBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;456&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리거탭에서 새로 만들기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 작업 시작을 로그온할 때로 설정해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제부터 이 스케줄러는 로그온할때마다 실행될겁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7OCLf/btsKtU9GH6Z/KuvK0F6rK2awhMM2KzSXV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7OCLf/btsKtU9GH6Z/KuvK0F6rK2awhMM2KzSXV0/img.png&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;480&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.8574%; margin-right: 10px;&quot; data-widthpercent=&quot;53.48&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7OCLf/btsKtU9GH6Z/KuvK0F6rK2awhMM2KzSXV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7OCLf%2FbtsKtU9GH6Z%2FKuvK0F6rK2awhMM2KzSXV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emgeWi/btsKvYWCTf6/KZ1iINXdcub83Ge1r4xcIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emgeWi/btsKvYWCTf6/KZ1iINXdcub83Ge1r4xcIK/img.png&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;516&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.9798%;&quot; data-widthpercent=&quot;46.52&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emgeWi/btsKvYWCTf6/KZ1iINXdcub83Ge1r4xcIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FemgeWi%2FbtsKvYWCTf6%2FKZ1iINXdcub83Ge1r4xcIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 동작탭에서 새로만들기를 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 숨겨놓은 배치파일을 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQs4j7/btsKvINbw0b/zDIPwigpv10KkoRVnXB4uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQs4j7/btsKvINbw0b/zDIPwigpv10KkoRVnXB4uk/img.png&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;480&quot; data-is-animation=&quot;false&quot; style=&quot;width: 58.4967%; margin-right: 10px;&quot; data-widthpercent=&quot;59.18&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQs4j7/btsKvINbw0b/zDIPwigpv10KkoRVnXB4uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQs4j7%2FbtsKvINbw0b%2FzDIPwigpv10KkoRVnXB4uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tn5Ax/btsKvMIN77j/kgyDaGvnrQ0kjC92UwuPj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tn5Ax/btsKvMIN77j/kgyDaGvnrQ0kjC92UwuPj0/img.png&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;500&quot; data-is-animation=&quot;false&quot; style=&quot;width: 40.3405%;&quot; data-widthpercent=&quot;40.82&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tn5Ax/btsKvMIN77j/kgyDaGvnrQ0kjC92UwuPj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftn5Ax%2FbtsKvMIN77j%2FkgyDaGvnrQ0kjC92UwuPj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;454&quot; height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 스케줄러는 로그온할때마다 네트워크 프로필을 '개인 네트워크'로 변경해줄겁니다.&lt;/p&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>개인 네트워크</category>
      <category>네트워크</category>
      <category>배치</category>
      <category>스케줄러</category>
      <category>윈도우</category>
      <category>파일 공유</category>
      <category>프로필</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/685</guid>
      <comments>https://intunknown.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%94%84%EB%A1%9C%ED%95%84-%EC%9C%A0%ED%98%95-%EC%B4%88%EA%B8%B0%ED%99%94%EB%90%98%EB%8A%94-%EA%B2%BD%EC%9A%B0#entry685comment</comments>
      <pubDate>Mon, 4 Nov 2024 07:43:40 +0900</pubDate>
    </item>
    <item>
      <title>GameplayAbility Tick 구현 C++</title>
      <link>https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;GameplayAbility Tick&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 GameplayAbility자체는 Tick을 제공하지 않기 때문에 GameplayAbility에서 Tick을 사용하기 위해서는 추가적인 설정이 필요합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJjsdp/btsJRADRlUG/7KYwu4NybAGW3Qxmp7U4yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJjsdp/btsJRADRlUG/7KYwu4NybAGW3Qxmp7U4yK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJjsdp/btsJRADRlUG/7KYwu4NybAGW3Qxmp7U4yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJjsdp%2FbtsJRADRlUG%2F7KYwu4NybAGW3Qxmp7U4yK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Tick구현 - Ability Task.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GameplayAbility에서 Tick을 사용하기 위해 Ability Task를 이용해 Tick을 구현해서 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++로 구현했지만 조금만 수정하면 블루프린트에서도 사용가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6d4yb/btsJSJlSFuz/AZOkDuxLAOOlCBnZvdxIEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6d4yb/btsJSJlSFuz/AZOkDuxLAOOlCBnZvdxIEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6d4yb/btsJSJlSFuz/AZOkDuxLAOOlCBnZvdxIEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6d4yb%2FbtsJSJlSFuz%2FAZOkDuxLAOOlCBnZvdxIEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;368&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ability Task.h&lt;/p&gt;
&lt;pre id=&quot;code_1727759068449&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;Abilities/Tasks/AbilityTask.h&quot;
#include &quot;AbilityTask_ExecuteTaskOnTick.generated.h&quot;

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAbilityTaskTickDelegate, float, DeltaTime);
/**
 * 
 */
UCLASS()
class BLADE_API UAbilityTask_ExecuteTaskOnTick : public UAbilityTask
{
	GENERATED_BODY()
public:
	UAbilityTask_ExecuteTaskOnTick();
    
	static UAbilityTask_ExecuteTaskOnTick* ExecuteTaskTick(UGameplayAbility* OwningAbility);
	
    //Gameplaytask Interface
	virtual void TickTask(float DeltaTime) override;

	FOnAbilityTaskTickDelegate OnAbilityTaskTick;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AbilityTask.cpp&lt;/p&gt;
&lt;pre id=&quot;code_1727759115240&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;AbilitySystem/AbilityTasks/AbilityTask_ExecuteTaskOnTick.h&quot;

UAbilityTask_ExecuteTaskOnTick::UAbilityTask_ExecuteTaskOnTick()
{
    bTickingTask = true;
}
UAbilityTask_ExecuteTaskOnTick* UAbilityTask_ExecuteTaskOnTick::ExecuteTaskTick(UGameplayAbility* OwningAbility)
{
    UAbilityTask_ExecuteTaskOnTick* Node = NewAbilityTask&amp;lt;UAbilityTask_ExecuteTaskOnTick&amp;gt;(OwningAbility);
    return Node;
}
void UAbilityTask_ExecuteTaskOnTick::TickTask(float DeltaTime)
{
    Super::TickTask(DeltaTime);
    if (ShouldBroadcastAbilityTaskDelegates()) {
        OnAbilityTaskTick.Broadcast(DeltaTime);
    }
    else {
        EndTask();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Tick을 필요로 하는 GameplayAbility&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 보면 아시겠지만 Delegate를 이용한 방법이라 델리게이트를 바인딩하여 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TargetLock을 구현하고있는 GameplayAbility를 예시로 보여드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GameplayAbility.h&lt;/p&gt;
&lt;pre id=&quot;code_1727759681473&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;AbilitySystem/Abilites/BladePlayerGameplayAbility.h&quot;
#include &quot;PlayerTargetLockAbility.generated.h&quot;

class UTargetLockWidget;

UCLASS()
class BLADE_API UPlayerTargetLockAbility : public UBladePlayerGameplayAbility
{
	GENERATED_BODY()
protected:
	virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData)override;
	virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled)override;
private:
	void TryLockOnTarget();
	void GetAvailableActorsToTarget();
	void CancelTargetLockAbility();
	void CleanUp();
	void DrawTargetLockWidget();
	void SetTargetLockWidgetLoc();
	/*Tick을 사용하기 위해 바인딩해야하는 함수. UFUNCTION 필수*/
	UFUNCTION()
	void OnTargetLockTick(float DeltaTime);
	/*여기까지*/
	AActor* GetNearestTargetFromAvailableActors(const TArray&amp;lt;AActor*&amp;gt;&amp;amp; InAvailableActors);

	UPROPERTY(EditDefaultsOnly,Category=&quot;Target Lock&quot;)
	float TraceDistance = 3000.f;
	UPROPERTY(EditDefaultsOnly,Category=&quot;Target Lock&quot;)
	FVector TraceBoxSize = FVector(3000.f, 3000.f, 300.f);
	UPROPERTY(EditDefaultsOnly,Category=&quot;Target Lock&quot;)
	TArray&amp;lt;TEnumAsByte&amp;lt;	EObjectTypeQuery&amp;gt; &amp;gt; BoxTraceChannel;
	UPROPERTY(EditDefaultsOnly,Category=&quot;Target Lock&quot;)
	bool bIsDebugging;
	UPROPERTY()
	TArray&amp;lt;AActor* &amp;gt; AvailableActorsToLock;
	UPROPERTY()
	AActor* CurrentLockActor;
	UPROPERTY(EditDefaultsOnly,Category=&quot;Target Lock&quot;)
	TSubclassOf&amp;lt;UTargetLockWidget&amp;gt; TargetLockWidgetClass;

	UPROPERTY()
	FVector2D TargetLockBoxSIze = FVector2D::ZeroVector;
	UPROPERTY()
	UTargetLockWidget* TargetLockWidget;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GameplayAbility.cpp&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ActivateAbility()와 OnTargetLockTick()부분만 보시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1727759802208&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// YunMinSeong. All right reserved. 


#include &quot;AbilitySystem/Abilites/PlayerTargetLockAbility.h&quot;
#include &quot;Characters\BladePlayerCharacter.h&quot;
#include &quot;Kismet\KismetSystemLibrary.h&quot;
#include &quot;Kismet\GameplayStatics.h&quot;
#include &quot;Controllers/BladeController.h&quot;
//Widget
#include &quot;Widgets/TargetLockWidget.h&quot;
#include &quot;Blueprint/WidgetLayoutLibrary.h&quot;
#include &quot;Components/SizeBox.h&quot;

#include &quot;AbilitySystem/AbilityTasks/AbilityTask_ExecuteTaskOnTick.h&quot;
#include &quot;BladeFunctionLibrary.h&quot;
#include &quot;BladeGameplayTags.h&quot;
//Debug
#include &quot;CustomDebugHelper.h&quot;
void UPlayerTargetLockAbility::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData)
{
	TryLockOnTarget();
	Super::ActivateAbility(Handle, ActorInfo, ActivationInfo, TriggerEventData);
	
	//UAbilityTask_ExecuteTaskOnTick* TickTask=UAbilityTask_ExecuteTaskOnTick::ExecuteTaskOnTick(this);
	UAbilityTask_ExecuteTaskOnTick* TickTask=UAbilityTask_ExecuteTaskOnTick::ExecuteTaskTick(this);
	TickTask-&amp;gt;OnAbilityTaskTick.AddDynamic(this, &amp;amp;ThisClass::OnTargetLockTick);
	TickTask-&amp;gt;ReadyForActivation();
}
void UPlayerTargetLockAbility::EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled)
{
	CleanUp();
	Super::EndAbility(Handle, ActorInfo, ActivationInfo, bReplicateEndAbility, bWasCancelled);
}
void UPlayerTargetLockAbility::TryLockOnTarget()
{
	GetAvailableActorsToTarget();
	if (AvailableActorsToLock.IsEmpty()) {
		CancelTargetLockAbility();
		return;
	}
	CurrentLockActor=GetNearestTargetFromAvailableActors(AvailableActorsToLock);
	if (CurrentLockActor) {
		DrawTargetLockWidget();
		SetTargetLockWidgetLoc();
	}
	else {
		CancelTargetLockAbility();
	}
}
void UPlayerTargetLockAbility::GetAvailableActorsToTarget()
{
	TArray&amp;lt;FHitResult&amp;gt; BoxTraceHits;
	UKismetSystemLibrary::BoxTraceMultiForObjects(
		GetPlayerCharacterFromActorInfo(),
		GetPlayerCharacterFromActorInfo()-&amp;gt;GetActorLocation(),
		GetPlayerCharacterFromActorInfo()-&amp;gt;GetActorLocation()+GetPlayerCharacterFromActorInfo()-&amp;gt;GetActorForwardVector()* TraceDistance,
		TraceBoxSize/2.f,
		GetPlayerCharacterFromActorInfo()-&amp;gt;GetActorForwardVector().ToOrientationRotator(),
		BoxTraceChannel, false,
		TArray&amp;lt;AActor*&amp;gt;(),
		bIsDebugging?EDrawDebugTrace::ForDuration:EDrawDebugTrace::None,
		BoxTraceHits,true
	);
	for (const FHitResult&amp;amp; BoxHit : BoxTraceHits) {
		if (AActor* HitActor=BoxHit.GetActor()) {
			if (HitActor != GetPlayerCharacterFromActorInfo()) {
				AvailableActorsToLock.AddUnique(HitActor);
			}
		}
	}
}
void UPlayerTargetLockAbility::CancelTargetLockAbility()
{
	CancelAbility(GetCurrentAbilitySpecHandle(),GetCurrentActorInfo(),GetCurrentActivationInfo(),true);
}
void UPlayerTargetLockAbility::CleanUp()
{
	AvailableActorsToLock.Empty();
	CurrentLockActor = nullptr;
	if (TargetLockWidget) {
		TargetLockWidget-&amp;gt;RemoveFromParent();
	}
	TargetLockWidget = nullptr;
	TargetLockBoxSIze = FVector2D::ZeroVector;
}
void UPlayerTargetLockAbility::DrawTargetLockWidget()
{
	if (!TargetLockWidget) {
		checkf(TargetLockWidgetClass, TEXT(&quot;TargetLockWidgetClass is none&quot;));
		TargetLockWidget = CreateWidget&amp;lt;UTargetLockWidget&amp;gt;(GetPlayerControllerFromActorInfo(), TargetLockWidgetClass);
		if (TargetLockWidget) {
			TargetLockWidget-&amp;gt;AddToViewport();
		}
	}
}
void UPlayerTargetLockAbility::SetTargetLockWidgetLoc()
{
	if (!TargetLockWidget || !CurrentLockActor) {
		CancelTargetLockAbility();
		return;
	}
	FVector2D ScreenPosition;
	UWidgetLayoutLibrary::ProjectWorldLocationToWidgetPosition(
		GetPlayerControllerFromActorInfo(),
		CurrentLockActor-&amp;gt;GetActorLocation(),
		ScreenPosition,
		true
	);
	if (TargetLockBoxSIze == FVector2D::ZeroVector) {
		TargetLockBoxSIze.X = TargetLockWidget-&amp;gt;TargetLockBox-&amp;gt;GetWidthOverride();
		TargetLockBoxSIze.Y = TargetLockWidget-&amp;gt;TargetLockBox-&amp;gt;GetHeightOverride();
	}
	ScreenPosition -= TargetLockBoxSIze / 2.f;
	TargetLockWidget-&amp;gt;SetPositionInViewport(ScreenPosition,false);
}
void UPlayerTargetLockAbility::OnTargetLockTick(float DeltaTime)
{
	if (!CurrentLockActor|| 
		UBladeFunctionLibrary::NativeDoesActorHaveTag(CurrentLockActor,BladeGameplayTags::Shared_Status_Dead)||
		UBladeFunctionLibrary::NativeDoesActorHaveTag(GetPlayerCharacterFromActorInfo(), BladeGameplayTags::Shared_Status_Dead)) {
		CancelTargetLockAbility();
		return;
	}
	SetTargetLockWidgetLoc();
}
AActor* UPlayerTargetLockAbility::GetNearestTargetFromAvailableActors(const TArray&amp;lt;AActor*&amp;gt;&amp;amp; InAvailableActors)
{
	float ClosestDistance=0.f;
	return UGameplayStatics::FindNearestActor(GetPlayerCharacterFromActorInfo()-&amp;gt;GetActorLocation(), InAvailableActors, ClosestDistance);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Tick구현 결과.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AbilityTask로 구현한 TargetLock입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tick을 넣어서 위젯의 위치가 계속 갱신되도록 만들었습니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/449881426&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bS0qYw/hyXaDsP5yt/ZKKhLGSLgOGFMrnDytwmRk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/mX71P/hyXazxaSIf/8WGKQskXZ0Zsi2sFySW9Jk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'느긋한 주인장'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/449881426?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>abilitytask</category>
      <category>gameplayability</category>
      <category>Tick</category>
      <category>unreal</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/684</guid>
      <comments>https://intunknown.tistory.com/entry/GameplayAbility-Tick-%EA%B5%AC%ED%98%84-C#entry684comment</comments>
      <pubDate>Tue, 1 Oct 2024 14:32:35 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 슬로우모션</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%8A%AC%EB%A1%9C%EC%9A%B0%EB%AA%A8%EC%85%98</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal SlowMotion&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 간단하게 슬로우모션을 구현해보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 사용한 함수는 게임의 전체 시간 흐름을 조절하는 SetGlobalTimeDilation함수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수는 게임 전체의 시간 흐름을 자유롭게 조절할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvRdkN/btsJGAc8PYY/8s1k6MeA89CH1kAvcAvTG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvRdkN/btsJGAc8PYY/8s1k6MeA89CH1kAvcAvTG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvRdkN/btsJGAc8PYY/8s1k6MeA89CH1kAvcAvTG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvRdkN%2FbtsJGAc8PYY%2F8s1k6MeA89CH1kAvcAvTG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;234&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;코드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.0f: 시간의 흐름이 두배로 빨라집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.0f: 기본 흐름. (정상 시간)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.5f: 시간의 흐름이 절반으로 느려집니다. (슬로우모션.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.f: 시간이 완전히 정지됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 코드를 작성하면 시간의 흐름을 0.5배로, 즉 2배 느리게 만드는 코드인겁니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726934260984&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UGameplayStatics::SetGlobalTimeDilation(GetWorld(), 0.5f);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 이 기능을 NotifyState에 적용을 해서 애니메이션의 특정 부분만 느려지도록 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애니메이션의 일부 구간을 아래처럼 만든 NotifyState를 추가하면 해당 부분의 애니메이션을 진행하는 동안 Meshcomponent가 0.2배속으로 재생됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dct0Mc/btsJHPG19eK/CxgYyC4nhv6CW8NsDSHR4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dct0Mc/btsJHPG19eK/CxgYyC4nhv6CW8NsDSHR4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dct0Mc/btsJHPG19eK/CxgYyC4nhv6CW8NsDSHR4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdct0Mc%2FbtsJHPG19eK%2FCxgYyC4nhv6CW8NsDSHR4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;225&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NotifyState설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Notify Begin에서 0.2로 설정하고 End에서 1로 만든 후 애니메이션에 추가했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkgeNQ/btsJG270WHy/86xiw4LDbC9mSoyKF2jIZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkgeNQ/btsJG270WHy/86xiw4LDbC9mSoyKF2jIZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkgeNQ/btsJG270WHy/86xiw4LDbC9mSoyKF2jIZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkgeNQ%2FbtsJG270WHy%2F86xiw4LDbC9mSoyKF2jIZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;214&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행하면 이렇게 중간에 NotifyState가 적용된 부분이 느려집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;녹화_2024_09_22_01_04_51_893.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n8QGw/btsJHoiGSQk/aPxKhNbggRXK5yIywCZhF1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n8QGw/btsJHoiGSQk/aPxKhNbggRXK5yIywCZhF1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n8QGw/btsJHoiGSQk/aPxKhNbggRXK5yIywCZhF1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/n8QGw/btsJHoiGSQk/aPxKhNbggRXK5yIywCZhF1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-filename=&quot;녹화_2024_09_22_01_04_51_893.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>notifystate</category>
      <category>slowmotion</category>
      <category>unreal</category>
      <category>슬로우모션</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/683</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%8A%AC%EB%A1%9C%EC%9A%B0%EB%AA%A8%EC%85%98#entry683comment</comments>
      <pubDate>Sun, 22 Sep 2024 01:27:09 +0900</pubDate>
    </item>
    <item>
      <title>Assertion failed: index == TypeIndex 오류 해결.</title>
      <link>https://intunknown.tistory.com/entry/Assertion-failed-index-TypeIndex-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;오류환경.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 윈도우 11에서 언리얼 5.3을 사용하다가 해당 오류에 걸렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트를 빌드했을 때, 빌드가 완료되어도 &quot;Asertion Failed: index== Typeindex ....&quot; 라는 팝업창이 나오면서 프로젝트가 정상적으로 실행되지 않았습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;오류 내용.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 메시지를 출력하며 프로젝트가 정상적으로 진행되지 않았습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726307480920&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Assertion failed: Index == TypeIndex [File:E:\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Misc\TVariant.h] [Line: 118] Crash in runnable thread Background Worker #3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 해당 언리얼 프로젝트 파일 생성 후 만진것들입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 삼인칭 기본 맵 복사.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 복사한 맵을 DefaultMap으로 설정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 새로운 GameMode생성(생성만하고 추가작업은 하지 않았습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방금 만든 프로젝트에서 DefaultMap설정을 건드리고 고장났으니 아무래도 맵이 제일 의심스러웠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;해결방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 이런 방법으로 해결했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 폴더\Config\DefaultEngine.ini 를 수정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 보니까 제가 종료하기 전에 이름을 바꿨던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분이 제대로 저장되지 않아서 그것때문에 문제가 생긴 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cu5Io/btsJDU9oPP5/yElhJ7KUoKsMFdPDbiSgs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cu5Io/btsJDU9oPP5/yElhJ7KUoKsMFdPDbiSgs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cu5Io/btsJDU9oPP5/yElhJ7KUoKsMFdPDbiSgs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCu5Io%2FbtsJDU9oPP5%2FyElhJ7KUoKsMFdPDbiSgs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;297&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GameDefaultMap과 EditorStartupMap에 설정된 파일 경로를 삭제했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VoNDx/btsJCTqfv1H/D8XocBzuAW9JJXksiAfIaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VoNDx/btsJCTqfv1H/D8XocBzuAW9JJXksiAfIaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VoNDx/btsJCTqfv1H/D8XocBzuAW9JJXksiAfIaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVoNDx%2FbtsJCTqfv1H%2FD8XocBzuAW9JJXksiAfIaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;259&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;290&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결과.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경로를 삭제했더니 예상대로 프로젝트가 잘 작동했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 경로 파일 이름을 바꿔줬어도 잘 작동했을 것 같습니다.&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <category>언리얼</category>
      <category>오류</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/682</guid>
      <comments>https://intunknown.tistory.com/entry/Assertion-failed-index-TypeIndex-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0#entry682comment</comments>
      <pubDate>Sat, 14 Sep 2024 20:42:34 +0900</pubDate>
    </item>
    <item>
      <title>The project currently uses the compatibility mode where the Render Graph API is disabled</title>
      <link>https://intunknown.tistory.com/entry/The-project-currently-uses-the-compatibility-mode-where-the-Render-Graph-API-is-disabled</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The project currently uses the compatibility mode where the Render Graph API is Disabled.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 유니티를 사용하기 위해 Unity6을 설치해서 프로젝트를 하나 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 사용하다 보니 다음과 같은 경고 메시지가 나타났습니다.&lt;/p&gt;
&lt;div style=&quot;border: 1px solid #ccc; padding: 10px; background-color: #f9f9f9;&quot;&gt;&quot;The project currently uses compatibility mode where the Render Graph API is disabled. Support for this mode will be removed in future Unity versions. Migrate existing ScriptableRenderPasses to the new RenderGraph API. After the migration, disable the compatibility mode in Edit&amp;gt; Projects Settings&amp;gt; Graphics&amp;gt; Render Graph. UnityEditor.EditorAssemblies:ProcessInitalizeOnLoadMethodAttributes()&quot;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZZcuZ/btsJsXrBiCv/VjLcSEqmPKEs5Nwd5ikZk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZZcuZ/btsJsXrBiCv/VjLcSEqmPKEs5Nwd5ikZk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZZcuZ/btsJsXrBiCv/VjLcSEqmPKEs5Nwd5ikZk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZZcuZ%2FbtsJsXrBiCv%2FVjLcSEqmPKEs5Nwd5ikZk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;600&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;경고 내용.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약하면, 기존의 ScriptableRenderPasses는 곧 지원이 종료되니, 새로운 RenderGraph API로 Migrate 하라는 내용인 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 채신기술로 갈아타고, 마이그레이션이 완료되면&amp;nbsp;Compatibility Mode (Render Graph Disabled)를 비활성하라는 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;경고 해결.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐...저는 유니티6를 오랜만에 설치했기 때문에 뭐가 바뀐 건지 모르겠지만, 최근에 유니티로 진행한 프로젝트도 없어서 마이그레이션 후 진행하라는 설정을 바로 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.&lt;/b&gt; &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;Edit&amp;gt; ProjectSettings&lt;/b&gt;&lt;/span&gt;로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgcwfb/btsJrQttZlF/d9VSWl4iWGmLOjVggVErP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgcwfb/btsJrQttZlF/d9VSWl4iWGmLOjVggVErP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgcwfb/btsJrQttZlF/d9VSWl4iWGmLOjVggVErP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgcwfb%2FbtsJrQttZlF%2Fd9VSWl4iWGmLOjVggVErP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;525&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.&lt;/b&gt; Project Settings에서 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;Graphics&lt;/b&gt;&lt;/span&gt;를 찾고 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;Render Graph&lt;/b&gt;&lt;/span&gt;으로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;누가봐도 경고 메시지인 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;Compatibility Mode (Render Graph Disabled)&lt;/b&gt;&lt;/span&gt;를 찾습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpDvx8/btsJsnqOFu9/kpDdtEG4SBk230L6NqtKi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpDvx8/btsJsnqOFu9/kpDdtEG4SBk230L6NqtKi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpDvx8/btsJsnqOFu9/kpDdtEG4SBk230L6NqtKi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpDvx8%2FbtsJsnqOFu9%2FkpDdtEG4SBk230L6NqtKi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;305&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Unity no longer develops or improves the rendering path that does not use Render Graph API. When developing new graphcs features.&quot; 빨리 끄라고 온몸으로 소리치고 있네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Compatibility Mode를 비활성화합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RpqSn/btsJsOuRELk/Hht9oW3iUfTKcPGcTuPq2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RpqSn/btsJsOuRELk/Hht9oW3iUfTKcPGcTuPq2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RpqSn/btsJsOuRELk/Hht9oW3iUfTKcPGcTuPq2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRpqSn%2FbtsJsOuRELk%2FHht9oW3iUfTKcPGcTuPq2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;307&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 경고 메시지가 보이지 않습니다.&lt;/p&gt;</description>
      <category>프로그래밍/유니티</category>
      <category>render graph</category>
      <category>unity</category>
      <category>Warning</category>
      <category>경고</category>
      <category>그래픽</category>
      <category>유니티</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/681</guid>
      <comments>https://intunknown.tistory.com/entry/The-project-currently-uses-the-compatibility-mode-where-the-Render-Graph-API-is-disabled#entry681comment</comments>
      <pubDate>Thu, 5 Sep 2024 20:27:11 +0900</pubDate>
    </item>
    <item>
      <title>티스토리 블로그에서 스팸 댓글에 대한 고민</title>
      <link>https://intunknown.tistory.com/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%B8%94%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-%EC%8A%A4%ED%8C%B8-%EB%8C%93%EA%B8%80</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;티스토리 블로그에서 스팸 댓글에 대한 고민.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 저는 제 글의 조회수가 맛이 없을 것을 알면서도 글을 작성하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 주제에 대한 글이기도 하고, 이런 글들이 나중에 저나 다른 사람들에게 도움이 될 수 있기 때문에, 생각날 때마다 블로그에 글을 작성하고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIjUvX/btsJq9EQKsv/DZx75l7kazBJ7k9YOcNVU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIjUvX/btsJq9EQKsv/DZx75l7kazBJ7k9YOcNVU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIjUvX/btsJq9EQKsv/DZx75l7kazBJ7k9YOcNVU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIjUvX%2FbtsJq9EQKsv%2FDZx75l7kazBJ7k9YOcNVU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;스팸 댓글.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 언제부턴가 블로그에 매크로로 작성된 것으로 보이는 스팸 댓글이 달리기 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 댓글이 달린다는 사실에 기분이 좋았지만, 누가 봐도 스팸 댓글이라 기분이 씁쓸해졌습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방문자가 별로 없을 거라는 사실을 알면서도 글을 쓰기 때문에 댓글이 많이 달리지 않을 거라는 사실을 알지만, 알림이 올 때마다 기대하게 되는 것은 어쩔 수 없는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이 스팸댓글들이 요즘 그 기대를 무너뜨리고 있네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 설램 돌려놓으세요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;스팸댓글 문제.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘만 해도 하나의 글에 댓글이 3개나 달렸습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lF8cv/btsJq8zaiH7/dvjVB77scG5En33izAT6hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lF8cv/btsJq8zaiH7/dvjVB77scG5En33izAT6hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lF8cv/btsJq8zaiH7/dvjVB77scG5En33izAT6hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlF8cv%2FbtsJq8zaiH7%2FdvjVB77scG5En33izAT6hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;297&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;통계를 보면 해당 글은 조회수는 1에 불과합니다. 이것도 제가 들어갔는지 어떤 분이 검색했는지는 기억이 안 나는데, 티스토리 오류로 통계가 제대로 안 잡혔다고 해도, 이 사람들이 제 글에 관심이 없다는 것은 분명합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글을 읽고 있는 여러분을 걸 수도 있을만큼 99퍼센트 확신합니다. (거 혹시 모르니까 저는 못 걸고요.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYZdCA/btsJpe8SraY/9mH16naeds1ML0fDdcPPJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYZdCA/btsJpe8SraY/9mH16naeds1ML0fDdcPPJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYZdCA/btsJpe8SraY/9mH16naeds1ML0fDdcPPJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYZdCA%2FbtsJpe8SraY%2F9mH16naeds1ML0fDdcPPJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;359&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조회수가 1인 글에 3개의 댓글이라니, 아무리 생각해도 댓글 가성비가 좋은 거 같아요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;티스토리에서 댓글이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 티스토리에서는 예전부터 댓글이 큰 의미를 가지지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서, 스팸 댓글을 달고 다니는 분들을 보면서 의문이 생기기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 알기로는 누군가 댓글로 도움이 되었다고 말해주면 좀 더 글을 쓴 보람이 있고 딱 그 정도였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 지금도 티스토리에서 댓글 기능이 그 이상의 특별한 의미가 있다고 생각하지는 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 최근 스팸 댓글을 몇 번 받고 나니 생각이 바뀌었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방문자 수조차 늘지 않는 댓글... 굳이 댓글이 있어야 하나..?&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;스팸 댓글을 막기 위한 노력.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 가끔씩 무언가를 물어보시는 분들, 제 실수를 잡아주시는 분들, 감사 인사를 해주시는 분들 덕분에 보람을 느낄 수 있어 댓글을 완전히 막지는 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신, 스팸 댓글로 인한 불쾌감을 조금이라도 줄이기 위해 다음과 같은 조치를 취했습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;1. 댓글 작성 제한.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글 작성은 로그인한 사용자만 가능하도록 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chkhHu/btsJqQZN1QW/0FDhL06d9Mn2uxK43djD4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chkhHu/btsJqQZN1QW/0FDhL06d9Mn2uxK43djD4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chkhHu/btsJqQZN1QW/0FDhL06d9Mn2uxK43djD4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchkhHu%2FbtsJqQZN1QW%2F0FDhL06d9Mn2uxK43djD4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;281&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;2. 스팸 댓글 휴지통 보내기 설정.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스팸 댓글 휴지통 보내기를 사용하도록 설정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 알아서 스팸 댓글이면 휴지통으로 보내더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 이 경우 알림이 댓글 알림, 쓰레기통 알림 이렇게 두 번 울려서 조금 그렇긴 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀댓글로 달아도 안 막아지는 것 같더라고요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xGIK9/btsJpG43Nel/ikPFA24XWn6KLbhf78G2d0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xGIK9/btsJpG43Nel/ikPFA24XWn6KLbhf78G2d0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xGIK9/btsJpG43Nel/ikPFA24XWn6KLbhf78G2d0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxGIK9%2FbtsJpG43Nel%2FikPFA24XWn6KLbhf78G2d0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;149&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안 그래도 조회수 안 나오는데 최근에 글도 안 읽고 이상한 댓글만 달고 가는 사람들이 많더라고요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거 안 읽었으면 안 읽은 거지, 읽지도 않고 읽은 척 댓글 쓰고 가는 것이&amp;nbsp;눈에 보여서 글을 썻습니다.&lt;/p&gt;</description>
      <category>유용한정보/블로그</category>
      <category>댓글</category>
      <category>방문자</category>
      <category>스팸</category>
      <category>티스토리</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/680</guid>
      <comments>https://intunknown.tistory.com/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%B8%94%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-%EC%8A%A4%ED%8C%B8-%EB%8C%93%EA%B8%80#entry680comment</comments>
      <pubDate>Tue, 3 Sep 2024 21:37:13 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 게임 종료 구현하기 c++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EA%B2%8C%EC%9E%84-%EC%A2%85%EB%A3%8C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 게임 종료 구현하기 c++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;게임을 하다 보면 반드시 있어야 할 것 중 하나가 종료 버튼입니다.&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 모든 게임에서 필수적인 요소인 게임 종료를 언리얼엔진의 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;'UKismetSystemLibrary'&lt;/b&gt;&lt;/span&gt;에서 제공하는 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;'QuitGame'&lt;/b&gt;&lt;/span&gt;함수를 사용해 c++에서 게임 종료를 구현해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBL05B/btsJnhSHawd/TJhkCIhiTqZKbQvT6KBKmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBL05B/btsJnhSHawd/TJhkCIhiTqZKbQvT6KBKmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBL05B/btsJnhSHawd/TJhkCIhiTqZKbQvT6KBKmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBL05B%2FbtsJnhSHawd%2FTJhkCIhiTqZKbQvT6KBKmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;197&quot; data-filename=&quot;edited_edited_blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;UKismetSystemLibrary.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;UKismetSystemLibrary&lt;/b&gt;&lt;/span&gt;'클래스는 게임 플레이, 하드웨어 정보, 월드 관리 등 다양한 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;시스템 관련 기능을 제공하는 유틸리티 클래스&lt;/b&gt;&lt;/span&gt;입니다. 이 클래스를 통해 언리얼 엔진에서 게임 종료(QuitGame), 타이머 설정(Delay), 객체 유효성 검사(IsValid), 디버그 메시지(PrintString) 등 여러 작업을 손쉽게 처리할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 클래스는 주로 블루프린트에서 사용되던 기능을 C++ 코드에서도 쉽게 사용할 수 있도록 도와줍니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;UKismetSystemLibrary::QuitGame 함수.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'UKismetSystemLibrary'클래스는 다양한 기능을 제공하지만, &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;이번 글에서는 게임을 종료하는 데 사용되는 'QuitGame'함수에&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 집중하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드는 'UKismetSystemLibary'클래스에서 'QuitGame'함수만 가져왔습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1725281509656&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void UKismetSystemLibrary::QuitGame(const UObject* WorldContextObject, class APlayerController* SpecificPlayer, TEnumAsByte&amp;lt;EQuitPreference::Type&amp;gt; QuitPreference, bool bIgnorePlatformRestrictions)
{
	APlayerController* TargetPC = SpecificPlayer ? SpecificPlayer : UGameplayStatics::GetPlayerController(WorldContextObject, 0);
	if( TargetPC )
	{
		if ( QuitPreference == EQuitPreference::Background)
		{
			TargetPC-&amp;gt;ConsoleCommand(&quot;quit background&quot;);
		}
		else
		{
			if (bIgnorePlatformRestrictions)
			{
				TargetPC-&amp;gt;ConsoleCommand(&quot;quit force&quot;);
			}
			else
			{
				TargetPC-&amp;gt;ConsoleCommand(&quot;quit&quot;);
			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #7e98b1;&quot;&gt;'QuitGame'&lt;/span&gt; 함수의 주요 매개변수에 대한 설명.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;1. WorldContextObejct :&lt;/b&gt;&lt;/span&gt; 함수가 실행될 월드 정보를 제공하며, 일반적으로 GetWorld()를 사용합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;2. SpecificPlayer :&lt;/b&gt;&lt;/span&gt; 종료할 플레이어 컨트롤러를 지정할 대 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;&lt;b&gt;3. QuitPreference :&lt;/b&gt;&lt;/span&gt; 게임 종료할지 또는 백그라운드로 전환할지 결정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;4. bIgnorePlatformRestrictions :&lt;/span&gt;&lt;/b&gt; 'true'로 설정하면 플랫폼 제한을 무시하고 게임을 강제로 종료합니다. 'false'로 설정하면 플랫폼 제약을 따르고 일반적인 종료 절차를 수행합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;게임 종료 예제.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 InputMappingContext를 보면 아시겠지만 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;Space Bar를 누르면 게임이 종료되도록 만들었습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcrbDg/btsJnsl51rU/PvCoAYhyBnCgrbam0Fj0k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcrbDg/btsJnsl51rU/PvCoAYhyBnCgrbam0Fj0k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcrbDg/btsJnsl51rU/PvCoAYhyBnCgrbam0Fj0k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcrbDg%2FbtsJnsl51rU%2FPvCoAYhyBnCgrbam0Fj0k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;313&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;618&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt;Pawn.h (헤더 파일)&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 'UKismetSystemLibrary::QuitGame' 함수를 사용하여 게임을 종료하도록 구현한 예제코드의 헤더파일입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1725283582291&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;GameFramework/Character.h&quot;
#include &quot;GameTestCharacter.generated.h&quot;

class UInputAction;
class UInputMappingContext;
class UCameraComponent;
UCLASS()
class MINIGAME_API AGameTestCharacter : public ACharacter
{
	GENERATED_BODY()

protected:
	AGameTestCharacter();
	virtual void BeginPlay() override;
	virtual void Tick(float DeltaTime) override;
	
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr&amp;lt;UStaticMeshComponent&amp;gt; BodyMesh;
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr&amp;lt;UCameraComponent&amp;gt; MainCamera;
#pragma region ExitGame
public:
protected:
	UPROPERTY()
	TObjectPtr&amp;lt;UInputMappingContext&amp;gt; ExitTestContext;
	UPROPERTY()
	TObjectPtr&amp;lt;UInputAction&amp;gt; ExitAction;
private:
	void ExitGame();
#pragma endregion
};&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #7e98b1;&quot;&gt;&lt;b&gt; Pawn.cpp (소스 파일)&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #953b34;&quot;&gt;&lt;u&gt;&lt;b&gt;UKismetSystemLibrary::QuitGame(&lt;span style=&quot;color: #006dd7;&quot;&gt;GetWorld()&lt;/span&gt;,&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;nullptr&lt;/span&gt;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;EQuitPreference::Quit&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;false&lt;/span&gt;);&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;매개변수 1.&lt;/b&gt;&lt;/span&gt;&amp;nbsp; 'GetWorld()'를 사용해 현재 월드에서 게임 종료하도록 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;매개변수 2.&lt;/b&gt;&lt;/span&gt;&amp;nbsp; 'nullptr'을 선택했습니다. 모든 플레이어에게 적용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(UGameplayStatics::GetPlayerController(WorldContextObject, 0)을 통해 얻을 수 있는 첫 번째 플레이어 컨트롤러)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;매개변수 3.&lt;/span&gt;&lt;/b&gt; 게임을 즉시 종료하기 위해 EQuitPreference::Quit를 선택했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;매개변수 4.&lt;/b&gt;&lt;/span&gt; 일반적인 종료가 되도록 false를 선택했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1725283739056&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.

#include &quot;Character/GameTestCharacter.h&quot;
//input
#include &quot;EnhancedInputComponent.h&quot;
#include &quot;EnhancedInputSubsystems.h&quot;
#include &quot;InputAction.h&quot;
#include &quot;InputMappingContext.h&quot;
//Camera
#include &quot;Camera\CameraComponent.h&quot;
#include &quot;Camera\CameraActor.h&quot;
//유틸리티
#include &quot;Kismet\KismetSystemLibrary.h&quot;

#include &quot;Kismet\GameplayStatics.h&quot;

// Sets default values
AGameTestCharacter::AGameTestCharacter():bToggleCam(1)
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	BodyMesh = CreateDefaultSubobject&amp;lt;UStaticMeshComponent&amp;gt;(TEXT(&quot;BodyMesh&quot;));
	BodyMesh-&amp;gt;SetupAttachment(GetRootComponent());
	SetRootComponent(BodyMesh);
	//메인 카메라.
	MainCamera = CreateDefaultSubobject&amp;lt;UCameraComponent&amp;gt;(TEXT(&quot;MainCam&quot;));
	MainCamera-&amp;gt;SetupAttachment(GetRootComponent());
	//InputSettings
	static ConstructorHelpers::FObjectFinder&amp;lt;UInputMappingContext&amp;gt; FIndTestMappingContext(TEXT(&quot;InputMappingContext'/Game/Blueprints/Input/IMC_Test.IMC_Test'&quot;));
	if (FIndTestMappingContext.Succeeded()) {
		ExitTestContext = FIndTestMappingContext.Object;
	}
	static ConstructorHelpers::FObjectFinder&amp;lt;UInputAction&amp;gt; FindTestAction(TEXT(&quot;InputAction'/Game/Blueprints/Input/InputAction/Test/IA_TestSpace.IA_TestSpace'&quot;));
	if (FindTestAction.Succeeded()) {
		ExitAction = FindTestAction.Object;
	}
}
// Called when the game starts or when spawned
void AGameTestCharacter::BeginPlay()
{
	Super::BeginPlay();
	UEnhancedInputLocalPlayerSubsystem* SubSystem = ULocalPlayer::GetSubsystem&amp;lt;UEnhancedInputLocalPlayerSubsystem&amp;gt;(GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;GetLocalPlayer());
	if (IsValid(SubSystem)) {
		SubSystem-&amp;gt;AddMappingContext(ExitTestContext, 0);
	}
	//시작하고 화면을 클릭하지 않아도 키보드 동작이 가능하도록.
	FInputModeGameOnly InputMode;
	GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;SetInputMode(InputMode);
}
// Called every frame
void AGameTestCharacter::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}
void AGameTestCharacter::ExitGame()
{
	UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
}
// Called to bind functionality to input
void AGameTestCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	UEnhancedInputComponent* EnhancedInputComponent = Cast&amp;lt;UEnhancedInputComponent&amp;gt;(PlayerInputComponent);
	if (IsValid( EnhancedInputComponent)) {
		EnhancedInputComponent-&amp;gt;BindAction(ExitAction, ETriggerEvent::Started, this, &amp;amp;AGameTestCharacter::ExitGame);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI부분도 붙여서 같이 올릴까 했는데 어차피 사용 방법 자체는 똑같아서 빼고 올렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 그냥 UI사용하는 부분은 나중에 따로 올릴 예정입니다.&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>c++</category>
      <category>quitgame</category>
      <category>unreal</category>
      <category>게임 종료</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/679</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EA%B2%8C%EC%9E%84-%EC%A2%85%EB%A3%8C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0#entry679comment</comments>
      <pubDate>Mon, 2 Sep 2024 23:48:15 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 카메라 시점 변경 c++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 카메라 시점 변경 c++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 c++을 이용해 카메라 시점을 변경 하는 방법에 대해 보여주는 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 'SetViewTargetWithBlend'함수를 활용해 카메라 전환 시 부드러운 화면 전환을 구현하는 방법을 사용합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1057&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c52AVg/btsJm8NqJcu/UZPFeSiqkJyK1mkti5xTG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c52AVg/btsJm8NqJcu/UZPFeSiqkJyK1mkti5xTG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c52AVg/btsJm8NqJcu/UZPFeSiqkJyK1mkti5xTG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc52AVg%2FbtsJm8NqJcu%2FUZPFeSiqkJyK1mkti5xTG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;169&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1057&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Pawn 구성.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 'Character' 클래스에 'CameraComponent'를 하나 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 플레이어가 지정한 키를 누를 때, 레벨에 배치된 'CameraActor'를 찾아 해당 'CameraActor'로 시점을 변경하도록 구현했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헤더파일(.h)&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1725026528670&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;GameFramework/Character.h&quot;
#include &quot;GameTestCharacter.generated.h&quot;

class UInputAction;
class UInputMappingContext;
class UCameraComponent;
UCLASS()
class MINIGAME_API AGameTestCharacter : public ACharacter
{
	GENERATED_BODY()

protected:
	AGameTestCharacter();
	virtual void BeginPlay() override;
	virtual void Tick(float DeltaTime) override;
	
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr&amp;lt;UStaticMeshComponent&amp;gt; BodyMesh;
	UPROPERTY(EditDefaultsOnly)
	TObjectPtr&amp;lt;UCameraComponent&amp;gt; MainCamera;

private:
	//카메라 변경을 위한 bool변수.  
	bool bToggleCam;
#pragma region TestPlayerInputSettings
	UPROPERTY()
	TObjectPtr&amp;lt;UInputMappingContext&amp;gt; TestContext;
	UPROPERTY()
	TObjectPtr&amp;lt;UInputAction&amp;gt; SwitchAction;

	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
	//input이 들어왔을 때 카메라 변경해줄 함수.
	void SwichCamera();
#pragma endregion
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cpp파일(.cpp)&lt;/p&gt;
&lt;pre id=&quot;code_1725026550728&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.


#include &quot;Character/GameTestCharacter.h&quot;
//input
#include &quot;EnhancedInputComponent.h&quot;
#include &quot;EnhancedInputSubsystems.h&quot;
#include &quot;InputAction.h&quot;
#include &quot;InputMappingContext.h&quot;
//Camera
#include &quot;Camera\CameraComponent.h&quot;
#include &quot;Camera\CameraActor.h&quot;

#include &quot;Kismet\GameplayStatics.h&quot;

// Sets default values
AGameTestCharacter::AGameTestCharacter():bToggleCam(1)
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	BodyMesh = CreateDefaultSubobject&amp;lt;UStaticMeshComponent&amp;gt;(TEXT(&quot;BodyMesh&quot;));
	BodyMesh-&amp;gt;SetupAttachment(GetRootComponent());
	SetRootComponent(BodyMesh);
	//메인 카메라.
	MainCamera = CreateDefaultSubobject&amp;lt;UCameraComponent&amp;gt;(TEXT(&quot;MainCam&quot;));
	MainCamera-&amp;gt;SetupAttachment(GetRootComponent());
	//InputSettings
	static ConstructorHelpers::FObjectFinder&amp;lt;UInputMappingContext&amp;gt; FIndTestMappingContext(TEXT(&quot;InputMappingContext'/Game/Blueprints/Input/IMC_Test.IMC_Test'&quot;));
	if (FIndTestMappingContext.Succeeded()) {
		TestContext = FIndTestMappingContext.Object;
	}
	static ConstructorHelpers::FObjectFinder&amp;lt;UInputAction&amp;gt; FindTestAction(TEXT(&quot;InputAction'/Game/Blueprints/Input/InputAction/Test/IA_TestSpace.IA_TestSpace'&quot;));
	if (FindTestAction.Succeeded()) {
		SwitchAction = FindTestAction.Object;
	}
}
// Called when the game starts or when spawned
void AGameTestCharacter::BeginPlay()
{
	Super::BeginPlay();
	UEnhancedInputLocalPlayerSubsystem* SubSystem = ULocalPlayer::GetSubsystem&amp;lt;UEnhancedInputLocalPlayerSubsystem&amp;gt;(GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;GetLocalPlayer());
	if (IsValid(SubSystem)) {
		SubSystem-&amp;gt;AddMappingContext(TestContext, 0);
	}
	//시작하고 화면을 클릭하지 않아도 키보드 동작이 가능하도록.
	FInputModeGameOnly InputMode;
	GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;SetInputMode(InputMode);
}

// Called every frame
void AGameTestCharacter::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}
void AGameTestCharacter::SwichCamera()
{//카메라 변경 토글 함수.
	float BlendTime = 1.f;
	if (bToggleCam) {//bToggleCam이 1인경우 SubCam으로 변경
		//CameraActor를 Level에 하나만 추가해놓은 상태라 GetActorOfClass함수를 사용하면 원하는 카메라가 선택됨.
		AActor* SubCameraActor = UGameplayStatics::GetActorOfClass(GetWorld(), ACameraActor::StaticClass());
		GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;SetViewTargetWithBlend(SubCameraActor, BlendTime);
	}
	else {
		GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;SetViewTargetWithBlend(this, BlendTime);
	}
	bToggleCam = !bToggleCam;
}
// Called to bind functionality to input
void AGameTestCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	UEnhancedInputComponent* EnhancedInputComponent = Cast&amp;lt;UEnhancedInputComponent&amp;gt;(PlayerInputComponent);
	if (IsValid( EnhancedInputComponent)) {
		EnhancedInputComponent-&amp;gt;BindAction(SwitchAction, ETriggerEvent::Started, this, &amp;amp;AGameTestCharacter::SwichCamera);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;테스트 환경 구성.&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;GameMode&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'GameMode'는 'Default Pawn Class'만 변경했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OFxwc/btsJm8zRzQQ/k1rEGqTCB2Vk9J6IX4nCY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OFxwc/btsJm8zRzQQ/k1rEGqTCB2Vk9J6IX4nCY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OFxwc/btsJm8zRzQQ/k1rEGqTCB2Vk9J6IX4nCY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOFxwc%2FbtsJm8zRzQQ%2Fk1rEGqTCB2Vk9J6IX4nCY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;566&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Level&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;카메라 시점 변경만 테스트할 예정이기때문에 Level은 간단하게 구성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;바닥,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; Camera Actor ,PlayerStart, SpotLight.만 배치했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;591&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBPZ2P/btsJmGRbsvH/T8L78zkCI8wIzixKg4z3Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBPZ2P/btsJmGRbsvH/T8L78zkCI8wIzixKg4z3Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBPZ2P/btsJmGRbsvH/T8L78zkCI8wIzixKg4z3Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBPZ2P%2FbtsJmGRbsvH%2FT8L78zkCI8wIzixKg4z3Ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;394&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;591&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Pawn&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 설명한 AGameTestCharacter를 BP로 만들어서 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원뿔 Mesh를 추가하고 카메라 위치만 조절했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 만들고 보니까 왜 Character로 만들었는지 모르겠네요.ㅋㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트하는 데는 상관없으니까... 넘어가죠?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;771&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b67XIa/btsJm9MmaRA/5wRjIFIsXAdRiOy8RSmyF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b67XIa/btsJm9MmaRA/5wRjIFIsXAdRiOy8RSmyF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b67XIa/btsJm9MmaRA/5wRjIFIsXAdRiOy8RSmyF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb67XIa%2FbtsJm9MmaRA%2F5wRjIFIsXAdRiOy8RSmyF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;375&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;771&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실행결과.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Space를 누르면 Level에 존재하는 CameraActor를 찾아서 시점이 변경됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 한번 space를 누르면 원래 카메라로 시점이 변경됩니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/449193380&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/GZopI/hyWV1ubhfp/qb3q75P9BAXy6A1Oe3JlI0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bj7Uc5/hyWV2zO7ft/meLm4rdnKDgS7ozTpW5b20/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'느긋한 주인장'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/449193380?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;시점변경을 사용한 예시.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 동영상은 제가 만들던 공포게임에서 SetViewTargetWithBlend를 사용하여 시점을 변경한 부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상자의 자물쇠를 누르면 플레이의 카메라에서 자물쇠의 카메라로 부드럽게 보간하 시점이 변경됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정키를 누르면 자물쇠의 카메라에서 다시 플레이어의 카메라로 부드럽게 보간하며 시점이 변경됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 작성한 코드와 동일한 방식입니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/449193597&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bTZTd4/hyWV09R1xk/bGbbXAXQgZDjt9VDQNzcu1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/slEcJ/hyWVTCTvWP/EGx50SKpvlZGaDxGCZaHNk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'느긋한 주인장'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/449193597?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <category>시점</category>
      <category>언리얼</category>
      <category>카메라</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/678</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%8B%9C%EC%A0%90-%EB%B3%80%EA%B2%BD-c#entry678comment</comments>
      <pubDate>Sat, 31 Aug 2024 00:28:47 +0900</pubDate>
    </item>
    <item>
      <title>새로 추가한 SSD가 보이지 않는 경우</title>
      <link>https://intunknown.tistory.com/entry/%EC%83%88%EB%A1%9C-%EC%B6%94%EA%B0%80%ED%95%9C-SSD%EA%B0%80-%EB%B3%B4%EC%9D%B4%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;새로 추가한 SSD가 보이지 않는 경우&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;컴퓨터에 새로 산 SSD를 장착했을 때 내 PC에서 보이지 않는 경우 활성화시켜주는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 SSD를 이용해 설명했지만 HDD도 동일합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1758&quot; data-origin-height=&quot;990&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjUGug/btsJhLFWnkw/aPGrBSJAkLKj7MB2875wi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjUGug/btsJhLFWnkw/aPGrBSJAkLKj7MB2875wi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjUGug/btsJhLFWnkw/aPGrBSJAkLKj7MB2875wi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjUGug%2FbtsJhLFWnkw%2FaPGrBSJAkLKj7MB2875wi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;169&quot; data-origin-width=&quot;1758&quot; data-origin-height=&quot;990&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;새로운 SSD 추가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;새로운 SSD를 처음 구매하고 컴퓨터에 추가한다면 당황하실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 구매한 SSD나 HDD는 내 PC에서 보이지 않기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼요.(현재 저장장치3개가 연결되어 있지만 2개만 보이는 중)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVRVsz/btsJjkNwduS/Kl62cJRMbmRU2CQgKGGKak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVRVsz/btsJjkNwduS/Kl62cJRMbmRU2CQgKGGKak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVRVsz/btsJjkNwduS/Kl62cJRMbmRU2CQgKGGKak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVRVsz%2FbtsJjkNwduS%2FKl62cJRMbmRU2CQgKGGKak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;이 경우 초기화를 진행하지 않아서 보이지 않는 경우가 대부분입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 PC-&amp;gt; 우클릭-&amp;gt; 추가옵션클릭-&amp;gt; 관리를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uTIRk/btsJg8BzATH/KLJrUHHqjsKnYTEtECa42k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uTIRk/btsJg8BzATH/KLJrUHHqjsKnYTEtECa42k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uTIRk/btsJg8BzATH/KLJrUHHqjsKnYTEtECa42k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuTIRk%2FbtsJg8BzATH%2FKLJrUHHqjsKnYTEtECa42k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;514&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;디스크 초기화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;컴퓨터 관리&quot;로 들어갔다면 저장소-&amp;gt;디스크 관리로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼 디스크 초기화가 나올 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(안 나온다면 해당되는 디스크를 찾아서 초기화하세요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진을 보면 MBR/GPT라고 선택한 디스크에 사용할 파티션 형식을 선택하라고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqtHIz/btsJicpq35R/AXzS12iCv5j4CwoRp7qskK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqtHIz/btsJicpq35R/AXzS12iCv5j4CwoRp7qskK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqtHIz/btsJicpq35R/AXzS12iCv5j4CwoRp7qskK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqtHIz%2FbtsJicpq35R%2FAXzS12iCv5j4CwoRp7qskK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;432&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MBR은 약 2TB(2000GB)가 최대로 인식됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구형 메인보드를 사용하면서 추가하는 저장장치의 용량이 2TB 이하라면 MBR을 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT는 UEFI부팅이나 2TB를 초과하면 선택했었는데 요즘엔 보통 GPT를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;한 줄 요약: 구형 메인보드 아니면 GPT선택.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;디스크 초기화가 끝나면 새 단숨 볼륨을 선택해서 파티션을 만들어주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;단순 볼륨 만들기 마법사가 실행될 텐데 파티션 크기 지정하고, 드라이브 문자 할당하면 끝납니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xF3zJ/btsJisllej3/JOk5oKrpP8XvhxzG8JNXk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xF3zJ/btsJisllej3/JOk5oKrpP8XvhxzG8JNXk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xF3zJ/btsJisllej3/JOk5oKrpP8XvhxzG8JNXk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxF3zJ%2FbtsJisllej3%2FJOk5oKrpP8XvhxzG8JNXk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;316&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 새로 추가한 SSD가 내 PC상에서 보이게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IM0mO/btsJiGw0Hky/5K62CNzc5CIovVT9TTUXk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IM0mO/btsJiGw0Hky/5K62CNzc5CIovVT9TTUXk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IM0mO/btsJiGw0Hky/5K62CNzc5CIovVT9TTUXk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIM0mO%2FbtsJiGw0Hky%2F5K62CNzc5CIovVT9TTUXk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>SSD</category>
      <category>SSD추가</category>
      <category>저장장치</category>
      <category>파티션</category>
      <category>활성화</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/677</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%83%88%EB%A1%9C-%EC%B6%94%EA%B0%80%ED%95%9C-SSD%EA%B0%80-%EB%B3%B4%EC%9D%B4%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0#entry677comment</comments>
      <pubDate>Wed, 28 Aug 2024 14:53:15 +0900</pubDate>
    </item>
    <item>
      <title>iptime 포트 포워딩 (포드 포워드)</title>
      <link>https://intunknown.tistory.com/entry/iptime%ED%8F%AC%ED%8A%B8%ED%8F%AC%EC%9B%8C%EB%94%A9%ED%8F%AC%EB%93%9C%ED%8F%AC%EC%9B%8C%EB%93%9C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;iptime 포트 포워딩 (포트 포워드)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 글은 iptime 공유기 설정 중에서 포트 포워딩(포트 포워드)에 한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 포트에 대해 간단하게 설명하고, 윈도우 원격 프로그램인 RDP에 사용하는 포트에 대한 설명을 한 뒤, iptime 공유기에서 포트 포워드 설정하는 방법에 대해 작성할 예정입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;포트 번호와 포트 포워딩이란?&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;포트 번호.&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트 번호는 호스트에서 동작하고 있는 서비스를 구분하는 번호입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2바이트 정수로 0~65535까지 사용가능합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;포트 포워딩이란?&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이피에는 외부 아이피와 내부 아이피라는 것이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부아이피는 192.168.xx.xx같은 형태로 되어있는 아이피입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sKP2n/btqAYGl587r/KC2kRzUKBrsS2kJKVCW8eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sKP2n/btqAYGl587r/KC2kRzUKBrsS2kJKVCW8eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sKP2n/btqAYGl587r/KC2kRzUKBrsS2kJKVCW8eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsKP2n%2FbtqAYGl587r%2FKC2kRzUKBrsS2kJKVCW8eK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;409&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부에서 pc에 있는 ftp를 접속하기 위해 요청을 보냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 공유기는 어떤 pc로 연결해줘야 하는지 모르는 상황입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴때 외부아이피:포트(21)번을 하면 ftp를 사용할 수 있게 됩니다.(pc2에 접근.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQn3nP/btqAZOD2cyn/FmMXYGQXVdzggTZ0NDS3F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQn3nP/btqAZOD2cyn/FmMXYGQXVdzggTZ0NDS3F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQn3nP/btqAZOD2cyn/FmMXYGQXVdzggTZ0NDS3F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQn3nP%2FbtqAZOD2cyn%2FFmMXYGQXVdzggTZ0NDS3F0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;419&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;이런식으로 공유기에 어디로 가야하는지 알려주는 것이 포트포워딩입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명을 잘못하겠네요.ㅋㅋㅋ 궁금하시면 더 잘 설명해놓으신 분들 많으니 검색해보시는 것을 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;*윈도우10에서 원격을 위해 기본으로 사용하는 포트는 3389입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;원격 접속을 위한 포트.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부에서 원격을 하기 위해서는 그냥 내부 아이피:3389만 입력하면 되었지만 외부에서 원격을 사용하기 위해서는 공유기랑 약속을 해줄 필요가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원격 접속을 위해서는 3389포트를 사용해야 합니다.(포트는 변경 가능합니다.)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;위에서 말한 포트포워딩의 예시는 다음과 같습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;외부아이피:1111로 공유기에 접근하면&lt;/b&gt; &lt;b&gt;공유기는 원격을 사용할 컴퓨터아이피:3389포트로 연결해줘야해!&lt;/b&gt;&lt;/span&gt;가 되는 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보/윈도우] - 윈도우10 원격 데스크톱 연결(RDP)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1578505552963&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;윈도우10 원격 데스크톱  연결(RDP)&quot; data-og-description=&quot;윈도우10 원격 데스크톱 연결(RDP) 안녕하세요. 오늘은 윈도우10 pro에서 원격 데스크톱을 연결하는 방법에 대한 글입니다. 윈도우10 pro에서는 기본 내장된 원격 프로그램으로 원격을 사용할 수 있습니다. 원격..&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/483&quot; data-og-url=&quot;https://intunknown.tistory.com/483&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/l2XWy/hyEuxrIFeQ/7T5fr80m1isIHkI2iPP1u1/img.png?width=475&amp;amp;height=542&amp;amp;face=0_0_475_542,https://scrap.kakaocdn.net/dn/3YPio/hyEvSHNlgV/8NpCDKWg1J4zKxyqJohNOK/img.png?width=475&amp;amp;height=542&amp;amp;face=0_0_475_542,https://scrap.kakaocdn.net/dn/6UGQO/hyEuksmPm6/LSEmx3azzHeOKQ2xxbFXd1/img.png?width=1150&amp;amp;height=726&amp;amp;face=0_0_1150_726&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/483&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/l2XWy/hyEuxrIFeQ/7T5fr80m1isIHkI2iPP1u1/img.png?width=475&amp;amp;height=542&amp;amp;face=0_0_475_542,https://scrap.kakaocdn.net/dn/3YPio/hyEvSHNlgV/8NpCDKWg1J4zKxyqJohNOK/img.png?width=475&amp;amp;height=542&amp;amp;face=0_0_475_542,https://scrap.kakaocdn.net/dn/6UGQO/hyEuksmPm6/LSEmx3azzHeOKQ2xxbFXd1/img.png?width=1150&amp;amp;height=726&amp;amp;face=0_0_1150_726');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;윈도우10 원격 데스크톱 연결(RDP)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;윈도우10 원격 데스크톱 연결(RDP) 안녕하세요. 오늘은 윈도우10 pro에서 원격 데스크톱을 연결하는 방법에 대한 글입니다. 윈도우10 pro에서는 기본 내장된 원격 프로그램으로 원격을 사용할 수 있습니다. 원격..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- 중간광고2 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;iptime포트포워드 설정.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 그럼 포트포워딩을 해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iptime 공유기에서만 해봤지만 다른 공유기들도 크게 다르지 않을겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;이 글에서는 제가 iptime공유기를 사용하기 때문에 iptime 공유기로 설명하겠습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;192.168.0.1을 주소창에 입력해서 공유기 설정으로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인 해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6NH6a/btqA1y8hct5/13KKjjBIVCaLpCtWpptpGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6NH6a/btqA1y8hct5/13KKjjBIVCaLpCtWpptpGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6NH6a/btqA1y8hct5/13KKjjBIVCaLpCtWpptpGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6NH6a%2FbtqA1y8hct5%2F13KKjjBIVCaLpCtWpptpGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;368&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관리 도구로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsYG3S/btqAYGTY501/Rk4x1f20Ocf5dQgvVx2q5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsYG3S/btqAYGTY501/Rk4x1f20Ocf5dQgvVx2q5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsYG3S/btqAYGTY501/Rk4x1f20Ocf5dQgvVx2q5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsYG3S%2FbtqAYGTY501%2FRk4x1f20Ocf5dQgvVx2q5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;396&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고급 설정--&amp;gt;NAT/라우터 관리--&amp;gt;포트 포워드 설정으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S88yd/btqA06xq8U0/cIPxxUUvGkgTRGzidgBVi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S88yd/btqA06xq8U0/cIPxxUUvGkgTRGzidgBVi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S88yd/btqA06xq8U0/cIPxxUUvGkgTRGzidgBVi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS88yd%2FbtqA06xq8U0%2FcIPxxUUvGkgTRGzidgBVi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;571&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 규칙을 추가해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진을 참고해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부에서 3389포트로 접속하면 192.168.0.33의 3389포트로 연결할겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;여기서 만약에 외부 포트만 11111로 바꾼다고 가정하겠습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;이후 외부 아이피:11111로 연결하면 192.168.0.33:3389로 연결되는 겁니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHU0u/btqAY74WYj2/nLsCCT6Gb8lkmOqMfqYeB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHU0u/btqAY74WYj2/nLsCCT6Gb8lkmOqMfqYeB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHU0u/btqAY74WYj2/nLsCCT6Gb8lkmOqMfqYeB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHU0u%2FbtqAY74WYj2%2FnLsCCT6Gb8lkmOqMfqYeB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;594&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;+추가로 볼만한 내용.&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border: #f3c534 3px double; padding: 10px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/93&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보] - 아이피 확인하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/335&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보] - 아이피타임 공유기 초기화하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/272&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보] - 울트라서프 컴퓨터 아이피 변경 프로그램 최신버전&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>IPTime</category>
      <category>아이피타임</category>
      <category>포트</category>
      <category>포트 포워드</category>
      <category>포트 포워딩</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/484</guid>
      <comments>https://intunknown.tistory.com/entry/iptime%ED%8F%AC%ED%8A%B8%ED%8F%AC%EC%9B%8C%EB%94%A9%ED%8F%AC%EB%93%9C%ED%8F%AC%EC%9B%8C%EB%93%9C#entry484comment</comments>
      <pubDate>Tue, 27 Aug 2024 23:16:58 +0900</pubDate>
    </item>
    <item>
      <title>죄송합니다. 이 pin은 조직의 리소스에 대해 작동하지 않습니다. 해결방법.</title>
      <link>https://intunknown.tistory.com/entry/%EC%A3%84%EC%86%A1%ED%95%A9%EB%8B%88%EB%8B%A4-%EC%9D%B4-pin%EC%9D%80-%EC%A1%B0%EC%A7%81%EC%9D%98-%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;죄송합니다. 이 Pin은 조직의 리소스에 대해 작동하지 않습니다. 해결방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&quot;죄송합니다. 이 PIN은 조직의 리소스에 대해 작동하지 않습니다. 문제를 해결하려면 여기를 탭하거나 클릭하세요.&quot; 라는&amp;nbsp; 메시지가 나오면서 Windows Hello PIN 옵션을 사용할 수 없을 때, 이를 해결하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1845&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JG4Eu/btsJg8ndJha/UYAKmECvroX06wbaKo2Emk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JG4Eu/btsJg8ndJha/UYAKmECvroX06wbaKo2Emk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JG4Eu/btsJg8ndJha/UYAKmECvroX06wbaKo2Emk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJG4Eu%2FbtsJg8ndJha%2FUYAKmECvroX06wbaKo2Emk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;147&quot; data-origin-width=&quot;1845&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제 상황.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PIN을 변경하기 위해 Windows 설정-&amp;gt; 계정 -&amp;gt; 로그인 옵션에 들어갔더니, &quot;죄송합니다. 이 PIN은 조직의 리소스에 대해 작동하지 않습니다. 문제를 해결하려면 여기를 탭하거나 클릭하세요.&quot;라는 메시지가 출력되며 PIN을 변경할 수 없게되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AvSy9/btsJiq1fdnN/hBbrU7Fle51TRDgo4UAPF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AvSy9/btsJiq1fdnN/hBbrU7Fle51TRDgo4UAPF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AvSy9/btsJiq1fdnN/hBbrU7Fle51TRDgo4UAPF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAvSy9%2FbtsJiq1fdnN%2FhBbrU7Fle51TRDgo4UAPF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;275&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클릭해보면 이렇게 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzUvOW/btsJifyMQnU/kRVYkKMRKZmm2KhkQUyM8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzUvOW/btsJifyMQnU/kRVYkKMRKZmm2KhkQUyM8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzUvOW/btsJifyMQnU/kRVYkKMRKZmm2KhkQUyM8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzUvOW%2FbtsJifyMQnU%2FkRVYkKMRKZmm2KhkQUyM8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;485&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법은 간단했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows 설정-&amp;gt; 계정 -&amp;gt; &quot;회사 또는 학교 액세스&quot; 에서 회사 또는 학교 계정 추가부분에 있는 계정을 눌러 연결 끊기 하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼 &quot;계정&quot;을 제거하면 &quot;PIN 변경&quot;이 활성화 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 필요에 의해 회사나 학교 계정이 필요하시다면 다시 연결하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blqhUU/btsJhgFoVKA/kM0Zo4z6NJXcGKQdeRSkb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blqhUU/btsJhgFoVKA/kM0Zo4z6NJXcGKQdeRSkb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blqhUU/btsJhgFoVKA/kM0Zo4z6NJXcGKQdeRSkb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblqhUU%2FbtsJhgFoVKA%2FkM0Zo4z6NJXcGKQdeRSkb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;721&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;721&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>PIN</category>
      <category>계정</category>
      <category>오류</category>
      <category>윈도우</category>
      <category>해결방법</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/676</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%A3%84%EC%86%A1%ED%95%A9%EB%8B%88%EB%8B%A4-%EC%9D%B4-pin%EC%9D%80-%EC%A1%B0%EC%A7%81%EC%9D%98-%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95#entry676comment</comments>
      <pubDate>Tue, 27 Aug 2024 19:35:38 +0900</pubDate>
    </item>
    <item>
      <title>바라쿠다X 펌웨어 업데이트</title>
      <link>https://intunknown.tistory.com/entry/%EB%B0%94%EB%9D%BC%EC%BF%A0%EB%8B%A4X-%ED%8E%8C%EC%9B%A8%EC%96%B4-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;바라쿠다X 펌웨어 업데이트.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바라쿠다X 펌웨어 업데이트 방법에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한참 바라쿠다X를 사용하면서 문제가 없어서 펌웨어 업데이트는 생각도 하지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 보니까 있더라고요. 그래서 한번 설치해봤습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;1281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w4Oup/btsJfOIrBsh/8e54qW7Ry72tWB9lv6YiWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w4Oup/btsJfOIrBsh/8e54qW7Ry72tWB9lv6YiWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w4Oup/btsJfOIrBsh/8e54qW7Ry72tWB9lv6YiWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw4Oup%2FbtsJfOIrBsh%2F8e54qW7Ry72tWB9lv6YiWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;236&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;1281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;바라쿠다X펌웨어 다운.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사이트에서 바라쿠다X와 나머지 레이저 제품의 펌웨어 업데이트를 받을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바라쿠다X의 경우에는 구형과 신형이 있으므로 신형은 Barracuda X(2022)를 받으시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;레이저 펌웨어&quot; href=&quot;https://mysupport.razer.com/app/answers/detail/a_id/4166/kw/firmware&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mysupport.razer.com/app/answers/detail/a_id/4166/kw/firmware&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724646658886&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Software and Firmware Updates for Razer Peripherals&quot; data-og-description=&quot;Software and Firmware Updates for Razer Peripherals Updated: 30-Jul-2024 | Answer ID: 4166 This answer provides software and firmware updates for Razer Peripherals.&quot; data-og-host=&quot;mysupport.razer.com&quot; data-og-source-url=&quot;https://mysupport.razer.com/app/answers/detail/a_id/4166/kw/firmware&quot; data-og-url=&quot;https://mysupport.razer.com/app/answers/detail/a_id/4166/kw/firmware&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://mysupport.razer.com/app/answers/detail/a_id/4166/kw/firmware&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mysupport.razer.com/app/answers/detail/a_id/4166/kw/firmware&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Software and Firmware Updates for Razer Peripherals&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Software and Firmware Updates for Razer Peripherals Updated: 30-Jul-2024 | Answer ID: 4166 This answer provides software and firmware updates for Razer Peripherals.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mysupport.razer.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;바라쿠다X 펌웨어 업데이트 시작.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;펌웨어 설치 방법은 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 올려드린 바라쿠다X 펌웨어 다운 주소로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 RAZER BARRACUDA X 펌웨어 업데이트 프로그램을 다운받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 구형 바라쿠다라 (2022가 아닌 버전) 해당되는 프로그램을 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 설치하고 케이블은 연결하니 제 헤드셋 버전은 1.00.09네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신버전이 1.4.0이니까 업데이트를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;574&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AlVDK/btsJfarNNRO/NFYORnaXKD6UAd19aafkC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AlVDK/btsJfarNNRO/NFYORnaXKD6UAd19aafkC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AlVDK/btsJfarNNRO/NFYORnaXKD6UAd19aafkC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAlVDK%2FbtsJfarNNRO%2FNFYORnaXKD6UAd19aafkC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;472&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;574&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 펌웨어 업데이트에서 항상 나오는 컴퓨터 전원을 끄거나 장치를 제거하지 마십시오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 기다려줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;574&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SrsIa/btsJfiDcbfW/4RNVFyrDPrTcumouMkXeR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SrsIa/btsJfiDcbfW/4RNVFyrDPrTcumouMkXeR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SrsIa/btsJfiDcbfW/4RNVFyrDPrTcumouMkXeR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSrsIa%2FbtsJfiDcbfW%2F4RNVFyrDPrTcumouMkXeR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;472&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;574&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;펌웨어 업데이트 완료.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잠시 기다리면 이렇게 펌웨어 업데이트가 끝납니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;574&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0oR9Z/btsJfjvsGwR/6GugC8tvFlKmrBMkkjOKok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0oR9Z/btsJfjvsGwR/6GugC8tvFlKmrBMkkjOKok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0oR9Z/btsJfjvsGwR/6GugC8tvFlKmrBMkkjOKok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0oR9Z%2FbtsJfjvsGwR%2F6GugC8tvFlKmrBMkkjOKok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;472&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;574&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간도 오래걸리지 않고 간단하게 업데이트 할 수 있었는데 역시나 달라진것은 느껴지지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 사용하면서 문제를 느끼지 못해서 더 그렇게 느껴지는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 혹시 모르니까 다들 펌웨어 올릴 수 있으면 올리는 것을 추천드립니다.&lt;/p&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>레이저</category>
      <category>바라쿠다</category>
      <category>펌웨어</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/675</guid>
      <comments>https://intunknown.tistory.com/entry/%EB%B0%94%EB%9D%BC%EC%BF%A0%EB%8B%A4X-%ED%8E%8C%EC%9B%A8%EC%96%B4-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8#entry675comment</comments>
      <pubDate>Mon, 26 Aug 2024 13:37:55 +0900</pubDate>
    </item>
    <item>
      <title>윈도우11 빠른 시작 켜기 옵션</title>
      <link>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B011-%EB%B9%A0%EB%A5%B8-%EC%8B%9C%EC%9E%91-%EC%BC%9C%EA%B8%B0-%EC%98%B5%EC%85%98</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;제목&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우11의 빠른 시작 켜기 옵션이 제어판에서 보이지 않는 경우 보이게 하는 방법 대해 다루는 글입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qE5BF/btsJdlUwJzS/X7FAI47Ktv31RMokosVsR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qE5BF/btsJdlUwJzS/X7FAI47Ktv31RMokosVsR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qE5BF/btsJdlUwJzS/X7FAI47Ktv31RMokosVsR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqE5BF%2FbtsJdlUwJzS%2FX7FAI47Ktv31RMokosVsR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;빠른 시작 켜기란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우8 이후 도입된기능으로 컴퓨터를 종료할 때 hiberfil.sys에 정보를 저장했다가 다음 부팅때 사용해 빠르게 부팅을 시키는 기능입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 완전히 종료하는 것은 아니고 최대절전모드 같은겁니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;빠른 시작 옵션 보이게 하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빠른 시작 옵션을 보이게 하는 방법은 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇가지 명령어만 입력해주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows PowerShell이나 Cmd(명령 프롬프트)를 검색합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JUboj/btsJenKgmoq/U6ZhqzeHmSHdkkhFnnuES0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JUboj/btsJenKgmoq/U6ZhqzeHmSHdkkhFnnuES0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JUboj/btsJenKgmoq/U6ZhqzeHmSHdkkhFnnuES0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJUboj%2FbtsJenKgmoq%2FU6ZhqzeHmSHdkkhFnnuES0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;119&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PowerShell(관리자 모드)나 Cmd(명령 프롬프트/관리자모드)를 실행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kH4SB/btsJdslAfCR/plRhg3uhHu5KpxArpMlLKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kH4SB/btsJdslAfCR/plRhg3uhHu5KpxArpMlLKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kH4SB/btsJdslAfCR/plRhg3uhHu5KpxArpMlLKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkH4SB%2FbtsJdslAfCR%2FplRhg3uhHu5KpxArpMlLKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;545&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관리자 모드로 실행된 창에 powercfg -h on을 입력합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1724394062548&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;powercfg -h on&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4s4FV/btsJcxVF0WF/xEnEy8hhlzKYAYKHD91FX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4s4FV/btsJcxVF0WF/xEnEy8hhlzKYAYKHD91FX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4s4FV/btsJcxVF0WF/xEnEy8hhlzKYAYKHD91FX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4s4FV%2FbtsJcxVF0WF%2FxEnEy8hhlzKYAYKHD91FX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;240&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 제어판-&amp;gt;전원 옵션.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uRUfc/btsJcjXrUuM/OkB5axo0Wv4GDqUkSb9Fik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uRUfc/btsJcjXrUuM/OkB5axo0Wv4GDqUkSb9Fik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uRUfc/btsJcjXrUuM/OkB5axo0Wv4GDqUkSb9Fik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuRUfc%2FbtsJcjXrUuM%2FOkB5axo0Wv4GDqUkSb9Fik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전원 옵션-&amp;gt;전원 단추 작동 설정.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/69igD/btsJdzSwOuT/vPDdDSZZuqzDkObA1mzcBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/69igD/btsJdzSwOuT/vPDdDSZZuqzDkObA1mzcBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/69igD/btsJdzSwOuT/vPDdDSZZuqzDkObA1mzcBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F69igD%2FbtsJdzSwOuT%2FvPDdDSZZuqzDkObA1mzcBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;245&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보이지 않던 빠른 시작 켜기 버튼이 활성화 된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uCAaJ/btsJeB2QlIU/UtrunCTSgiELg4dGODUewk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uCAaJ/btsJeB2QlIU/UtrunCTSgiELg4dGODUewk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uCAaJ/btsJeB2QlIU/UtrunCTSgiELg4dGODUewk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuCAaJ%2FbtsJeB2QlIU%2FUtrunCTSgiELg4dGODUewk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 방패모양의 &quot;현재 사용할 수 없는 설정 변경&quot;을 누르면 빠른 시작 켜기를 활성/비활성 할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;배치파일.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관리자 권한으로 실행하고 &quot; 전원 단추 작동 설정&quot;에서 설정해도 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bf6dTa/btsJei3yr28/IcKcKA9XGPuVm7mpKrPnk1/fastBootSet.bat?attach=1&amp;amp;knm=tfile.bat&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;fastBootSet.bat&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724395058413&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;powercfg -h on
control powercfg.cpl&lt;/code&gt;&lt;/pre&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>윈도우</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/674</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B011-%EB%B9%A0%EB%A5%B8-%EC%8B%9C%EC%9E%91-%EC%BC%9C%EA%B8%B0-%EC%98%B5%EC%85%98#entry674comment</comments>
      <pubDate>Fri, 23 Aug 2024 15:39:55 +0900</pubDate>
    </item>
    <item>
      <title>Unreal 생성자에서 리소스 불러오기 C++</title>
      <link>https://intunknown.tistory.com/entry/Unreal-%EC%83%9D%EC%84%B1%EC%9E%90%EC%97%90%EC%84%9C-%EB%A6%AC%EC%86%8C%EC%8A%A4-%EB%B6%88%EB%9F%AC%EC%98%A4%EA%B8%B0-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal 생성자에서 리소스 불러오기 C++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 Unreal Engine에서 ConstructorHelpers를 사용해 생성자에서 특정 리소스를 불러오는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm90PI/btsI7o4f4oj/mqkLJdnujgOcX5X7h46F60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm90PI/btsI7o4f4oj/mqkLJdnujgOcX5X7h46F60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm90PI/btsI7o4f4oj/mqkLJdnujgOcX5X7h46F60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm90PI%2FbtsI7o4f4oj%2FmqkLJdnujgOcX5X7h46F60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;ConstructorHelpers에 대한 간단한 설명.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;ConstructorHelpers 클래스는 C++에서 객체를 생성할 때 리소스를 찾고 로드할 때 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체를 생성할 때 사용되므로 생성자에서만 사용가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;런타임에서 리소스를 로딩하기 위해서는 다른 방법을 사용해야 하고 이 글에서는 다루지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/gameplay-classes-in-unreal-engine&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/gameplay-classes-in-unreal-engine&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;FClassFinder&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;FClassFinder는 'ConstructorHelpers'의 헬퍼 클래스로 클래스를 찾기 위해 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 사용 예시 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723989513970&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static ConstructorHelpers::FClassFinder&amp;lt;ACustomCharacter&amp;gt; CustomCharacterClassFinder(TEXT(&quot;Blueprint'/Game/PathToYourBlueprint/BP_CustomCharacter.BP_CustomCharacter_C'&quot;));
if (CustomCharacterClassFinder.Succeeded()) {
    TSubclassOf&amp;lt;ACustomCharacter&amp;gt; CustomCharacterClass = CustomCharacterClassFinder.Class;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;FObjectFinder&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;'ConstructorHelpers'의 헬퍼 클래스로 오브젝트(머티리얼, 텍스처, 스프라이트 등)를 찾기 위해 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 사용 예시 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Material Instance&lt;/p&gt;
&lt;pre id=&quot;code_1723988889824&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static ConstructorHelpers::FObjectFinder&amp;lt;UMaterialInstance&amp;gt; MaterialInstanceFinder(TEXT(&quot;MaterialInstanceConstant'/Game/PathToYourMaterialInstance/YourMaterialInstance.YourMaterialInstance'&quot;));
if (MaterialInstanceFinder.Succeeded()) {
    UMaterialInstance* MyMaterialInstance = MaterialInstanceFinder.Object;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Static Mesh&lt;/p&gt;
&lt;pre id=&quot;code_1723988936743&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static ConstructorHelpers::FObjectFinder&amp;lt;UStaticMesh&amp;gt; MeshAssetFinder(TEXT(&quot;StaticMesh'/Game/PathToYourMesh/YourMesh.YourMesh'&quot;));
if (MeshAssetFinder.Succeeded()) {
    UStaticMesh* MyMesh = MeshAssetFinder.Object;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Texture&lt;/p&gt;
&lt;pre id=&quot;code_1723988945125&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static ConstructorHelpers::FObjectFinder&amp;lt;UTexture2D&amp;gt; TextureAssetFinder(TEXT(&quot;Texture2D'/Game/PathToYourTexture/YourTexture.YourTexture'&quot;));
if (TextureAssetFinder.Succeeded()) {
    UTexture2D* MyTexture = TextureAssetFinder.Object;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Sound&lt;/p&gt;
&lt;pre id=&quot;code_1723988956824&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static ConstructorHelpers::FObjectFinder&amp;lt;USoundBase&amp;gt; SoundAssetFinder(TEXT(&quot;SoundCue'/Game/PathToYourSound/YourSound.YourSound'&quot;));
if (SoundAssetFinder.Succeeded()) {
    USoundBase* MySound = SoundAssetFinder.Object;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>Finder</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/673</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-%EC%83%9D%EC%84%B1%EC%9E%90%EC%97%90%EC%84%9C-%EB%A6%AC%EC%86%8C%EC%8A%A4-%EB%B6%88%EB%9F%AC%EC%98%A4%EA%B8%B0-C#entry673comment</comments>
      <pubDate>Sun, 18 Aug 2024 23:14:59 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 프로젝트 파일 용량 관리 c++</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8C%8C%EC%9D%BC-%EC%9A%A9%EB%9F%89-%EA%B4%80%EB%A6%AC-c</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언리얼 프로젝트 파일 용량관리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 언리얼 프로젝트 파일 용량관리에 대한 글을 다루고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++이랑 Blueprint프로젝트는 지우면 안 되는 파일 등이 살짝 다르긴 해서 제목에 C++을 붙였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zLXlm/btsIHppnhba/97UKyUzfmRAGoFnKm4h7J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zLXlm/btsIHppnhba/97UKyUzfmRAGoFnKm4h7J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zLXlm/btsIHppnhba/97UKyUzfmRAGoFnKm4h7J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzLXlm%2FbtsIHppnhba%2F97UKyUzfmRAGoFnKm4h7J0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;지우면 안 되는 파일.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.uproject파일 : 언리얼 에디터를 구동시키는 연결파일.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Source폴더&amp;nbsp; &amp;nbsp; : C++전용, 소스코드 등이 들어있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Config폴더&amp;nbsp; &amp;nbsp; &amp;nbsp;: 언리얼 프로젝트의 환경설정을 저장하는 파일.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Content폴더&amp;nbsp; &amp;nbsp;: 프로젝트에서 사용되는 모든 에셋을 포함하는 폴더.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Plugins폴더&amp;nbsp; &amp;nbsp; : 엔진에서 제공해 주는 플러그인이 아닌 다른 외부 플러그인.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;지워도 되는 파일.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이부분은 프로젝트 파일을 다시 빌드하면 생성되므로 삭제해도 상관없음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.sln파일&amp;nbsp; -&amp;gt;&amp;nbsp; visual studio solution파일 .uproject파일로 다시 생성가능.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.vs폴더&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Binaries폴더&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Build폴더&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Intermediate폴더&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DerivedDataCache폴더&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;지워도 되긴 하지만 지우지 않는 것이 좋은 파일.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Saved폴더 : 프로젝트 작업 중 생성되는 임시 파일 및 저장된 데이터(로그 파일, 임시 캐시 파일, 백업파일, 스크린샷&amp;nbsp;등)&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;배치파일.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 파일을 여러개 만들었더니 용량을 좀 많이먹더라고여.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하지 않고 용량만 많이 차지하는데 일일이 지우기 귀찮아서 배치파일로 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 이름.bat으로 저장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Saved를 넣거나 빼거나.&lt;/p&gt;
&lt;pre id=&quot;code_1721611894919&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rmdir Build /s /q
rmdir Intermediate /s /q
rmdir .vs /s /q
rmdir DerivedDataCache /s /q
rmdir Saved /s /q
del *.sln&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitignore도 비슷합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요없는파일을 무시하도록 설정하면됩니다.&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/672</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8C%8C%EC%9D%BC-%EC%9A%A9%EB%9F%89-%EA%B4%80%EB%A6%AC-c#entry672comment</comments>
      <pubDate>Mon, 22 Jul 2024 10:39:46 +0900</pubDate>
    </item>
    <item>
      <title>Unreal에서 새로운 충돌 채널 추가</title>
      <link>https://intunknown.tistory.com/entry/Unreal%EC%97%90%EC%84%9C-%EC%83%88%EB%A1%9C%EC%9A%B4-%EC%B6%A9%EB%8F%8C-%EC%B1%84%EB%84%90-%EC%B6%94%EA%B0%80</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal에서 새로운 충돌 채널 추가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 Unreal에서 새로운 충돌 채널을 추가하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmgzBv/btsIGJWd8RT/TpupjdmX4KHv1zCL7q8Cs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmgzBv/btsIGJWd8RT/TpupjdmX4KHv1zCL7q8Cs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmgzBv/btsIGJWd8RT/TpupjdmX4KHv1zCL7q8Cs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmgzBv%2FbtsIGJWd8RT%2FTpupjdmX4KHv1zCL7q8Cs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Trace Channel글에 대한 썸네일&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Unreal Editor에서 새로운 Trace Channel 추가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unreal Editor에서 Edit -&amp;gt; ProjectSettings로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5eZMf/btsIInqLK7d/nqLUdbKUHTyBFhOHtYUFf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5eZMf/btsIInqLK7d/nqLUdbKUHTyBFhOHtYUFf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5eZMf/btsIInqLK7d/nqLUdbKUHTyBFhOHtYUFf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5eZMf%2FbtsIInqLK7d%2FnqLUdbKUHTyBFhOHtYUFf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Unreal Editor에서 ProjectSettings를 들어가는 방법을 보여주는 이미지&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;326&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Project Settings에서 Engine/Collision으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;293&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J7F0K/btsIHpJFIla/T9hkzXwrdG5oSSgDBvlFOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J7F0K/btsIHpJFIla/T9hkzXwrdG5oSSgDBvlFOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J7F0K/btsIHpJFIla/T9hkzXwrdG5oSSgDBvlFOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ7F0K%2FbtsIHpJFIla%2FT9hkzXwrdG5oSSgDBvlFOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Engine/Collision&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;508&quot; data-origin-width=&quot;293&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Engine/Collision으로 들어왔다면 Trace Channels를 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진은 예시입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 Test채널을 추가했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Default Response는 Ingnore로 설정했습니다만...이 부분은 필요에 맞게 설정하시면 됩니다. )&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF5plu/btsIHZcB6c4/EktHrkkG84KtLlIA9ak5i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF5plu/btsIHZcB6c4/EktHrkkG84KtLlIA9ak5i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF5plu/btsIHZcB6c4/EktHrkkG84KtLlIA9ak5i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF5plu%2FbtsIHZcB6c4%2FEktHrkkG84KtLlIA9ak5i0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;New Trace Channel 예시&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;146&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가후.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bifgCI/btsIHdP11W2/B2UstAE8a5FQ0Psgce5kq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bifgCI/btsIHdP11W2/B2UstAE8a5FQ0Psgce5kq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bifgCI/btsIHdP11W2/B2UstAE8a5FQ0Psgce5kq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbifgCI%2FbtsIHdP11W2%2FB2UstAE8a5FQ0Psgce5kq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;117&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;새로 추가한 충돌 채널 사용 예시 C++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tick에서 SphereTraceSingle을 사용했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721603237944&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void ATestWorldCharacter::Tick(float DeltaSeconds)
{
	Super::Tick(DeltaSeconds);
	FVector CamFwdVec = FollowCamera-&amp;gt;GetForwardVector();
	FVector CamLoc = FollowCamera-&amp;gt;GetComponentLocation();
	FVector StartVec =(CamFwdVec * 800) + CamLoc;
	FVector EndVec = (CamFwdVec * 1500) + CamLoc;
	FHitResult HitResult;
	/*Unreal 에디터에서 설정한 Trace Channel*/
	ETraceTypeQuery TestTraceTarget = UEngineTypes::ConvertToTraceType(ECollisionChannel::ECC_GameTraceChannel1);
	bool IsHit =
		UKismetSystemLibrary::SphereTraceSingle(
		GetWorld(), 
		StartVec/*시작위치*/,
		EndVec/*끝위치*/,
		330.f/*Radius*/,
		TestTraceTarget/*Trace Channel*/,
		false, 
		TArray&amp;lt;AActor*&amp;gt;(), 
		EDrawDebugTrace::ForOneFrame, 
		HitResult/*Hit결과*/,
		true/*자기자신 무시 여부*/);
	if (IsHit) {
		DrawDebugSphere(
        GetWorld(), 
        HitResult.ImpactPoint, 
        30.f, 
        30.f, 
        FColor::Green, 
        false, 
        1);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큐브 하나만 선택해서 새로 추가한 Collision Channel(여기서는 Test라는 이름을 가진 채널)을 Block으로 바꿔주었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BBsMj/btsIJcPTbnC/GiGAg2THdJHOwVTkD2LuU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BBsMj/btsIJcPTbnC/GiGAg2THdJHOwVTkD2LuU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BBsMj/btsIJcPTbnC/GiGAg2THdJHOwVTkD2LuU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBBsMj%2FbtsIJcPTbnC%2FGiGAg2THdJHOwVTkD2LuU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;620&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Test Channel을 Block으로 설정된 큐브를 제외한 나머지는 Object들은 Sphere Trace에 걸리지 않습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;녹화_2024_07_22_09_31_02_899-min.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mI7ml/btsIIIhcelx/yokCL4QTq7Kvs57nKrLcQ0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mI7ml/btsIIIhcelx/yokCL4QTq7Kvs57nKrLcQ0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mI7ml/btsIIIhcelx/yokCL4QTq7Kvs57nKrLcQ0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/mI7ml/btsIIIhcelx/yokCL4QTq7Kvs57nKrLcQ0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-filename=&quot;녹화_2024_07_22_09_31_02_899-min.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;DefaultEngine.ini&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 파일 -&amp;gt; Config -&amp;gt; DefaultEngine.ini&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'DefaultEngine.ini' 파일은 Unreal Engine의 다양한 설정을 저장하는 파일입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중에 ECC_GameTraceChannel은 위에서 추가했던 Trace Channel을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진에서 ECC_GameTraceChannel1은 아까 예시로 추가했던 Test Channel인 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1234&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lvvAb/btsIHBC6ZT0/nJudpQTZ9esZbcVcppUJN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lvvAb/btsIHBC6ZT0/nJudpQTZ9esZbcVcppUJN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lvvAb/btsIHBC6ZT0/nJudpQTZ9esZbcVcppUJN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlvvAb%2FbtsIHBC6ZT0%2FnJudpQTZ9esZbcVcppUJN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;326&quot; data-origin-width=&quot;1234&quot; data-origin-height=&quot;671&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/671</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal%EC%97%90%EC%84%9C-%EC%83%88%EB%A1%9C%EC%9A%B4-%EC%B6%A9%EB%8F%8C-%EC%B1%84%EB%84%90-%EC%B6%94%EA%B0%80#entry671comment</comments>
      <pubDate>Mon, 22 Jul 2024 09:49:56 +0900</pubDate>
    </item>
    <item>
      <title>Unreal 파쿠르(vault) c++</title>
      <link>https://intunknown.tistory.com/entry/Unreal-%ED%8C%8C%EC%BF%A0%EB%A5%B4vault-c</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal 파쿠르(vault) c++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 Unreal에서 파쿠르(vault)를 C++로 제가 이런식으로 구현했다 라는 것을 기록으로 남기기 위한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당글에서는 언리얼의 Motion Warping을 사용해 만들었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj3XTL/btsHTSlGxrJ/kqKegEtL6dCDJkWgbSyLL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj3XTL/btsHTSlGxrJ/kqKegEtL6dCDJkWgbSyLL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj3XTL/btsHTSlGxrJ/kqKegEtL6dCDJkWgbSyLL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj3XTL%2FbtsHTSlGxrJ%2FkqKegEtL6dCDJkWgbSyLL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;모션워핑 활성화 및 애니메이션 구하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서 Motion Warping은 캐릭터의 루트 모션이 타겟과 일치하도록 동적으로 정렬하는 기능입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;모션워핑&quot; href=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/MotionWarping/UMotionWarpingComponent?application_version=5.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/MotionWarping/UMotionWarpingComponent?application_version=5.1&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기능을 사용하기 위해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;모션워핑 플러그인을 활성화&lt;/b&gt;&lt;/span&gt; 해야되고, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;애니메이션이 루트 모션&lt;/span&gt;&lt;/b&gt;이어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mixamo같은데서 이런 애니메이션은 구하기 쉬우니 따로 올리지는 않겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디터-&amp;gt;Edit-&amp;gt;Plugin으로 가서 Motion Warping을 아래 사진처럼 활성화.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYDlCw/btsHTUcHMyv/UWDTefFvpFE15N7BCXFCIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYDlCw/btsHTUcHMyv/UWDTefFvpFE15N7BCXFCIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYDlCw/btsHTUcHMyv/UWDTefFvpFE15N7BCXFCIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYDlCw%2FbtsHTUcHMyv%2FUWDTefFvpFE15N7BCXFCIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;118&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트이름.Build.cs로 가서 &quot;MotionWarping&quot;을 추가합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Ll5J/btsHS0xVf9l/2j8pnqaffhyExeemcswc11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Ll5J/btsHS0xVf9l/2j8pnqaffhyExeemcswc11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Ll5J/btsHS0xVf9l/2j8pnqaffhyExeemcswc11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Ll5J%2FbtsHS0xVf9l%2F2j8pnqaffhyExeemcswc11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;196&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;애니메이션 설정.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Animation montage에 파쿠르 애니메이션을 추가하고, Add Notify State에서 Motion Warping을 추가해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpFMtI/btsHVsy7hOr/h8iAwejpfHEdjCWAcKRkc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpFMtI/btsHVsy7hOr/h8iAwejpfHEdjCWAcKRkc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpFMtI/btsHVsy7hOr/h8iAwejpfHEdjCWAcKRkc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpFMtI%2FbtsHVsy7hOr%2Fh8iAwejpfHEdjCWAcKRkc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;243&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 설정했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1718058901856&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1.  WarpTargetName= ValutStart
	Warp Translation= true
    ignore ZAxis=false
2. WarpTargetName= ValutMiddle
	Warp Translation= true
    ignore ZAxis=true
3. WarpTargetName= VaultEnd
	Warp Translation= true
    ignore ZAxis=false&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파쿠르를 시작할때와 끝날때는 z축이 바뀔 수 있으므로 Ignore ZAxis를 false로 설정해주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진에 Warp Rotation true도 있긴한데 이건 필요 없을거같네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1201&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGHtHQ/btsHTmHiH2d/QHXVhWDXLT1pWf7jpmlsyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGHtHQ/btsHTmHiH2d/QHXVhWDXLT1pWf7jpmlsyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGHtHQ/btsHTmHiH2d/QHXVhWDXLT1pWf7jpmlsyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGHtHQ%2FbtsHTmHiH2d%2FQHXVhWDXLT1pWf7jpmlsyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;229&quot; data-origin-width=&quot;1201&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Vaulting C++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모션워핑을 적용하기 위해 Vault를 사용할 캐릭터에 아래와같이 Motion Warping Component를 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(변수 선언 생략)&lt;/p&gt;
&lt;pre id=&quot;code_1718059407645&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;MotionWarpingComponent.h&quot;

생성자{
	MotionWarpComponent = CreateDefaultSubobject&amp;lt;UMotionWarpingComponent&amp;gt;(TEXT(&quot;MotionWarpComponent&quot;));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vault구현.&lt;/p&gt;
&lt;pre id=&quot;code_1718059964637&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#pragma region Vault
void ATroyCharacter::Vault()
{
	bIsCanWarp = false;
	FVector LocTmp = GetActorLocation();
	FVector LocEnd = GetActorForwardVector() * 180;
	for (int32 i = 0; i &amp;lt; 3; i++) {
		LocTmp = LocTmp + (FVector(0, 0, 30) * i);
		FHitResult FirstHit;
		TArray&amp;lt;AActor*&amp;gt; IgnoreActor;
		IgnoreActor.Add(this);
		IgnoreActor.Add(EquippedWeapon);
		//UKismetSystemLibrary::SphereTraceSingle(GetWorld(), LocTmp, LocEnd+LocTmp,5.f,ETraceTypeQuery::TraceTypeQuery1,false, IgnoreActor,EDrawDebugTrace::ForDuration, Hit,true);
		if (UKismetSystemLibrary::SphereTraceSingle(GetWorld(), LocTmp, LocEnd + LocTmp, 10.f, ETraceTypeQuery::TraceTypeQuery1, false, IgnoreActor, EDrawDebugTrace::None, FirstHit, true)) {
			FHitResult SecondHit;
			FVector Start = FirstHit.Location + GetActorForwardVector();
			for (int32 j = 0; j &amp;lt; 5; j++) {
				FVector NextLoc = GetActorForwardVector() * j * 50;
				if (UKismetSystemLibrary::SphereTraceSingle(GetWorld(), Start + NextLoc + FVector(0, 0, 100), Start + NextLoc, 10.f, ETraceTypeQuery::TraceTypeQuery1, false, IgnoreActor, EDrawDebugTrace::ForDuration, SecondHit, true)) {
					if (j == 0) {
						VaultStartPos = SecondHit.Location;
						UKismetSystemLibrary::DrawDebugSphere(GetWorld(), VaultStartPos, 10.f, 12, FColor::Purple, 3);
					}
					else {
						bIsCanWarp = true;
						if (j == 4) {
							VaultLandPos = VaultMiddlePos;
							VaultMotionWarping();
							break;
						}
						//bIsCanWarp = true;
						VaultMiddlePos = SecondHit.Location;
						UKismetSystemLibrary::DrawDebugSphere(GetWorld(), VaultMiddlePos, 10.f, 12, FColor::Orange, 3);
					}
				}
				else {
					FHitResult HitLast;
					if (UKismetSystemLibrary::LineTraceSingle(GetWorld(), GetActorForwardVector() * 80 + SecondHit.TraceStart, GetActorForwardVector() * 80 + SecondHit.TraceStart - FVector(0, 0, 1000), ETraceTypeQuery::TraceTypeQuery1, false, IgnoreActor, EDrawDebugTrace::ForDuration, HitLast, true, FLinearColor::Blue)) {
						VaultLandPos = HitLast.Location;
						UKismetSystemLibrary::DrawDebugSphere(GetWorld(), VaultLandPos, 10.f, 12, FColor::Purple, 3);
						VaultMotionWarping();
						break;
					}

				}
			}break;
		}
	}
}

void ATroyCharacter::VaultMotionWarping()
{
	if (bIsCanWarp/* || Z가 어느정도 범위 안에 있는지.*/) {
		GetCharacterMovement()-&amp;gt;SetMovementMode(EMovementMode::MOVE_Flying);
		SetActorEnableCollision(false);

		FMotionWarpingTarget VaultStartMotionWarping;
		VaultStartMotionWarping.Name = FName(&quot;VaultStart&quot;);
		VaultStartMotionWarping.Location = VaultStartPos;
		VaultStartMotionWarping.Rotation = GetActorRotation();
		MotionWarpComponent-&amp;gt;AddOrUpdateWarpTarget(VaultStartMotionWarping);

		FMotionWarpingTarget VaultMiddleMotionWarping;
		VaultMiddleMotionWarping.Name = FName(&quot;VaultMiddle&quot;);
		VaultMiddleMotionWarping.Location = VaultMiddlePos;
		VaultMiddleMotionWarping.Rotation = GetActorRotation();
		MotionWarpComponent-&amp;gt;AddOrUpdateWarpTarget(VaultMiddleMotionWarping);

		FMotionWarpingTarget VaultLandMotionWarping;
		VaultLandMotionWarping.Name = FName(&quot;VaultEnd&quot;);
		VaultLandMotionWarping.Location = VaultLandPos;
		VaultLandMotionWarping.Rotation = GetActorRotation();
		MotionWarpComponent-&amp;gt;AddOrUpdateWarpTarget(VaultLandMotionWarping);

		AnimInstanceRef = GetMesh()-&amp;gt;GetAnimInstance();
		if (AnimInstanceRef &amp;amp;&amp;amp; VaultMontage) {
			AnimInstanceRef-&amp;gt;Montage_Play(VaultMontage);
			/*몽타주 애셋으로부터 인스턴스가 새롭게 생성되서 매번 실행할 때 델리게이트를 설정해주고 있습니다.*/
			FOnMontageEnded OnMontageEnded;
			OnMontageEnded.BindUFunction(this, FName(&quot;EndVault&quot;));
			AnimInstanceRef-&amp;gt;Montage_SetEndDelegate(OnMontageEnded, VaultMontage);
			//AnimInstance-&amp;gt;Montage_JumpToSection(SectionName, Montage);
		}
	}
}

void ATroyCharacter::EndVault()
{
	UE_LOG(LogTemp, Display, TEXT(&quot;EndVault&quot;));
	GetCharacterMovement()-&amp;gt;SetMovementMode(EMovementMode::MOVE_Walking);
	SetActorEnableCollision(true);
	bIsCanWarp = false;
}
#pragma endregion&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 아래 사진처럼 SphereTrace를 사용해 앞에 장애물이 있는지 검사하고, 장애물이 있으면 뛰어넘을 수 있는지 검사해서 장애물을 뛰어넘거나 올라가거나 둘중 하나를 실행하는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 간단하게 구현한만큼 버그가 조금 있긴합니다.(벽을 뚫고 간다거나...)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy7lS1/btsHTid6rph/VMOoz4C9IcjmKcwzGDMVY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy7lS1/btsHTid6rph/VMOoz4C9IcjmKcwzGDMVY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy7lS1/btsHTid6rph/VMOoz4C9IcjmKcwzGDMVY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy7lS1%2FbtsHTid6rph%2FVMOoz4C9IcjmKcwzGDMVY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;237&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;339&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실행영상&lt;/b&gt;&lt;/h3&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=I0zG74ltkME&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bwFFsR/hyWg64C2Er/CjFSbLea3LgRM5H55atOck/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;언리얼 파쿠르&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/I0zG74ltkME&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;Unreal Vaulting&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/670</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-%ED%8C%8C%EC%BF%A0%EB%A5%B4vault-c#entry670comment</comments>
      <pubDate>Tue, 11 Jun 2024 08:13:26 +0900</pubDate>
    </item>
    <item>
      <title>Unreal CameraShake</title>
      <link>https://intunknown.tistory.com/entry/Unreal-CameraShake</link>
      <description>&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Unreal CameraShake&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unreal에서 간단하게 CameraShake를 구현하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;LegacyCameraShake&quot; Class를 생성해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(5.1 이전버전에서 &quot;MatineeCameraShake&quot;.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W04zR/btsGxDCe5R9/27nUpNJCDwXsWGQVknB7ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W04zR/btsGxDCe5R9/27nUpNJCDwXsWGQVknB7ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W04zR/btsGxDCe5R9/27nUpNJCDwXsWGQVknB7ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW04zR%2FbtsGxDCe5R9%2F27nUpNJCDwXsWGQVknB7ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;368&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;LegacyCameraShake Setting&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;걷고있을때와 달리고있을때 이렇게 두개를 만드려고합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Walk_LegacyCameraShake 생성자.&lt;/p&gt;
&lt;pre id=&quot;code_1712736251310&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bSingleInstance = true;
OscillationDuration = 0.2; //진동지속시간
/*위치 회전*/
RotOscillation.Pitch.Amplitude = 0.3; //회전진동,진폭. 
RotOscillation.Pitch.Frequency = 12;
RotOscillation.Yaw.Amplitude = 0.3;//회전진동,진폭.
RotOscillation.Yaw.Frequency = 6;
RotOscillation.Roll.Amplitude = 0.2;
RotOscillation.Roll.Frequency = 3;
/*loc Oscillation*/
LocOscillation.Z.Amplitude = 0.6;
LocOscillation.Z.Frequency = 12;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Run_LegacyCameraShake 생성자.&lt;/p&gt;
&lt;pre id=&quot;code_1712736271704&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bSingleInstance = true;
OscillationDuration = 0.2; //진동지속시간
/*위치 회전*/
RotOscillation.Pitch.Amplitude = 0.5; //회전진동,진폭.
RotOscillation.Pitch.Frequency = 17;
RotOscillation.Yaw.Amplitude = 0.5;//회전진동,진폭.
RotOscillation.Yaw.Frequency = 8;
RotOscillation.Roll.Amplitude = 0.25;
RotOscillation.Roll.Frequency = 5;
/*loc Oscillation*/
LocOscillation.Z.Amplitude = 2;
LocOscillation.Z.Frequency = 17;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;적용하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 적용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712737674562&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void AHorrorPlayerController::PlayerTick(float DeltaTime)
{
	Super::PlayerTick(DeltaTime);
	//#include &amp;lt;GameFramework\CharacterMovementComponent.h&amp;gt;
	UCharacterMovementComponent* CharacterMovementComponent = Cast&amp;lt;UCharacterMovementComponent&amp;gt;(GetPawn()-&amp;gt;GetMovementComponent());
	//#include &amp;lt;Kismet\KismetMathLibrary.h&amp;gt;
 	float GroundSpeed = UKismetMathLibrary::VSizeXY(CharacterMovementComponent-&amp;gt;Velocity);
	float PlayCameraShakeScale = UKismetMathLibrary::MapRangeClamped(GroundSpeed, 0, 250, 0.f, 1.f);
	ClientStartCameraShake(URunLegacyCameraShake::StaticClass() , PlayCameraShakeScale);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayCameras/ULegacyCameraShake?application_version=5.3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayCameras/ULegacyCameraShake?application_version=5.3&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712737823188&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ULegacyCameraShake&quot; data-og-description=&quot;Legacy camera shake which can do either oscillation or run camera anims.&quot; data-og-host=&quot;dev.epicgames.com&quot; data-og-source-url=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayCameras/ULegacyCameraShake?application_version=5.3&quot; data-og-url=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayCameras/ULegacyCameraShake&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b62sKD/hyVMOo56gx/wFgskvj1sSvbU56rIYMqP1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cuJrWW/hyVM1opSAd/HK3SJqrx6CcPl2dDiODK80/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayCameras/ULegacyCameraShake?application_version=5.3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayCameras/ULegacyCameraShake?application_version=5.3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b62sKD/hyVMOo56gx/wFgskvj1sSvbU56rIYMqP1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cuJrWW/hyVM1opSAd/HK3SJqrx6CcPl2dDiODK80/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ULegacyCameraShake&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Legacy camera shake which can do either oscillation or run camera anims.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.epicgames.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/669</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-CameraShake#entry669comment</comments>
      <pubDate>Wed, 10 Apr 2024 17:30:32 +0900</pubDate>
    </item>
    <item>
      <title>Unreal Decal을 이용해 총알자국 생성하기</title>
      <link>https://intunknown.tistory.com/entry/Unreal-Decal%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%B4%9D%EC%95%8C%EC%9E%90%EA%B5%AD-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Unreal Decal을 이용해 총알자국 생성하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unreal에서 Decal을 이용해서 총알자국을 생성하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 예시지만 응용해서 텍스쳐를 바꾸면 혈흔, 화살표 등의 시각적 효과를 구현하는데 유용하게 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 글에서 사용한 Bullet Hole Image는 아래 사이트에서 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;Bullet hole Decal&quot; href=&quot;https://opengameart.org/content/bullet-decal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://opengameart.org/content/bullet-decal&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712241647938&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Bullet Decal&quot; data-og-description=&quot;A simple bullet hole decals. I have used it in my first-person shooter.&quot; data-og-host=&quot;opengameart.org&quot; data-og-source-url=&quot;https://opengameart.org/content/bullet-decal&quot; data-og-url=&quot;https://opengameart.org/content/bullet-decal&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cBUTSm/hyVJSEVgUg/fe1inSfp1PW4alUpV90EA1/img.png?width=1011&amp;amp;height=588&amp;amp;face=0_0_1011_588&quot;&gt;&lt;a href=&quot;https://opengameart.org/content/bullet-decal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://opengameart.org/content/bullet-decal&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cBUTSm/hyVJSEVgUg/fe1inSfp1PW4alUpV90EA1/img.png?width=1011&amp;amp;height=588&amp;amp;face=0_0_1011_588');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Bullet Decal&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A simple bullet hole decals. I have used it in my first-person shooter.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;opengameart.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Texture 설정.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운받은 Decal로 사용할 Texture을 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 아래의 사진처럼 Sprite Actions-&amp;gt;Apply Paper2D Texture Settings를 눌러 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dl3n5T/btsGny9N6Hj/THMyzHzfUE0T5sCXS7WxA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dl3n5T/btsGny9N6Hj/THMyzHzfUE0T5sCXS7WxA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dl3n5T/btsGny9N6Hj/THMyzHzfUE0T5sCXS7WxA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdl3n5T%2FbtsGny9N6Hj%2FTHMyzHzfUE0T5sCXS7WxA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;704&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Material 설정.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메테리얼을 만들어줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhDBES/btsGoRN9nt6/SP5GeHzBdWtblvMCCAM9Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhDBES/btsGoRN9nt6/SP5GeHzBdWtblvMCCAM9Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhDBES/btsGoRN9nt6/SP5GeHzBdWtblvMCCAM9Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhDBES%2FbtsGoRN9nt6%2FSP5GeHzBdWtblvMCCAM9Vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;430&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Material Domain을 Deferred Decal로 설정하고 BlendMode 를 Translucent로 설정합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;787&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qYXuN/btsGnvZBjbj/Tkop69G9Xbdu6yL2fwJwb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qYXuN/btsGnvZBjbj/Tkop69G9Xbdu6yL2fwJwb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qYXuN/btsGnvZBjbj/Tkop69G9Xbdu6yL2fwJwb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqYXuN%2FbtsGnvZBjbj%2FTkop69G9Xbdu6yL2fwJwb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;653&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;787&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방금 다운받은 Texture Image를 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Alpha를 Opcity에 연결합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uGk3u/btsGoSGcWOI/lEfD4zGSKVJJbBTYtvC9f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uGk3u/btsGoSGcWOI/lEfD4zGSKVJJbBTYtvC9f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uGk3u/btsGoSGcWOI/lEfD4zGSKVJJbBTYtvC9f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuGk3u%2FbtsGoSGcWOI%2FlEfD4zGSKVJJbBTYtvC9f1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;341&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;SpawnDecal CPP Code.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Texture Image와 Material은 끝났으니 이제 코드부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블로그에 옮기면서 필요한 부분만 빼서 수정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매개변수로 선언만하고 초기화도 안한 변수가 있긴한데 이거야 뭐..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 대충 이런식으로 쓰면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712243955479&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FHitResult Hit;
FVector Loc = ViewCamera-&amp;gt;GetComponentLocation(); //ViewCamera는 Character에 생성한 UCameraComponent입니다.
FVector Rot = ViewCamera-&amp;gt;GetForwardVector();
FCollisionQueryParams CollisionQueryParams(NAME_None, false, this);
TArray&amp;lt;AActor*&amp;gt; Ac;
Ac.Add(this);
if (GetWorld()-&amp;gt;LineTraceSingleByChannel(Hit, Loc, Loc + (Rot * 10000), ECollisionChannel::ECC_Visibility, CollisionQueryParams)) { 
//if (UKismetSystemLibrary::LineTraceSingle(GetWorld(), Loc, (Rot * 10000) + Loc, ETraceTypeQuery::TraceTypeQuery1, false, Ac, EDrawDebugTrace::ForDuration, Hit, true)) {
	if (Hit.bBlockingHit) {
		//#include &quot;Components/DecalComponent.h&quot; 필요
		UMaterialInstance* DecalMaterial;
		float DecalLife = 10;
		UGameplayStatics::SpawnDecalAtLocation(GetWorld(), DecalMaterial, FVector(5, 5, 5), Hit.Location, Hit.ImpactNormal.Rotation(), DecalLife)-&amp;gt;SetFadeScreenSize(0)
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실행결과.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과는 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMeecg/btsGlWqhUEs/3EmoKURzejxGVhZIwhClkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMeecg/btsGlWqhUEs/3EmoKURzejxGVhZIwhClkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMeecg/btsGlWqhUEs/3EmoKURzejxGVhZIwhClkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMeecg%2FbtsGlWqhUEs%2F3EmoKURzejxGVhZIwhClkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;257&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/668</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-Decal%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%B4%9D%EC%95%8C%EC%9E%90%EA%B5%AD-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0#entry668comment</comments>
      <pubDate>Fri, 5 Apr 2024 00:28:02 +0900</pubDate>
    </item>
    <item>
      <title>간단하게 이모티콘 사용하기</title>
      <link>https://intunknown.tistory.com/entry/%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;간단하게 이모티콘 사용하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우에서 간단하게 이모티콘을 사용하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;╮（╯＿╰）╭&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;간단한 설명.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특수 기호를 사용한 이모티콘을 하나하나 작성해서 만드시는 사람도 있으실겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를들어 이런 이모티콘이요.(KAomoji)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;LennyFaceTextFacesGIF.gif&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFfeTW/btsGhXbLBok/z8aEaGPUQAEP9vC9EtjVW0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFfeTW/btsGhXbLBok/z8aEaGPUQAEP9vC9EtjVW0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFfeTW/btsGhXbLBok/z8aEaGPUQAEP9vC9EtjVW0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bFfeTW/btsGhXbLBok/z8aEaGPUQAEP9vC9EtjVW0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;167&quot; data-filename=&quot;LennyFaceTextFacesGIF.gif&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니면 이모지라던가...? &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 이모지를 간편하게 사용할 수 있는 방법에 대한 글입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명이 길었는데 방법은 간단합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키보드에서 Window Key+ . 을 누르시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러가지가 나오니까 원하는 것을 찾아서 쓰시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp44HF/btsGib1Tfvk/T2j84g3YkWLjFsqajUQjm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp44HF/btsGib1Tfvk/T2j84g3YkWLjFsqajUQjm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp44HF/btsGib1Tfvk/T2j84g3YkWLjFsqajUQjm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp44HF%2FbtsGib1Tfvk%2FT2j84g3YkWLjFsqajUQjm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;343&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;403&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>윈도우</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/667</guid>
      <comments>https://intunknown.tistory.com/entry/%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EC%9D%B4%EB%AA%A8%ED%8B%B0%EC%BD%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#entry667comment</comments>
      <pubDate>Wed, 3 Apr 2024 07:39:43 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 스크린 중앙</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%8A%A4%ED%81%AC%EB%A6%B0-%EC%A4%91%EC%95%99</link>
      <description>&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;언리얼 스크린 중앙.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총을 구현하기 위해 에임을 설정할 때 스크린 중앙을 가져오는 방법은 여러가지가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 간단한 방법 두가지만 작성하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;APlayerCameraManager를 사용하는 방법과 UCameraComponent를 사용한 방법입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;APlayerCameraManager.&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1712095229660&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//#include &quot;Camera/PlayerCameraManager.h&quot; 필요
APlayerCameraManager* CameraManager = GetWorld()-&amp;gt;GetFirstPlayerController()-&amp;gt;PlayerCameraManager;
FVector Loc = CameraManager-&amp;gt;GetCameraLocation();
FVector Rot = CameraManager-&amp;gt;GetActorForwardVector();
//FVector Rot = CameraManager-&amp;gt;GetCameraRotation().Vector();

DrawDebugLine(GetWorld(), Loc, (Rot * 1000) + Loc, FColor::Red, false, 10);&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;UCameraComponent를 사용한 방법.&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1712095856850&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//Header
UPROPERTY(EditDefaultsOnly, Category = &quot;Camera&quot;)
TObjectPtr&amp;lt;USpringArmComponent&amp;gt; SprintArmComponent;
UPROPERTY(EditDefaultsOnly, Category = &quot;Camera&quot;)
TObjectPtr&amp;lt;UCameraComponent&amp;gt; ViewCamera;

/*Cpp constructor
*그냥 작성하던 제 코드중 일부 긁어서 복붙해놓았습니다.
*/
SprintArmComponent = CreateDefaultSubobject&amp;lt;USpringArmComponent&amp;gt;(TEXT(&quot;SprintArm&quot;));
SprintArmComponent-&amp;gt;bUsePawnControlRotation = true;
SprintArmComponent-&amp;gt;SetupAttachment(GetMesh(),FName(&quot;Head_Camera&quot;));
SprintArmComponent-&amp;gt;TargetArmLength = 0.f;
SprintArmComponent-&amp;gt;bEnableCameraRotationLag = true;
SprintArmComponent-&amp;gt;CameraRotationLagSpeed = 90.f;

ViewCamera = CreateDefaultSubobject&amp;lt;UCameraComponent&amp;gt;(TEXT(&quot;ViewCamera&quot;));
ViewCamera-&amp;gt;SetupAttachment(SprintArmComponent);

//Other Func
FVector ViewLoc = ViewCamera-&amp;gt;GetComponentLocation();
FVector ViewRot = ViewCamera-&amp;gt;GetForwardVector();
//FVector ViewRot = ViewCamera-&amp;gt;GetComponentRotation().Vector();

DrawDebugLine(GetWorld(), ViewLoc, (ViewRot * 1000) + ViewLoc, FColor::Red, false, 10);&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카메라의 중심에서 앞으로 선을 그리는 예제라서 움직이지 않으면 잘 보이지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 DrawDebugLine의 시간을 길게 설정하였고 아래 사진에서는 위의 코드보다 더 두껍게 설정하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 서있는 위치.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MLQjU/btsGkS7pQGk/bPY7KWktPHDearnTHC78KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MLQjU/btsGkS7pQGk/bPY7KWktPHDearnTHC78KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MLQjU/btsGkS7pQGk/bPY7KWktPHDearnTHC78KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMLQjU%2FbtsGkS7pQGk%2FbPY7KWktPHDearnTHC78KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;323&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkfZRD/btsGjCdqAnl/NqfipbFZXstENV4wiyJKxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkfZRD/btsGjCdqAnl/NqfipbFZXstENV4wiyJKxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkfZRD/btsGjCdqAnl/NqfipbFZXstENV4wiyJKxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkfZRD%2FbtsGjCdqAnl%2FNqfipbFZXstENV4wiyJKxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;300&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발사.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QshyS/btsGkBLp5AW/GZiia0Xo7fevoAEWO79jfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QshyS/btsGkBLp5AW/GZiia0Xo7fevoAEWO79jfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QshyS/btsGkBLp5AW/GZiia0Xo7fevoAEWO79jfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQshyS%2FbtsGkBLp5AW%2FGZiia0Xo7fevoAEWO79jfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;375&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/666</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%EC%8A%A4%ED%81%AC%EB%A6%B0-%EC%A4%91%EC%95%99#entry666comment</comments>
      <pubDate>Wed, 3 Apr 2024 07:18:17 +0900</pubDate>
    </item>
    <item>
      <title>언리얼 한글폰트</title>
      <link>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8</link>
      <description>&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;언리얼 한글폰트.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UE5에서 한글 폰트를 적용하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 글에서 사용한 폰트는 &lt;a href=&quot;https://noonnu.cc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;눈누&lt;/a&gt;라는 사이트에서 받았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HXVAs/btsF87q9sSW/BKqusskJtzL3MhQKBC0OLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HXVAs/btsF87q9sSW/BKqusskJtzL3MhQKBC0OLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HXVAs/btsF87q9sSW/BKqusskJtzL3MhQKBC0OLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHXVAs%2FbtsF87q9sSW%2FBKqusskJtzL3MhQKBC0OLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;183&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;UMG에 한글폰트 적용하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UMG 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운받은 TTF 파일을 언리얼에 넣어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼 폰트가 생길겁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pa8xL/btsF9NFGUQz/QmkonuPRaMCHxgkJ3lOiNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pa8xL/btsF9NFGUQz/QmkonuPRaMCHxgkJ3lOiNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pa8xL/btsF9NFGUQz/QmkonuPRaMCHxgkJ3lOiNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpa8xL%2FbtsF9NFGUQz%2FQmkonuPRaMCHxgkJ3lOiNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 추가하고싶으면 여기에 추가해도 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;829&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YDcZo/btsF9CEqmWJ/4557NPTAJ2QU34hLiNUK20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YDcZo/btsF9CEqmWJ/4557NPTAJ2QU34hLiNUK20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YDcZo/btsF9CEqmWJ/4557NPTAJ2QU34hLiNUK20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYDcZo%2FbtsF9CEqmWJ%2F4557NPTAJ2QU34hLiNUK20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;310&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;829&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제어판-&amp;gt;글꼴에서 원하는 폰트를 넣을수도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼 들어가면 원하는 폰트를 찾을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(저작권 주의.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qgX5u/btsF7LCmxvC/VzCNdoVjuUZnxsQ2MAyzfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qgX5u/btsF7LCmxvC/VzCNdoVjuUZnxsQ2MAyzfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qgX5u/btsF7LCmxvC/VzCNdoVjuUZnxsQ2MAyzfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqgX5u%2FbtsF7LCmxvC%2FVzCNdoVjuUZnxsQ2MAyzfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;338&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 그냥 적용해주면 한글폰트가 적용됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nCoxe/btsF77LWQEY/GZkKkc8K3wgJkCi4oLDhHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nCoxe/btsF77LWQEY/GZkKkc8K3wgJkCi4oLDhHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nCoxe/btsF77LWQEY/GZkKkc8K3wgJkCi4oLDhHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnCoxe%2FbtsF77LWQEY%2FGZkKkc8K3wgJkCi4oLDhHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;288&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이 해보면 잘 적용된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/newDt/btsGacytjRP/j8IQhDbwn0ELzOEkTU5t80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/newDt/btsGacytjRP/j8IQhDbwn0ELzOEkTU5t80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/newDt/btsGacytjRP/j8IQhDbwn0ELzOEkTU5t80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnewDt%2FbtsGacytjRP%2Fj8IQhDbwn0ELzOEkTU5t80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;332&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;TextRender에 한글폰트 적용하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 만들었던 Font파일을 복사했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E4FvI/btsF71Sr68u/WVLQ0C2BHRwsgPZ19F7Eh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E4FvI/btsF71Sr68u/WVLQ0C2BHRwsgPZ19F7Eh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E4FvI/btsF71Sr68u/WVLQ0C2BHRwsgPZ19F7Eh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE4FvI%2FbtsF71Sr68u%2FWVLQ0C2BHRwsgPZ19F7Eh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;388&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Font파일로 들어가서 Font Cach Type을 Runtime에서 Offline으로 바꿔줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca5c0k/btsF8u7WZ1M/xLWgXJ8Z7zFp8pzKj3d1IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca5c0k/btsF8u7WZ1M/xLWgXJ8Z7zFp8pzKj3d1IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca5c0k/btsF8u7WZ1M/xLWgXJ8Z7zFp8pzKj3d1IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca5c0k%2FbtsF8u7WZ1M%2FxLWgXJ8Z7zFp8pzKj3d1IK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;288&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Yes~&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mkulF/btsF9fbEZQP/lgicJAExOKwtgo6K3EkO61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mkulF/btsF9fbEZQP/lgicJAExOKwtgo6K3EkO61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mkulF/btsF9fbEZQP/lgicJAExOKwtgo6K3EkO61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmkulF%2FbtsF9fbEZQP%2FlgicJAExOKwtgo6K3EkO61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;226&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 글꼴을 찾고 크기 설정을 해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1139&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUzDqz/btsF9cF0uUz/7qYQ0AKshmfdkofYX8CWs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUzDqz/btsF9cF0uUz/7qYQ0AKshmfdkofYX8CWs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUzDqz/btsF9cF0uUz/7qYQ0AKshmfdkofYX8CWs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUzDqz%2FbtsF9cF0uUz%2F7qYQ0AKshmfdkofYX8CWs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;314&quot; data-origin-width=&quot;1139&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 다 깨져서 보일겁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnNXeJ/btsGaY0QyGN/JtHZ2feDVQsiblz1v609EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnNXeJ/btsGaY0QyGN/JtHZ2feDVQsiblz1v609EK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnNXeJ/btsGaY0QyGN/JtHZ2feDVQsiblz1v609EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnNXeJ%2FbtsGaY0QyGN%2FJtHZ2feDVQsiblz1v609EK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;363&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 Txt파일을 다운받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Details에서 Char를 찾아서 붙여넣기를 해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/mjPoA/btsF63iXllk/kQQ5Os9Q95eYY6k3Z9fswK/KText.txt?attach=1&amp;amp;knm=tfile.txt&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;KText.txt&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCo6un/btsF8lDdMP9/nsz2jTQx63QcaTA1QOSAXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCo6un/btsF8lDdMP9/nsz2jTQx63QcaTA1QOSAXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCo6un/btsF8lDdMP9/nsz2jTQx63QcaTA1QOSAXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCo6un%2FbtsF8lDdMP9%2Fnsz2jTQx63QcaTA1QOSAXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;340&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Texture PageWidth와 Texture Page Max Height설정을 해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ist7Q/btsF9MfGKia/u4IN0AfhpQ0JvmliTDSLs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ist7Q/btsF9MfGKia/u4IN0AfhpQ0JvmliTDSLs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ist7Q/btsF9MfGKia/u4IN0AfhpQ0JvmliTDSLs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIst7Q%2FbtsF9MfGKia%2Fu4IN0AfhpQ0JvmliTDSLs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;194&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 저장하고 상단의 Asset의 Reimport 어쩌고저쩌고를 눌러서 Reimport해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;673&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgkqko/btsF9AfAp1a/iI9jLcpNAhP5A7ljtFQmrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgkqko/btsF9AfAp1a/iI9jLcpNAhP5A7ljtFQmrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgkqko/btsF9AfAp1a/iI9jLcpNAhP5A7ljtFQmrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgkqko%2FbtsF9AfAp1a%2FiI9jLcpNAhP5A7ljtFQmrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;328&quot; data-origin-width=&quot;673&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reimport 결과입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CQpYV/btsF8lwpNwh/spP9GTcC4ntiX9KlzYLWak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CQpYV/btsF8lwpNwh/spP9GTcC4ntiX9KlzYLWak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CQpYV/btsF8lwpNwh/spP9GTcC4ntiX9KlzYLWak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCQpYV%2FbtsF8lwpNwh%2FspP9GTcC4ntiX9KlzYLWak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;366&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지 끝났다면 Material을 하나 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Details에서 BlendMode를 Masked로 바꾸고 Two Sided로 설정합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/py1gK/btsF7uHD7J4/WiHqjns3G4OhJxfDRwFJdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/py1gK/btsF7uHD7J4/WiHqjns3G4OhJxfDRwFJdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/py1gK/btsF7uHD7J4/WiHqjns3G4OhJxfDRwFJdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpy1gK%2FbtsF7uHD7J4%2FWiHqjns3G4OhJxfDRwFJdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;668&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 만들어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Font에는 당연하게도 위에서 만든 폰트를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q8aFO/btsF7Q4L0vX/FfMgS3CAS3gEMrrEn2ZJF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q8aFO/btsF7Q4L0vX/FfMgS3CAS3gEMrrEn2ZJF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q8aFO/btsF7Q4L0vX/FfMgS3CAS3gEMrrEn2ZJF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq8aFO%2FbtsF7Q4L0vX%2FFfMgS3CAS3gEMrrEn2ZJF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;578&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TextRender Component를 추가하고 폰트와 Material을 넣어줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;713&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYzsRn/btsF9L8WAWz/QT0geGNTCbE4kkznx9x1a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYzsRn/btsF9L8WAWz/QT0geGNTCbE4kkznx9x1a0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYzsRn/btsF9L8WAWz/QT0geGNTCbE4kkznx9x1a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYzsRn%2FbtsF9L8WAWz%2FQT0geGNTCbE4kkznx9x1a0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;431&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;713&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글이 잘 나오는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpeDPo/btsGaBre72t/auxejKZfuxFtzNcW0BJe4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpeDPo/btsGaBre72t/auxejKZfuxFtzNcW0BJe4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpeDPo/btsGaBre72t/auxejKZfuxFtzNcW0BJe4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpeDPo%2FbtsGaBre72t%2FauxejKZfuxFtzNcW0BJe4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;224&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>font</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/665</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%95%9C%EA%B8%80%ED%8F%B0%ED%8A%B8#entry665comment</comments>
      <pubDate>Thu, 28 Mar 2024 06:04:39 +0900</pubDate>
    </item>
    <item>
      <title>Unreal Lightmass executable is Outdated</title>
      <link>https://intunknown.tistory.com/entry/Unreal-Lightmass-executable-is-Outdated</link>
      <description>&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Unreal 발생한 오류내용.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Unreal lightmass executable is outdated. Recompile unrealLightmass project with Development configuration in Visual Studio.&quot; 라고 오류가 출력되어 해결해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;환경.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;GitHub로 받아서 빌드한 Unreal Engine(5.3.2).&lt;br /&gt;Windown 11.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs7rGH/btsF1qSwsbx/GBirKEPKLkXcRbzIjl7650/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs7rGH/btsF1qSwsbx/GBirKEPKLkXcRbzIjl7650/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs7rGH/btsF1qSwsbx/GBirKEPKLkXcRbzIjl7650/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs7rGH%2FbtsF1qSwsbx%2FGBirKEPKLkXcRbzIjl7650%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;122&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결한 방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저같은 경우에는 엔진을 설치한 경로로 들어가서.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UnrealEngine/Engine/Build/BatchFiles에서 Cmd 실행했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MoqRL/btsF2Sf8OfY/cF3Gng9jaycmHXv52QoiQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MoqRL/btsF2Sf8OfY/cF3Gng9jaycmHXv52QoiQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MoqRL/btsF2Sf8OfY/cF3Gng9jaycmHXv52QoiQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMoqRL%2FbtsF2Sf8OfY%2FcF3Gng9jaycmHXv52QoiQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;335&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 내용을 입력하고 다시 실행하니 해결되었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1711303773396&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Build.bat UnrealLightmass Win64 Development -verbose&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>error</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/664</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-Lightmass-executable-is-Outdated#entry664comment</comments>
      <pubDate>Mon, 25 Mar 2024 03:11:33 +0900</pubDate>
    </item>
    <item>
      <title>LogHttp: Warning</title>
      <link>https://intunknown.tistory.com/entry/LogHttp-Warning</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;LogHttp:Warning&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;언제부터인지 나오던 LogHttp: Warning 어쩌고저쩌고를 해결하는 방법.&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;LogHttp: Warning.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;해결방법.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;LogHttp: Warning&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만들던 코드문제는 아닌거같은데 자꾸 거슬리게 나오길래 없애는 방법을 찾아봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용은 아래와 같습니다.(길어서 대충 잘랐습니다.)&lt;/p&gt;
&lt;pre id=&quot;code_1711221189664&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;LogHttp: Warning: 0000055AEB9EC800: invalid HTTP response code received. 
LogHttp: Warning: 0000055AEB9EC800: request failed, libcurl error: 65 (Send failed since rewinding of the data stream failed)
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 0 (Found bundle for host: 0x55a9d970000 [serially])
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 1 (Re-using existing connection #0 with host datarouter.ol.epicgames.com)
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 2 (Connected to datarouter.ol.epicgames.com (...) port 443 (#0))
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 3 (We are completely uploaded and fine)
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 4 (TLSv1.2 (IN), TLS alert, close notify (256):)
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 5 (Connection died, retrying a fresh connect (retry count: 1))
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 6 (necessary data rewind wasn't possible)
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 7 (Closing connection 0)
LogHttp: Warning: 0000055AEB9EC800: libcurl info message cache 8 (TLSv1.2 (OUT), TLS alert, close notify (256):)
LogHttp: Warning: Retry exhausted on&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드사진&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qAcAz/btsF2v6nvbi/Ti8yOCJ3cltEC41Xtd7Oyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qAcAz/btsF2v6nvbi/Ti8yOCJ3cltEC41Xtd7Oyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qAcAz/btsF2v6nvbi/Ti8yOCJ3cltEC41Xtd7Oyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqAcAz%2FbtsF2v6nvbi%2FTi8yOCJ3cltEC41Xtd7Oyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;231&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법은 먼저 에디터에 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Edit-&amp;gt;Editor Preferences에서 Usage Data를 검색합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Don't Send를 선택.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oljws/btsF1Cyi85O/HMZQeeKwm75JGx3Y7kJO5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oljws/btsF1Cyi85O/HMZQeeKwm75JGx3Y7kJO5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oljws/btsF1Cyi85O/HMZQeeKwm75JGx3Y7kJO5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foljws%2FbtsF1Cyi85O%2FHMZQeeKwm75JGx3Y7kJO5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;332&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>error</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/663</guid>
      <comments>https://intunknown.tistory.com/entry/LogHttp-Warning#entry663comment</comments>
      <pubDate>Sun, 24 Mar 2024 04:17:26 +0900</pubDate>
    </item>
    <item>
      <title>Unreal BlueprintNativeEvent</title>
      <link>https://intunknown.tistory.com/entry/Unreal-BlueprintNativeEvent</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal BlueprintNativeEvent&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;이번글은 Unreal UFunction매크로의 BlueprintNativeEvent에 대한 글입니다.
&lt;p data-ke-size=&quot;size16&quot;&gt;BlueprintNativeEvent를 사용하면 C++에서도 정의 가능하고 블루프린트에서도 재정의가 가능해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 내용에 대하여 간단하게 작성하고자 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;BlueprintNativeEvent / cpp&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;Blueprint&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eBi46D/btsEBYhr4nB/QE2kotbZSp9jj9XVPQn0MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eBi46D/btsEBYhr4nB/QE2kotbZSp9jj9XVPQn0MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eBi46D/btsEBYhr4nB/QE2kotbZSp9jj9XVPQn0MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeBi46D%2FbtsEBYhr4nB%2FQE2kotbZSp9jj9XVPQn0MK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;BlueprintNativeEvent / Cpp&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 지정자를 사용하면 C++에서 함수 구현을 하고, 블루프린트로 덮어써서 보조하거나 대체할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하기 위해서는 _Implementation를 붙인 가상함수를 추가로 선언해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.unrealengine.com/5.1/ko/ufunctions-in-unreal-engine/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.unrealengine.com/5.1/ko/ufunctions-in-unreal-engine/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707330512913&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;UFunction&quot; data-og-description=&quot;게임플레이 클래스용 함수 생성 및 구현 레퍼런스입니다.&quot; data-og-host=&quot;docs.unrealengine.com&quot; data-og-source-url=&quot;https://docs.unrealengine.com/5.1/ko/ufunctions-in-unreal-engine/&quot; data-og-url=&quot;https://docs.unrealengine.com/5.1/ko/ufunctions-in-unreal-engine/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bllRPY/hyVi79gTXF/0Z8KKUk8mGwkiSkfXguPw1/img.png?width=1080&amp;amp;height=608&amp;amp;face=0_0_1080_608&quot;&gt;&lt;a href=&quot;https://docs.unrealengine.com/5.1/ko/ufunctions-in-unreal-engine/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.unrealengine.com/5.1/ko/ufunctions-in-unreal-engine/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bllRPY/hyVi79gTXF/0Z8KKUk8mGwkiSkfXguPw1/img.png?width=1080&amp;amp;height=608&amp;amp;face=0_0_1080_608');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;UFunction&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;게임플레이 클래스용 함수 생성 및 구현 레퍼런스입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.unrealengine.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드와 같이 사용하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1707330945727&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//ItemBase.h
UFUNCTION(BlueprintNativeEvent)
void Test();//언리얼에서 호출되는 함수.
virtual void Test_Implementation(); //이것만 정의. cpp에서 동작시 호출됨

//ItemBase.cpp
void AItemBase::BeginPlay()
{
	Super::BeginPlay();
	Test();
}
void AItemBase::Test_Implementation()
{
	GEngine-&amp;gt;AddOnScreenDebugMessage(-1, 15.f, FColor::Blue, FString::Printf(TEXT(&quot;This is Test_Implementation&quot;)));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;블루프린트(Blueprint)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 실행하면 아까 작성한 Text가 나오는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;345&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn9LRq/btsEAkFSIWp/jhubKmJkY4G0qsN4vKepH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn9LRq/btsEAkFSIWp/jhubKmJkY4G0qsN4vKepH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn9LRq/btsEAkFSIWp/jhubKmJkY4G0qsN4vKepH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn9LRq%2FbtsEAkFSIWp%2FjhubKmJkY4G0qsN4vKepH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;252&quot; data-origin-width=&quot;345&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블루프린트에서 재정의.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRiu19/btsEz9K4VBH/cmw0HkOGsqep0KX1NwzFS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRiu19/btsEz9K4VBH/cmw0HkOGsqep0KX1NwzFS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRiu19/btsEz9K4VBH/cmw0HkOGsqep0KX1NwzFS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRiu19%2FbtsEz9K4VBH%2Fcmw0HkOGsqep0KX1NwzFS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;260&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cpp에서 작성한 부분은 보이지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwOn89/btsEy2rUchL/PShCiTvz5vBizIeGlhMMpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwOn89/btsEy2rUchL/PShCiTvz5vBizIeGlhMMpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwOn89/btsEy2rUchL/PShCiTvz5vBizIeGlhMMpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwOn89%2FbtsEy2rUchL%2FPShCiTvz5vBizIeGlhMMpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;215&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이번엔 cpp코드와 블루프린트를 같이 사용해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;event노드를 우클릭해서 Add Call to Parent Function을 불러옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;354&quot; data-origin-height=&quot;555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tHtcb/btsEz8rSEyz/2vtv5Sdd2Uroa4zL4Vq3N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tHtcb/btsEz8rSEyz/2vtv5Sdd2Uroa4zL4Vq3N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tHtcb/btsEz8rSEyz/2vtv5Sdd2Uroa4zL4Vq3N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtHtcb%2FbtsEz8rSEyz%2F2vtv5Sdd2Uroa4zL4Vq3N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;627&quot; data-origin-width=&quot;354&quot; data-origin-height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 사용하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhSX7j/btsEy53fmyp/DGLhu9j2Xl2La4cnN4iJy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhSX7j/btsEy53fmyp/DGLhu9j2Xl2La4cnN4iJy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhSX7j/btsEy53fmyp/DGLhu9j2Xl2La4cnN4iJy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhSX7j%2FbtsEy53fmyp%2FDGLhu9j2Xl2La4cnN4iJy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;184&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;249&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YogVY/btsEATH1dVE/tU7RwwdH9oskWCQuKlLvr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YogVY/btsEATH1dVE/tU7RwwdH9oskWCQuKlLvr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YogVY/btsEATH1dVE/tU7RwwdH9oskWCQuKlLvr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYogVY%2FbtsEATH1dVE%2FtU7RwwdH9oskWCQuKlLvr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;242&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/662</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal-BlueprintNativeEvent#entry662comment</comments>
      <pubDate>Thu, 8 Feb 2024 04:16:34 +0900</pubDate>
    </item>
    <item>
      <title>Unreal5 Timeline</title>
      <link>https://intunknown.tistory.com/entry/Unreal5-Timeline</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal5 Timeline&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Unreal5 Timeline에 대한 글입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;타임라인을 사용하여 시간 기반 애니메이션을 만들 수 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;이 글에서는 Timeline을 이용해 카메라 확장과 축소를 구현합니다.&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;타임라인을 사용하여 구현한 카메라 확장과 축소.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;&lt;b&gt;블루프린트로 구현하기.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;&lt;b&gt;C++을 이용해 구현하기.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqbIic/btsCpBV8hwY/k1p4MZpFPfGZ6BYSqbfss0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqbIic/btsCpBV8hwY/k1p4MZpFPfGZ6BYSqbfss0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqbIic/btsCpBV8hwY/k1p4MZpFPfGZ6BYSqbfss0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqbIic%2FbtsCpBV8hwY%2Fk1p4MZpFPfGZ6BYSqbfss0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;235&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;타임라인을 사용하여 구현한 카메라 확장과 축소.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 앉았을 때 카메라가 멀어지고 일어서면 가까워지는 카메라를 Timeline을 사용해 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 크기때문에 프레임 좀 줄였더니 뚝뚝 끊기는군요...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;녹화_2023_12_21_06_21_10_963.gif&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwunhI/btsCnLyAHRI/EQMQVP6dnyuYDOWHkkMp71/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwunhI/btsCnLyAHRI/EQMQVP6dnyuYDOWHkkMp71/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwunhI/btsCnLyAHRI/EQMQVP6dnyuYDOWHkkMp71/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bwunhI/btsCnLyAHRI/EQMQVP6dnyuYDOWHkkMp71/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;337&quot; data-filename=&quot;녹화_2023_12_21_06_21_10_963.gif&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;Unreal5 Timeline문서&quot; href=&quot;https://docs.unrealengine.com/5.0/ko/timelines-in-unreal-engine/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.unrealengine.com/5.0/ko/timelines-in-unreal-engine/&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;블루프린트.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블루프린트로는 이렇게 구현했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 키 입력을 받으면 작동합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfrQX/btsCk7PHvGI/adSYHfmJf7iRcBzpMxtDS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfrQX/btsCk7PHvGI/adSYHfmJf7iRcBzpMxtDS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfrQX/btsCk7PHvGI/adSYHfmJf7iRcBzpMxtDS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlfrQX%2FbtsCk7PHvGI%2FadSYHfmJf7iRcBzpMxtDS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;854&quot; height=&quot;407&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 키를 다시 누르면 원래대로 돌아갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;977&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tJlsg/btsClYStYUY/KKzEkOfyzVZrasQNNwgJa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tJlsg/btsClYStYUY/KKzEkOfyzVZrasQNNwgJa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tJlsg/btsClYStYUY/KKzEkOfyzVZrasQNNwgJa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtJlsg%2FbtsClYStYUY%2FKKzEkOfyzVZrasQNNwgJa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;977&quot; height=&quot;392&quot; data-origin-width=&quot;977&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;timeline(CrouchCamDistance)에 들어가는 커브는 간단하게 0.0, 1.0으로 설정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1341&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FwNru/btsCj1blfzi/1dYUWO5UhO9nIInw6Q7PZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FwNru/btsCj1blfzi/1dYUWO5UhO9nIInw6Q7PZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FwNru/btsCj1blfzi/1dYUWO5UhO9nIInw6Q7PZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFwNru%2FbtsCj1blfzi%2F1dYUWO5UhO9nIInw6Q7PZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1341&quot; height=&quot;901&quot; data-origin-width=&quot;1341&quot; data-origin-height=&quot;901&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;요약하면 특정키를 누르면 카메라가 550까지 부드럽게 멀어졌다가 특정키에서 손을 떼면 다시 400으로 돌아오는 간단한 코드입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++코드도 짧으니까 그냥 긁어서 올리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름은 BlackCharacter.h인데 ThirdPersonCharacter 예제에 Timeline만 추가한 것으로 생각하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능도 위에 블루프린트로 만든거랑 거의 같고 주석도 있기 때문에 자세한 설명은 하지 않겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BlackCharacter.h 코드.&lt;/p&gt;
&lt;pre id=&quot;code_1703108063830&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;GameFramework/Character.h&quot;
/*input*/
#include &quot;InputActionValue.h&quot;
/*Timeline*/
#include &quot;Components/TimelineComponent.h&quot;
#include &quot;BlackCharacter.generated.h&quot;


class UInputMappingContext;
class UInputAction;
class USpringArmComponent;
class UCameraComponent;

UCLASS()
class RPG_BLACK_API ABlackCharacter : public ACharacter
{
	GENERATED_BODY()

protected:
	virtual void BeginPlay() override;
	/*CallBack Input*/
	void Move(const FInputActionValue&amp;amp; value);
	void Look(const FInputActionValue&amp;amp; value);
	void Jump()override;
	void StartCrouch();
	void StopCrouch();
	/*Crouch*/
	UPROPERTY(blueprintReadOnly, Category = Movement)
	bool IsCrouching;
	/*Input Action*/
	UPROPERTY(EditAnywhere, Category = Input)
	UInputMappingContext* BlackContext;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* MovementAction;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* LookAction;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* JumpAction;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* CrouchAction;

	/*Timeline*/
	UPROPERTY(EditAnywhere, Category = TImeline)
	class UCurveFloat* TestCurve;
	FTimeline TestTimeline;
	void BindTestTimeline();
	UFUNCTION()
	void callBackFun(float Value);
	UFUNCTION(Exec)
	void TestPlay();
private:
	/*Character Component*/
	UPROPERTY(VisibleAnywhere)
	USpringArmComponent* CameraBoom;
	UPROPERTY(VisibleAnywhere)
	UCameraComponent* ViewCamera;
public:	
	ABlackCharacter();
	virtual void Tick(float DeltaTime) override;
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
	FORCEINLINE bool GetIsCrouching() const { return IsCrouching; }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BlackCharacter.cpp 코드입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1703108235633&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;Character/BlackCharacter.h&quot;
/*Input*/
#include &quot;EnhancedInputComponent.h&quot;
#include &quot;EnhancedInputSubsystems.h&quot;
/*Rotate*/
#include &quot;GameFramework/CharacterMovementComponent.h&quot;
/*SpringArm*/
#include &quot;GameFramework/SpringArmComponent.h&quot;
/*Camera*/
#include &quot;Camera/CameraComponent.h&quot;

// Sets default values
ABlackCharacter::ABlackCharacter()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	//bOrientRotationToMovement 는 현재 캐릭터가 가속값을 가지고 있다면 현재 가속되고있는값 방향으로 캐릭터 메쉬를 회전시켜줍니다.
	GetCharacterMovement()-&amp;gt;bOrientRotationToMovement = true;
	/*spring arm*/
	//#include &quot;GameFramework/SpringArmComponent.h&quot;필요
	CameraBoom = CreateDefaultSubobject&amp;lt;USpringArmComponent&amp;gt;(TEXT(&quot;CameraBoom&quot;));
	CameraBoom-&amp;gt;SetupAttachment(GetRootComponent());
	CameraBoom-&amp;gt;TargetArmLength = 400.f;
	CameraBoom-&amp;gt;bUsePawnControlRotation = true;
	/*CharacterRotate*/
	bUseControllerRotationPitch = false;
	bUseControllerRotationRoll = false;
	bUseControllerRotationYaw = false;
	/*Camera*/
	ViewCamera = CreateDefaultSubobject&amp;lt;UCameraComponent&amp;gt;(TEXT(&quot;ViewCamera&quot;));
	ViewCamera-&amp;gt;SetupAttachment(CameraBoom);
	ViewCamera-&amp;gt;SetRelativeLocation(FVector(0, 0, 20));

	IsCrouching = false;
}

// Called when the game starts or when spawned
void ABlackCharacter::BeginPlay()
{
	Super::BeginPlay();
	if (APlayerController* PlayerController = Cast&amp;lt;APlayerController&amp;gt;(GetController())) {
		if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem&amp;lt;UEnhancedInputLocalPlayerSubsystem&amp;gt;(PlayerController-&amp;gt;GetLocalPlayer())) {
			Subsystem-&amp;gt;AddMappingContext(BlackContext, 0);
		}
	}
	BindTestTimeline();
}

void ABlackCharacter::Move(const FInputActionValue&amp;amp; value)
{
	const FVector2D MovementVector = value.Get&amp;lt;FVector2D&amp;gt;();
	const FRotator Rotation = Controller-&amp;gt;GetControlRotation();
	const FRotator YawRotation(0.f, Rotation.Yaw, 0.f);
	const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
	AddMovementInput(ForwardDirection, MovementVector.Y);
	const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
	AddMovementInput(RightDirection, MovementVector.X);
}

void ABlackCharacter::Look(const FInputActionValue&amp;amp; value)
{
	const FVector2D LookVector = value.Get&amp;lt;FVector2D&amp;gt;();
	AddControllerYawInput(LookVector.X);//도리도리
	AddControllerPitchInput(LookVector.Y);//끄덕끄덕
}

void ABlackCharacter::Jump()
{
	Super::Jump();
}

void ABlackCharacter::StartCrouch()
{
	IsCrouching = true;
	GetCharacterMovement()-&amp;gt;MaxWalkSpeed = 350.f;
	//CameraBoom-&amp;gt;TargetArmLength = 500.f;
	TestTimeline.PlayFromStart();
}

void ABlackCharacter::StopCrouch()
{
	IsCrouching = false;
	GetCharacterMovement()-&amp;gt;MaxWalkSpeed = 500.f;
	//CameraBoom-&amp;gt;TargetArmLength = 400.f;
	TestTimeline.ReverseFromEnd();//손을 떼면 반대로.
}

void ABlackCharacter::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	TestTimeline.TickTimeline(DeltaTime);
}

void ABlackCharacter::BindTestTimeline()
{
	if (TestCurve) {
		FOnTimelineFloatStatic TestCallBack;
		FOnTimelineEventStatic TimelineFinishedCallback;
		TestCallBack.BindUFunction(this, &quot;callBackFun&quot;);
		TestTimeline.AddInterpFloat(TestCurve, TestCallBack);
		TestTimeline.SetTimelineFinishedFunc(TimelineFinishedCallback);
	}
}
void ABlackCharacter::callBackFun(float Value)
{
	//GEngine-&amp;gt;AddOnScreenDebugMessage(-1, 3, FColor::Green, FString::SanitizeFloat(FMath::Lerp(400, 550, Value)));
	CameraBoom-&amp;gt;TargetArmLength = FMath::Lerp(400, 550, Value);
}
void ABlackCharacter::TestPlay()
{
	TestTimeline.PlayFromStart();
}

void ABlackCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	if (UEnhancedInputComponent* EnhancedInputComponent = CastChecked&amp;lt;UEnhancedInputComponent&amp;gt;(PlayerInputComponent)) {
		EnhancedInputComponent-&amp;gt;BindAction(MovementAction, ETriggerEvent::Triggered, this, &amp;amp;ABlackCharacter::Move);
		EnhancedInputComponent-&amp;gt;BindAction(LookAction, ETriggerEvent::Triggered, this, &amp;amp;ABlackCharacter::Look);
		EnhancedInputComponent-&amp;gt;BindAction(JumpAction, ETriggerEvent::Triggered, this, &amp;amp;ABlackCharacter::Jump);
		EnhancedInputComponent-&amp;gt;BindAction(CrouchAction, ETriggerEvent::Started, this, &amp;amp;ABlackCharacter::StartCrouch);
		EnhancedInputComponent-&amp;gt;BindAction(CrouchAction, ETriggerEvent::Completed, this, &amp;amp;ABlackCharacter::StopCrouch);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Curve파일 및 0.0 , 1.0설정.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGfiix/btsCogLWoSp/6JVqCF8xmNTxa8k5xAsKs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGfiix/btsCogLWoSp/6JVqCF8xmNTxa8k5xAsKs0/img.png&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;573&quot; data-is-animation=&quot;false&quot; width=&quot;600&quot; height=&quot;623&quot; style=&quot;width: 34.4466%; margin-right: 10px;&quot; data-widthpercent=&quot;34.85&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGfiix/btsCogLWoSp/6JVqCF8xmNTxa8k5xAsKs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGfiix%2FbtsCogLWoSp%2F6JVqCF8xmNTxa8k5xAsKs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biHTNw/btsCoCHS3kV/hV53fwGYPRN6gecPvSwEt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biHTNw/btsCoCHS3kV/hV53fwGYPRN6gecPvSwEt1/img.png&quot; data-origin-width=&quot;1853&quot; data-origin-height=&quot;1029&quot; data-is-animation=&quot;false&quot; style=&quot;width: 64.3906%;&quot; data-widthpercent=&quot;65.15&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biHTNw/btsCoCHS3kV/hV53fwGYPRN6gecPvSwEt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiHTNw%2FbtsCoCHS3kV%2FhV53fwGYPRN6gecPvSwEt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1853&quot; height=&quot;1029&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 Curve파일을 넣고 사용하니 거의 동일하게 작동했습니다.&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/661</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal5-Timeline#entry661comment</comments>
      <pubDate>Thu, 21 Dec 2023 06:54:51 +0900</pubDate>
    </item>
    <item>
      <title>The game module &amp;quot;Project Name&amp;quot; Could not be loaded 오류</title>
      <link>https://intunknown.tistory.com/entry/The-game-module-Project-Name-Could-not-be-loaded-%EC%98%A4%EB%A5%98</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;The game module &quot;Project Name&quot; Could not be loaded 오류&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;안녕하세요.&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 유닉스라는 과목을 들으면서 &lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;제가 만든 코드를 올려보려고 합니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;이 글은 언리얼 사용중에 나온 메시지에 대한 내용입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;내용설명.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;해결방법.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;내용 설명.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼 사용중에 오랜만에 프로젝트 빌드를 실행했더니 빌드는 성공했지만 정상적으로 실행되지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The game module 'project name' could not be loaded. There may be an operating system error, the module may not be properly set up, or a plugin which has been included into the build has not been turned on.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이라는 메시지가 뜨며 정상적으로 실행되지 않는 상태입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vlMyY/btsBT3Ts5uA/p6UoW2M7sRrI1GVfUFIRkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vlMyY/btsBT3Ts5uA/p6UoW2M7sRrI1GVfUFIRkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vlMyY/btsBT3Ts5uA/p6UoW2M7sRrI1GVfUFIRkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvlMyY%2FbtsBT3Ts5uA%2Fp6UoW2M7sRrI1GVfUFIRkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;308&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결 방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;레딧&quot; href=&quot;https://www.reddit.com/r/unrealengine/comments/eveyiu/the_game_module_project_name_could_not_be_loaded/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.reddit.com/r/unrealengine/comments/eveyiu/the_game_module_project_name_could_not_be_loaded/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1702393579603&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;From the unrealengine community on Reddit&quot; data-og-description=&quot;Explore this post and more from the unrealengine community&quot; data-og-host=&quot;www.reddit.com&quot; data-og-source-url=&quot;https://www.reddit.com/r/unrealengine/comments/eveyiu/the_game_module_project_name_could_not_be_loaded/&quot; data-og-url=&quot;https://www.reddit.com/r/unrealengine/comments/eveyiu/the_game_module_project_name_could_not_be_loaded/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sGneb/hyULXzP7Al/XAIvu0rjfjnQXKV1cpnK8K/img.jpg?width=1120&amp;amp;height=584&amp;amp;face=0_0_1120_584,https://scrap.kakaocdn.net/dn/cyRUHC/hyULW8MIaO/VYcLa6gNkrqPhR6j1Eoag1/img.jpg?width=1120&amp;amp;height=584&amp;amp;face=0_0_1120_584&quot;&gt;&lt;a href=&quot;https://www.reddit.com/r/unrealengine/comments/eveyiu/the_game_module_project_name_could_not_be_loaded/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.reddit.com/r/unrealengine/comments/eveyiu/the_game_module_project_name_could_not_be_loaded/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sGneb/hyULXzP7Al/XAIvu0rjfjnQXKV1cpnK8K/img.jpg?width=1120&amp;amp;height=584&amp;amp;face=0_0_1120_584,https://scrap.kakaocdn.net/dn/cyRUHC/hyULW8MIaO/VYcLa6gNkrqPhR6j1Eoag1/img.jpg?width=1120&amp;amp;height=584&amp;amp;face=0_0_1120_584');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;From the unrealengine community on Reddit&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Explore this post and more from the unrealengine community&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.reddit.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 레딧에서 본것처럼 프로젝트 폴더의 saved\Logs\프로젝트이름.log의 파일을 열어 Missing을 검색해 어떤부분이 문제인지 확인하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 경우에는 HairStrandsCore.dll이 문제인 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;271&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXlM0I/btsBJaTUa0C/sjr57yEFxdw3hE3u6wbM61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXlM0I/btsBJaTUa0C/sjr57yEFxdw3hE3u6wbM61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXlM0I/btsBJaTUa0C/sjr57yEFxdw3hE3u6wbM61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXlM0I%2FbtsBJaTUa0C%2Fsjr57yEFxdw3hE3u6wbM61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;249&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;271&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이제 해당 폴더를 찾아줍니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;E:\Epic Games\UE_5.1\Engine\Plugins\Runtime\HairStrands&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 폴더에서 HairStrands.uplugin을 열어보면 EnableByDefault:false로 되있는데 이걸 true로 바꿔줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKRxS6/btsBJbrHYJ7/q5arnKKDCmUG3YtugtsVTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKRxS6/btsBJbrHYJ7/q5arnKKDCmUG3YtugtsVTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKRxS6/btsBJbrHYJ7/q5arnKKDCmUG3YtugtsVTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKRxS6%2FbtsBJbrHYJ7%2Fq5arnKKDCmUG3YtugtsVTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;452&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;493&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 플러그인 문제였는지 바로 실행이 잘 됩니다.&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>error</category>
      <category>언리얼</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/660</guid>
      <comments>https://intunknown.tistory.com/entry/The-game-module-Project-Name-Could-not-be-loaded-%EC%98%A4%EB%A5%98#entry660comment</comments>
      <pubDate>Wed, 13 Dec 2023 00:19:31 +0900</pubDate>
    </item>
    <item>
      <title>Unity Outline Shader</title>
      <link>https://intunknown.tistory.com/entry/Unity-Outline-Shader</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unity Outline Shader&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;Unity outline에 대한 내용입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;윤곽선을 Shader Graph를 이용해 간단하게 만들고 그 결과를 보여줍니다.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;*Unity Editer Version 2022.3.0f1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;준비&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;쉐이더 그래프 제작&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;적용 및 결과&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;준비&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Outline을 적용할 오브젝트를 준비합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3D Cube오브젝트, 3D Chicken, 3D Deer오브젝트를 준비했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DZGaH/btsBMQMX8pN/KrzyTcauxxV8vinRL9yr4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DZGaH/btsBMQMX8pN/KrzyTcauxxV8vinRL9yr4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DZGaH/btsBMQMX8pN/KrzyTcauxxV8vinRL9yr4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDZGaH%2FbtsBMQMX8pN%2FKrzyTcauxxV8vinRL9yr4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;273&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;쉐이더 그래프 제작&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Shader Graph를 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Create-&amp;gt;ShaderGraph-&amp;gt;URP-&amp;gt;Unlit Shader Graph&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;841&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/enM0ql/btsBDOcAU4X/uoWVkxsJg7Krn9FmMzQpj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/enM0ql/btsBDOcAU4X/uoWVkxsJg7Krn9FmMzQpj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/enM0ql/btsBDOcAU4X/uoWVkxsJg7Krn9FmMzQpj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FenM0ql%2FbtsBDOcAU4X%2FuoWVkxsJg7Krn9FmMzQpj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;448&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;841&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Normal Vector는 3D 모델에서 표면의 방향을 나타내는 벡터입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것을 이용해 Outline 쉐이더 그래프를 간단하게 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 사진 참고. Shader제작 및 수정 후 save 필수!)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Shader.png&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgS20J/btsBDKuxu7X/s1NNWkzPBmP5dUad2AJfw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgS20J/btsBDKuxu7X/s1NNWkzPBmP5dUad2AJfw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgS20J/btsBDKuxu7X/s1NNWkzPBmP5dUad2AJfw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgS20J%2FbtsBDKuxu7X%2Fs1NNWkzPBmP5dUad2AJfw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1526&quot; height=&quot;790&quot; data-filename=&quot;Shader.png&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bDXsoN/btsBKjV8bUl/kITVKXFqruR3Lt0BoKlM61/outline.unitypackage?attach=1&amp;amp;knm=tfile.unitypackage&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;outline.unitypackage&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이후 이 쉐이더를 이용해 Material을 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7c0Hy/btsBKeAuygK/8rIbyn31exKiXjnuDVTSGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7c0Hy/btsBKeAuygK/8rIbyn31exKiXjnuDVTSGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7c0Hy/btsBKeAuygK/8rIbyn31exKiXjnuDVTSGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7c0Hy%2FbtsBKeAuygK%2F8rIbyn31exKiXjnuDVTSGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;585&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 Material을 눌러 인스펙터창에서 Thick와 Color를 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 0.02에 빨간색을 선택했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceriIR/btsBDQVGGcA/tqzOq7JkoMDwi1HBkjh6R0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceriIR/btsBDQVGGcA/tqzOq7JkoMDwi1HBkjh6R0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceriIR/btsBDQVGGcA/tqzOq7JkoMDwi1HBkjh6R0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceriIR%2FbtsBDQVGGcA%2FtqzOq7JkoMDwi1HBkjh6R0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;369&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;적용 및 결과&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 적용할 오브젝트로 가서 Materials를 하나 더 추가한 후 방금 생성한 메테리얼을 넣어줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eiJk4T/btsBF2OGJK6/ls7xg6JSNEQRl5OfN3Qmu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eiJk4T/btsBF2OGJK6/ls7xg6JSNEQRl5OfN3Qmu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eiJk4T/btsBF2OGJK6/ls7xg6JSNEQRl5OfN3Qmu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeiJk4T%2FbtsBF2OGJK6%2Fls7xg6JSNEQRl5OfN3Qmu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;403&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 오브젝트를 확인하면 이런식으로 Outline이 생기는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lxnFB/btsBFH45Pt3/R9vSilg4se4eSCc8RhjkB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lxnFB/btsBFH45Pt3/R9vSilg4se4eSCc8RhjkB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lxnFB/btsBFH45Pt3/R9vSilg4se4eSCc8RhjkB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlxnFB%2FbtsBFH45Pt3%2FR9vSilg4se4eSCc8RhjkB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;384&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/유니티</category>
      <category>shader</category>
      <category>unity</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/659</guid>
      <comments>https://intunknown.tistory.com/entry/Unity-Outline-Shader#entry659comment</comments>
      <pubDate>Mon, 11 Dec 2023 08:06:42 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio 2022 폰트 변경.</title>
      <link>https://intunknown.tistory.com/entry/Visual-Studio-2022-%ED%8F%B0%ED%8A%B8-%EB%B3%80%EA%B2%BD</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Visual Studio 폰트 변경.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 글은 IDE중 하나인 비주얼 스튜디오(Visual Studio)의 폰트변경에 대한 내용을 다루고 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Visual Studio 2022를 기반으로 작성되었으며, 이전이나 이후 버전 역시 비슷할 것으로 예상됩니다.&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;변경하는 방법.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;&lt;b&gt;Microsoft 설명.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mG30w/btsl2eiwA1c/AmvD6bf5wl7xbdgV7Js800/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mG30w/btsl2eiwA1c/AmvD6bf5wl7xbdgV7Js800/img.png&quot; data-alt=&quot;썸네일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mG30w/btsl2eiwA1c/AmvD6bf5wl7xbdgV7Js800/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmG30w%2Fbtsl2eiwA1c%2FAmvD6bf5wl7xbdgV7Js800%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;썸네일&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;193&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;썸네일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Visual Studio 폰트 변경.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 제 Visual Studio에서 보이는 대문자 i와 l입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알아보기 힘들어서 바꾸는 방법을 찾아봤습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;93&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3lPvH/btsl1Vi0Df9/1a7oVTp3jF2AKuGxIPAA1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3lPvH/btsl1Vi0Df9/1a7oVTp3jF2AKuGxIPAA1k/img.png&quot; data-alt=&quot;i와 l&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3lPvH/btsl1Vi0Df9/1a7oVTp3jF2AKuGxIPAA1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3lPvH%2Fbtsl1Vi0Df9%2F1a7oVTp3jF2AKuGxIPAA1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;i와 l&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;129&quot; data-origin-width=&quot;93&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;i와 l&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio를 열어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 상단에 메뉴에 보이는 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;도구-&amp;gt; 옵션&lt;/b&gt;&lt;/span&gt;으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1493&quot; data-origin-height=&quot;607&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbPXFT/btsl1hfLBwt/oH6nX1kfodBvm7nnmD4Dp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbPXFT/btsl1hfLBwt/oH6nX1kfodBvm7nnmD4Dp0/img.png&quot; data-alt=&quot;도구-&amp;amp;gt; 옵션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbPXFT/btsl1hfLBwt/oH6nX1kfodBvm7nnmD4Dp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbPXFT%2Fbtsl1hfLBwt%2FoH6nX1kfodBvm7nnmD4Dp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;244&quot; data-origin-width=&quot;1493&quot; data-origin-height=&quot;607&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;도구-&amp;gt; 옵션&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵션에서 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;환경(Environment)-&amp;gt;글꼴 및 색(Fonts and Colors)&lt;/b&gt;&lt;/span&gt;로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 나오는데 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;원하는 글꼴로 선택&lt;/b&gt;&lt;/span&gt;하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진처럼 샘플로 미리보기도 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ze69F/btsl1z1zNxT/k1e8AzT1fnFpQI0N9h3Dc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ze69F/btsl1z1zNxT/k1e8AzT1fnFpQI0N9h3Dc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ze69F/btsl1z1zNxT/k1e8AzT1fnFpQI0N9h3Dc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZe69F%2Fbtsl1z1zNxT%2Fk1e8AzT1fnFpQI0N9h3Dc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;옵션-&amp;amp;gt;환경-&amp;amp;gt;글꼴 및 색&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;350&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Microsoft설명.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문서에서 해당 내용을 가져왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글꼴에 관한 더 자세한 내용은 여기서 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;마소 VIsual Studio&quot; href=&quot;https://learn.microsoft.com/ko-kr/visualstudio/ide/how-to-change-fonts-and-colors-in-visual-studio?view=vs-2022&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://learn.microsoft.com/ko-kr/visualstudio/ide/how-to-change-fonts-and-colors-in-visual-studio?view=vs-2022&lt;/a&gt;&lt;/p&gt;</description>
      <category>프로그래밍</category>
      <category>Visual Studio</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/658</guid>
      <comments>https://intunknown.tistory.com/entry/Visual-Studio-2022-%ED%8F%B0%ED%8A%B8-%EB%B3%80%EA%B2%BD#entry658comment</comments>
      <pubDate>Fri, 30 Jun 2023 23:59:32 +0900</pubDate>
    </item>
    <item>
      <title>페이지가 작동하지 않습니다 ERROR 400</title>
      <link>https://intunknown.tistory.com/entry/%ED%8E%98%EC%9D%B4%EC%A7%80%EA%B0%80-%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4-ERROR-40</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;페이지가 작동하지 않습니다 HTTP ERROR 400&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지가 작동하지 않습니다. 문제가 계속되면 사이트 소유자에게 문의하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP ERROR 400에 대한 간단한 설명과 특정 HTTP ERROR 400오류를 해결하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 Tistory에서 발생한 HTTP ERROR 400을 해결합니다.&lt;br /&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;HTTP ERROR 400.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;Tistroy에 발생한 HTTP ERROR 400.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;해결방법.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;797&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bh3Io/btsje1r9RlC/KubwyeHgYqqk9NlVCyIRM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bh3Io/btsje1r9RlC/KubwyeHgYqqk9NlVCyIRM1/img.png&quot; data-alt=&quot;썸네일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bh3Io/btsje1r9RlC/KubwyeHgYqqk9NlVCyIRM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBh3Io%2Fbtsje1r9RlC%2FKubwyeHgYqqk9NlVCyIRM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;797&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;썸네일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;HTTP ERROR 400&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP ERROR 400은 클라이언트 측에서 잘못된 요청을 서버에 전송했음을 나타내는 상태 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 오류는 서버가 요청을 이해할 수 없거나 처리할 수 없을 때 발생하며 &quot;Bad Request&quot;라고도 불립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 잘못된 구문, 잘못된 요청 매개변수, 보안문제로 인해 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;즉, HTTP ERROR 400은 클라이언트 측에서 발생하는 오류이므로, 클라이언트가 요청을 수정하여 해결하는 것이 일반적이며, 서버측에서 발생한 오류는 아닙니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Tistory에 발생한 HTTP ERROR 400&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;티스토리에서 관리 페이지에 들어가려 했는데 페이지가 작동하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 계속되면 사이트 소유자에게 문의하세요. HTTP ERROR 400이 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 티스토리에 문제가 생긴줄 알았는데 좀 지나고 보니까 아닌 것 같더라고요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 말했다시피 400에러가 나왔기 때문에 제 컴퓨터 문제인것 같았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법은 간단했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JhTIu/btsjdB8kFX7/NpK6RadZG0wr56GqeCERQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JhTIu/btsjdB8kFX7/NpK6RadZG0wr56GqeCERQ0/img.png&quot; data-alt=&quot;티스토리 400오류&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JhTIu/btsjdB8kFX7/NpK6RadZG0wr56GqeCERQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJhTIu%2FbtsjdB8kFX7%2FNpK6RadZG0wr56GqeCERQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;476&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리 400오류&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1936163777554119&quot;&gt;&lt;/script&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;해결방법.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;티스토리에 대한 데이터를 삭제하면서 해결되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 크롬의 우측 상단에 보이는 세개의 점(&quot;더보기&quot;)를 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 &quot;설정&quot;을 눌러 크롬 설정창으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJFDf/btsjeYhT0Rf/kiXMXNehmvM5kmtuKVp7O0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJFDf/btsjeYhT0Rf/kiXMXNehmvM5kmtuKVp7O0/img.png&quot; data-alt=&quot;크롬 더보기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJFDf/btsjeYhT0Rf/kiXMXNehmvM5kmtuKVp7O0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJFDf%2FbtsjeYhT0Rf%2FkiXMXNehmvM5kmtuKVp7O0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;473&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크롬 더보기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크롬 설정 창에 들어가면 여러가지 메뉴가 보이는데 그중에서 &quot;개인 정보 보호 및 보안&quot;으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJqKs0/btsje1eCNuV/UibpgoCHjJxPTsyzZociSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJqKs0/btsje1eCNuV/UibpgoCHjJxPTsyzZociSk/img.png&quot; data-alt=&quot;크롬 설정 탭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJqKs0/btsje1eCNuV/UibpgoCHjJxPTsyzZociSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJqKs0%2Fbtsje1eCNuV%2FUibpgoCHjJxPTsyzZociSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;476&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크롬 설정 탭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 정보 보호 및 보안으로 들어가면 &quot;쿠키 및 기타 사이트 데이터&quot;항목이 보일겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLHShs/btsjaApp9qi/8cKtpS7Z8M5JIGYSR4sM30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLHShs/btsjaApp9qi/8cKtpS7Z8M5JIGYSR4sM30/img.png&quot; data-alt=&quot;크롬 개인정보 보호 및 보안&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLHShs/btsjaApp9qi/8cKtpS7Z8M5JIGYSR4sM30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLHShs%2FbtsjaApp9qi%2F8cKtpS7Z8M5JIGYSR4sM30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;265&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크롬 개인정보 보호 및 보안&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;모든 사이트 데이터 및 권한 보기&quot;를 클릭해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKvam7/btsjcWLD1Ud/nKKVKpKAqzrKK0Kcva3vL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKvam7/btsjcWLD1Ud/nKKVKpKAqzrKK0Kcva3vL0/img.png&quot; data-alt=&quot;쿠키 및 기타 사이트 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKvam7/btsjcWLD1Ud/nKKVKpKAqzrKK0Kcva3vL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKvam7%2FbtsjcWLD1Ud%2FnKKVKpKAqzrKK0Kcva3vL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;265&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;쿠키 및 기타 사이트 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 티스토리의 데이터만 삭제해주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 데이터가 필요한 것이 아니라면 다 지워도 상관없긴합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 나머지에 다시 로그인하기 귀찮아서...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m1NzF/btsjbqmbNzv/99iqBP9yIqac7ekXoVJIC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m1NzF/btsjbqmbNzv/99iqBP9yIqac7ekXoVJIC1/img.png&quot; data-alt=&quot;모든 사이트 데이터 및 권한 보기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m1NzF/btsjbqmbNzv/99iqBP9yIqac7ekXoVJIC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm1NzF%2FbtsjbqmbNzv%2F99iqBP9yIqac7ekXoVJIC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;265&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모든 사이트 데이터 및 권한 보기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 삭제할꺼냐고 물어봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Cf7y/btsjcsju7fm/lPOTm05NqdbxkUDUevIrg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Cf7y/btsjcsju7fm/lPOTm05NqdbxkUDUevIrg0/img.png&quot; data-alt=&quot;티스토리 데이터 삭제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Cf7y/btsjcsju7fm/lPOTm05NqdbxkUDUevIrg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Cf7y%2Fbtsjcsju7fm%2FlPOTm05NqdbxkUDUevIrg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;265&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리 데이터 삭제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 삭제가 완료되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wooeK/btsjeXpLFvY/kBWGWzQpD9EhutPJkjhXOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wooeK/btsjeXpLFvY/kBWGWzQpD9EhutPJkjhXOk/img.png&quot; data-alt=&quot;데이터 삭제 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wooeK/btsjeXpLFvY/kBWGWzQpD9EhutPJkjhXOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwooeK%2FbtsjeXpLFvY%2FkBWGWzQpD9EhutPJkjhXOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;265&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터 삭제 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제된 후 티스토리 블로그 관리 페이지에 성공적으로 접속할 수 있게 되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cI2wJ9/btsjcrrnWI9/M3Yt89jeWKjnclv2JhgPhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cI2wJ9/btsjcrrnWI9/M3Yt89jeWKjnclv2JhgPhk/img.png&quot; data-alt=&quot;티스토리 400 오류 해결&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cI2wJ9/btsjcrrnWI9/M3Yt89jeWKjnclv2JhgPhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI2wJ9%2FbtsjcrrnWI9%2FM3Yt89jeWKjnclv2JhgPhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;265&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;티스토리 400 오류 해결&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터가 꼬이면서 발생한 오류로 추정됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 티스토리의 오류는 이렇게 해결이 되었지만, 이 오류의 발생원인에 따라 해결방법이 다를 수 있습니다.&lt;/p&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>error</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/657</guid>
      <comments>https://intunknown.tistory.com/entry/%ED%8E%98%EC%9D%B4%EC%A7%80%EA%B0%80-%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4-ERROR-40#entry657comment</comments>
      <pubDate>Fri, 9 Jun 2023 04:59:10 +0900</pubDate>
    </item>
    <item>
      <title>컴퓨터에서 저장 공간이 적게 표시되는 이유</title>
      <link>https://intunknown.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C-%EC%A0%80%EC%9E%A5-%EA%B3%B5%EA%B0%84%EC%9D%B4-%EC%A0%81%EA%B2%8C-%ED%91%9C%EC%8B%9C%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;컴퓨터에서 저장 공간이 적게 표시되는 이유.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1TB라고 표기된 하드디스크/SSD를 구매하여 컴퓨터에 장착한 뒤 윈도우를 통해 보면 931GB로 표시됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 하드디스크나 SSD등의 저장장치를 표시한 용량이 실제 컴퓨터에서는 더 적게 표시되는 이유에 대한 내용을 다루는 글입니다.&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #b00800;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;Data의 단위.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;10진 시스템.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;2진 시스템.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;용량이 더 적게 표시되는 이유.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Twuem/btsiJzERfdr/R4FESVYgKOjBLokwBVj2V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Twuem/btsiJzERfdr/R4FESVYgKOjBLokwBVj2V1/img.png&quot; data-alt=&quot;컴퓨터에서 저장공간이 적게 표시되는 이유&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Twuem/btsiJzERfdr/R4FESVYgKOjBLokwBVj2V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTwuem%2FbtsiJzERfdr%2FR4FESVYgKOjBLokwBVj2V1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;컴퓨터에서 저장공간이 적게 표시되는 이유&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Data의 단위.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터에서 용량이 실제로 표시되는 용량보다 적게 나타나는 경우가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 차이를 이해하기 위해서는 데이터의 단위에 대한 이해가 조금 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, 컴퓨터의 용량을 측정하는 가장 작은 단위는 Byte입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이 Byte단위로 용량을 표시하면 너무 큰 숫자가 되어 가독성이 떨어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 일반적으로 더 큰 단위로 표시를 하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이진법을 사용하는 컴퓨터에서의 데이터 단위.&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 64px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Kbyte(1KB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1024 Byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Mbye(1MB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1024&lt;span&gt; Kbyte&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Gbyte(1GB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1024&lt;span&gt; Mbyte&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Tbyte(1TB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1024&lt;span&gt; Gbyte&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;10진수로 표기된 용량.&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 64px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Kbyte(1KB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1000 Byte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Mbye(1MB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1000 Kbyte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Gbyte(1GB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1000 Mbyte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1 Tbyte(1TB)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;1000 Gbyte&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;10진 시스템.&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10진수로 &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1TB&lt;/b&gt;&lt;/span&gt;를 계산해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1TB = 1000*1000*1000*1000 = 1,000,000,000,000 Byte가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10진수로 &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1GB&lt;/b&gt;&lt;/span&gt;를 계산해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1GB = 1000*1000*1000=1,000,000,000 Byte가 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tkoxS/btsiO5WYPpG/9FdqyYXryW5kfWiykpvrU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tkoxS/btsiO5WYPpG/9FdqyYXryW5kfWiykpvrU0/img.png&quot; data-alt=&quot;10진&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tkoxS/btsiO5WYPpG/9FdqyYXryW5kfWiykpvrU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtkoxS%2FbtsiO5WYPpG%2F9FdqyYXryW5kfWiykpvrU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;133&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;10진&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2진 시스템.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2진수로 &lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;1TB&lt;/span&gt;&lt;/b&gt;를 계산해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1TB = 1024*1024*1024*1024 = 1,099,511,627,776 Byte가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2진수로 &lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;1GB&lt;/span&gt;&lt;/b&gt;를 계산해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1GB = 1024*1024*1024 = 1,073,741,824 Byte가 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn3zQC/btsiOJ7AjBg/UONxlspx7kcyRXtCkUDC6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn3zQC/btsiOJ7AjBg/UONxlspx7kcyRXtCkUDC6K/img.png&quot; data-alt=&quot;2진&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn3zQC/btsiOJ7AjBg/UONxlspx7kcyRXtCkUDC6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn3zQC%2FbtsiOJ7AjBg%2FUONxlspx7kcyRXtCkUDC6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;150&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2진&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;용량이 더 적게 표시되는 이유.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;결과적으로 용량이 더 적게 표시되는 이유는, 제조업체가 1TB나 500GB등의 용량을 10진법으로 표기하는 반면, 운영체제와 파일 시스템은 이진법을 사용하여 용량을 계산하기 때문입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;제조업체는 주로 10진법을 기준으로 용량을 표시하여 제품을 마케팅합니다. 예를 들어 1TB의 경우, 10진법으로 1000기가바트(1,000,000,000,000바이트)입니다. 그러나 운영체제와 파일 시스템은 이진법을 사용하여 1 테라바이트를 1024기가바이트로 인식합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이러한 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2진법과 10진법 간의 차이로 인해 실제로 사용가능한 용량은 표시된 용량보다 조금 작아지게 됩니다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1 테라를 계산해 보면 1,000,000,000,000 /1024/1024/1024 -&amp;gt; 약 931기가바이트로 표시되게 되는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/15dBt/btsiOgYVquf/k47YxbwvSBkPmVR24Wp7W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/15dBt/btsiOgYVquf/k47YxbwvSBkPmVR24Wp7W0/img.png&quot; data-alt=&quot;500GB HDD_Disk&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/15dBt/btsiOgYVquf/k47YxbwvSBkPmVR24Wp7W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F15dBt%2FbtsiOgYVquf%2Fk47YxbwvSBkPmVR24Wp7W0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;307&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;500GB HDD_Disk&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;실제로는 완전히 딱 맞아 떨어지는 것은 아니고 여러 가지 이유료 인해 표시되는 용량보다 조금 더 큽니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;또한 위에서 설명한 이유 외에도 용량이 더 적게 표시되는 경우도 있을 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;하지만 가장 큰 차이가 발생하는 이유는 바로 이러한 이유 때문입니다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>유용한정보/잡다한것</category>
      <category>data</category>
      <category>용량</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/656</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C-%EC%A0%80%EC%9E%A5-%EA%B3%B5%EA%B0%84%EC%9D%B4-%EC%A0%81%EA%B2%8C-%ED%91%9C%EC%8B%9C%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0#entry656comment</comments>
      <pubDate>Tue, 6 Jun 2023 16:30:08 +0900</pubDate>
    </item>
    <item>
      <title>윈도우11 체크박스</title>
      <link>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B011-%EC%B2%B4%ED%81%AC%EB%B0%95%EC%8A%A4</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;윈도우11 체크박스.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우11에서 어느 날 갑자기 아이콘에 체크박스가 생겼을 경우 또는 체크박스가 필요한 경우 필요한 글입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 윈도우 11에서 체크박스(항목 확인란)를 추가하거나 제거하는 방법에 대한 글입니다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;항목 확인란 = 체크박스&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;활성/비활성 방법1.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;활성/비활성 방법2.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9HqXB/btsiPOUe5YB/kiF5mokXXWwqaHuVaoebU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9HqXB/btsiPOUe5YB/kiF5mokXXWwqaHuVaoebU0/img.png&quot; data-alt=&quot;윈도우11 체크박스 썸네일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9HqXB/btsiPOUe5YB/kiF5mokXXWwqaHuVaoebU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9HqXB%2FbtsiPOUe5YB%2FkiF5mokXXWwqaHuVaoebU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우11 체크박스 썸네일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;항목 확인란 = 체크박스&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항목 확인란 -&amp;gt; 즉, 파일에 발생하는 체크표시를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항목 확인란이 비활성화 되었을 때 평소 사용하던 아이콘으로 보일 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 사진 참고.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;70&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SYgvq/btsivQtiRip/Zq6OIivYPCVSSgQY1CqVWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SYgvq/btsivQtiRip/Zq6OIivYPCVSSgQY1CqVWK/img.png&quot; data-alt=&quot;항목 확인란 비활성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SYgvq/btsivQtiRip/Zq6OIivYPCVSSgQY1CqVWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSYgvq%2FbtsivQtiRip%2FZq6OIivYPCVSSgQY1CqVWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;80&quot; height=&quot;113&quot; data-origin-width=&quot;70&quot; data-origin-height=&quot;99&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;항목 확인란 비활성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 활성화 한다면 이런 식으로 아이콘에 체크박스가 생기게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;74&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C79mQ/btsiM96aZB4/VcKr6EhXpv3zJ2REEyHhj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C79mQ/btsiM96aZB4/VcKr6EhXpv3zJ2REEyHhj1/img.png&quot; data-alt=&quot;항목 확인란 활성화.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C79mQ/btsiM96aZB4/VcKr6EhXpv3zJ2REEyHhj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC79mQ%2FbtsiM96aZB4%2FVcKr6EhXpv3zJ2REEyHhj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;80&quot; height=&quot;96&quot; data-origin-width=&quot;74&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;항목 확인란 활성화.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폴더에서는 이런식으로 보입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbj2LS/btsiBMxf1zm/wFRaKvh0a4ySSTHzNdivok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbj2LS/btsiBMxf1zm/wFRaKvh0a4ySSTHzNdivok/img.png&quot; data-alt=&quot;체크 박스 활성화 폴더예시.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbj2LS/btsiBMxf1zm/wFRaKvh0a4ySSTHzNdivok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbj2LS%2FbtsiBMxf1zm%2FwFRaKvh0a4ySSTHzNdivok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;282&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;체크 박스 활성화 폴더예시.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 체크박스를 활성화 시키거나 비활성화시키는 방법은 매우 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 글을 참고해주세요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;활성/비활성 방법 1.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 아무 폴더로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mF6Qr/btsiOi2Thy2/3k9kxSVVLWbk61597vRnZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mF6Qr/btsiOi2Thy2/3k9kxSVVLWbk61597vRnZ1/img.png&quot; data-alt=&quot;폴더&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mF6Qr/btsiOi2Thy2/3k9kxSVVLWbk61597vRnZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmF6Qr%2FbtsiOi2Thy2%2F3k9kxSVVLWbk61597vRnZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;282&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;폴더&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 폴더 상단에 보이는 메뉴중에서 &quot;보기&quot;를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SnxhD/btsizd25vI7/VlnJCe6MZezWQc9BPXMpCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SnxhD/btsizd25vI7/VlnJCe6MZezWQc9BPXMpCk/img.png&quot; data-alt=&quot;메뉴 &amp;quot;보기&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SnxhD/btsizd25vI7/VlnJCe6MZezWQc9BPXMpCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSnxhD%2Fbtsizd25vI7%2FVlnJCe6MZezWQc9BPXMpCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;277&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메뉴 &quot;보기&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 보기를 눌렀을때 나오는 메뉴 중 &quot;표시&quot;를 클릭하고, &quot;항목 확인란&quot;을 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 사진은 선택하지 않은 사진입니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biIUeD/btsiOfFc2kv/P2AbzGlfmsC5fyjCKiButK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biIUeD/btsiOfFc2kv/P2AbzGlfmsC5fyjCKiButK/img.png&quot; data-alt=&quot;항목 확인란(체크표시)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biIUeD/btsiOfFc2kv/P2AbzGlfmsC5fyjCKiButK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiIUeD%2FbtsiOfFc2kv%2FP2AbzGlfmsC5fyjCKiButK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;282&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;항목 확인란(체크표시)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;활성/비활성 방법 2.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법도 비슷합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 아무 폴더나 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgjf9E/btsiNbb27n2/wMxmp2CbRZjd85E8Vm0Cak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgjf9E/btsiNbb27n2/wMxmp2CbRZjd85E8Vm0Cak/img.png&quot; data-alt=&quot;아무 폴더&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgjf9E/btsiNbb27n2/wMxmp2CbRZjd85E8Vm0Cak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgjf9E%2FbtsiNbb27n2%2FwMxmp2CbRZjd85E8Vm0Cak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;282&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아무 폴더&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 폴더 상단 메뉴에 보이는 &quot;&amp;ordm;&amp;ordm;&amp;ordm;(자세히 보기)&quot;를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIrPHf/btsivQmJIJL/jiij38HloLQzcDunXEs5SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIrPHf/btsivQmJIJL/jiij38HloLQzcDunXEs5SK/img.png&quot; data-alt=&quot;메뉴 더보기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIrPHf/btsivQmJIJL/jiij38HloLQzcDunXEs5SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIrPHf%2FbtsivQmJIJL%2Fjiij38HloLQzcDunXEs5SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;282&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메뉴 더보기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 자세히 보기를 눌러 나오는 메뉴 중 &quot;옵션&quot;을 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFxobz/btsiNvaobwI/tOh4Nl4D0sp7c4g0tFL460/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFxobz/btsiNvaobwI/tOh4Nl4D0sp7c4g0tFL460/img.png&quot; data-alt=&quot;메뉴 더보기 옵션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFxobz/btsiNvaobwI/tOh4Nl4D0sp7c4g0tFL460/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFxobz%2FbtsiNvaobwI%2FtOh4Nl4D0sp7c4g0tFL460%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;284&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메뉴 더보기 옵션&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 폴더 옵션 창이 나오면 &quot;보기&quot;탭으로 들어가서 &quot;확인란을 사용하여 항목 선택&quot;을 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 사진에서는 선택하지 않음.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인을 누르면 적용이 완료됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlwLKr/btsizcQKLfR/E8zvCyYSAJqAhGdm6lMJ90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlwLKr/btsizcQKLfR/E8zvCyYSAJqAhGdm6lMJ90/img.png&quot; data-alt=&quot;항목 확인란2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlwLKr/btsizcQKLfR/E8zvCyYSAJqAhGdm6lMJ90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlwLKr%2FbtsizcQKLfR%2FE8zvCyYSAJqAhGdm6lMJ90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;611&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;항목 확인란2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>윈도우11</category>
      <category>체크박스</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/655</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B011-%EC%B2%B4%ED%81%AC%EB%B0%95%EC%8A%A4#entry655comment</comments>
      <pubDate>Mon, 5 Jun 2023 17:07:56 +0900</pubDate>
    </item>
    <item>
      <title>윈도우10 마이크 설정</title>
      <link>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%EB%A7%88%EC%9D%B4%ED%81%AC-%EC%84%A4%EC%A0%95</link>
      <description>&lt;h2 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;윈도우10 마이크 설정.&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;안녕하세요.&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 윈도우10의 마이크 설정에 대한 글입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;마이크 설정 들어가기.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;마이크 작동하는지 확인하기.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;마이크 설정 들어가기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이크 설정 들어가는 방법 두 가지를 알려드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(둘 다 결과는 같습니다.)&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;1. 첫번째 방법.-화면 오른쪽에 있는 아이콘으로 들어가기.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우10의 오른쪽 하단을 보면 항상 보이는 스피커 아이콘이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 아이콘을 우클릭해서 나오는 소리 설정 열기를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;404&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMAfhn/btqCrPOSaAF/0tikQIYMfBKstv0Ku0NAHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMAfhn/btqCrPOSaAF/0tikQIYMfBKstv0Ku0NAHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMAfhn/btqCrPOSaAF/0tikQIYMfBKstv0Ku0NAHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMAfhn%2FbtqCrPOSaAF%2F0tikQIYMfBKstv0Ku0NAHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;245&quot; data-origin-width=&quot;404&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소리 설정에 들어갔다면 사운드 제어판으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ICCdv/btqCrO3sMpl/5is3w2oBRHbmiOyTAVwSak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ICCdv/btqCrO3sMpl/5is3w2oBRHbmiOyTAVwSak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ICCdv/btqCrO3sMpl/5is3w2oBRHbmiOyTAVwSak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FICCdv%2FbtqCrO3sMpl%2F5is3w2oBRHbmiOyTAVwSak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;626&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 마이크 설정을 하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brTB9A/btqCn1JPDpY/9TMYJPq5WDZmdUgDRc1Ip0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brTB9A/btqCn1JPDpY/9TMYJPq5WDZmdUgDRc1Ip0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brTB9A/btqCn1JPDpY/9TMYJPq5WDZmdUgDRc1Ip0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrTB9A%2FbtqCn1JPDpY%2F9TMYJPq5WDZmdUgDRc1Ip0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;518&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- 중간광고2 --&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;2. 두 번째 방법.-제어판으로 들어가기.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제어판으로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;250&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp66hT/btqCuZJY9i7/tEAAMqjzXSbwq0MQhGLzs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp66hT/btqCuZJY9i7/tEAAMqjzXSbwq0MQhGLzs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp66hT/btqCuZJY9i7/tEAAMqjzXSbwq0MQhGLzs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp66hT%2FbtqCuZJY9i7%2FtEAAMqjzXSbwq0MQhGLzs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;289&quot; data-origin-width=&quot;250&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소리로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kF9YE/btqCtY5CY7S/aKH2rjhsy6NkFiCcj4SpXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kF9YE/btqCtY5CY7S/aKH2rjhsy6NkFiCcj4SpXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kF9YE/btqCtY5CY7S/aKH2rjhsy6NkFiCcj4SpXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkF9YE%2FbtqCtY5CY7S%2FaKH2rjhsy6NkFiCcj4SpXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;633&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까와 같은 설정 화면이 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxH119/btqCuYK4X2s/620rizNLFAFiJh4O2kK0vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxH119/btqCuYK4X2s/620rizNLFAFiJh4O2kK0vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxH119/btqCuYK4X2s/620rizNLFAFiJh4O2kK0vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxH119%2FbtqCuYK4X2s%2F620rizNLFAFiJh4O2kK0vK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;518&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;마이크 작동하는지 확인하기.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 마이크를 &quot;사용&quot;, &quot;기본 장치&quot;로 설정해놓고 해당 마이크를 두 번 눌러 마이크 속성으로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이크 속성--&amp;gt;수신 대기로 들어가서 이 장치로 듣기(기본 재생 장치)로 해놓으면 마이크 소리가 스피커로 나오게 되어 소리를 확인할 수 있게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baI9lg/btqCoRmB5ZA/zpgFF3VLd3NSCpS7PLIDK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baI9lg/btqCoRmB5ZA/zpgFF3VLd3NSCpS7PLIDK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baI9lg/btqCoRmB5ZA/zpgFF3VLd3NSCpS7PLIDK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaI9lg%2FbtqCoRmB5ZA%2FzpgFF3VLd3NSCpS7PLIDK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;473&quot; height=&quot;518&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;추가.&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border: #f3c534 3px double; padding: 10px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보/잡다한것] - 컴퓨터에서 이어폰 마이크 사용하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/345&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보/윈도우] - 마이크 인식은 되는데 마이크가 안될 때&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[유용한정보/잡다한것] - 피시방처럼 스피커, 헤드셋 전환&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>마이크</category>
      <category>설정</category>
      <category>소리</category>
      <category>윈도우10</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/503</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%EB%A7%88%EC%9D%B4%ED%81%AC-%EC%84%A4%EC%A0%95#entry503comment</comments>
      <pubDate>Sat, 3 Jun 2023 21:13:04 +0900</pubDate>
    </item>
    <item>
      <title>윈도우11 요일 표시하기</title>
      <link>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B011-%EC%9A%94%EC%9D%BC-%ED%91%9C%EC%8B%9C%ED%95%98%EA%B8%B0</link>
      <description>&lt;p style=&quot;font-size: 2em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;윈도우 11 작업표시줄에 요일 표시하기.&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;안녕하세요.&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 윈도우 11에서 작업 표시줄에 요일을 표시해 보겠습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;기본 작업표시줄.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;변경하는 방법.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;변경 후 작업표시줄.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4jRes/btsikThRCoZ/R89OKDHQaEGtYpOtZ0Sqd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4jRes/btsikThRCoZ/R89OKDHQaEGtYpOtZ0Sqd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4jRes/btsikThRCoZ/R89OKDHQaEGtYpOtZ0Sqd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4jRes%2FbtsikThRCoZ%2FR89OKDHQaEGtYpOtZ0Sqd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기본 작업표시줄.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 윈도우11을 설치하고 오른쪽 하단의 시간과 날짜가 표시된 부분이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분으로 &quot;시간, 년, 월, 일&quot;을 쉽게 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이 부분에 기본적으로 요일은 보여주지 않습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;391&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmTLDV/btsikUnowKk/EAWKXAzXoiehmHqunXK5AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmTLDV/btsikUnowKk/EAWKXAzXoiehmHqunXK5AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmTLDV/btsikUnowKk/EAWKXAzXoiehmHqunXK5AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmTLDV%2FbtsikUnowKk%2FEAWKXAzXoiehmHqunXK5AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;245&quot; data-origin-width=&quot;391&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마우스를 올리면 요일도 나오지만, 기본적으로 요일도 보여주도록 이 부분을 수정해 보겠습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;변경하는 방법.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정을 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정에 들어가서 &quot;시간 및 언어&quot;를 누르고 &quot;언어 및 지역&quot;을 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xVpHH/btsigDNRfkp/IktOkzpmwa8UGJvgH6kV70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xVpHH/btsigDNRfkp/IktOkzpmwa8UGJvgH6kV70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xVpHH/btsigDNRfkp/IktOkzpmwa8UGJvgH6kV70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxVpHH%2FbtsigDNRfkp%2FIktOkzpmwa8UGJvgH6kV70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;396&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;언어 및 지역&quot;으로 들어왔다면 &quot;기본 언어 설정&quot;을 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eeacXJ/btsilh3Tl9U/ixLBlPVftE8DEftcUcbhM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eeacXJ/btsilh3Tl9U/ixLBlPVftE8DEftcUcbhM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eeacXJ/btsilh3Tl9U/ixLBlPVftE8DEftcUcbhM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeeacXJ%2Fbtsilh3Tl9U%2FixLBlPVftE8DEftcUcbhM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;397&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;기본 언어 설정&quot;을 누르면 이런 식으로 창이 나오는데 &quot;형식&quot; 탭을 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;형식&quot; 탭에 들어갔다면 &quot;추가 설정&quot;을 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LAGzj/btsiliBKLkR/tLNRjp7JOkKucTD0bAqNMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LAGzj/btsiliBKLkR/tLNRjp7JOkKucTD0bAqNMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LAGzj/btsiliBKLkR/tLNRjp7JOkKucTD0bAqNMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLAGzj%2FbtsiliBKLkR%2FtLNRjp7JOkKucTD0bAqNMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;568&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;추가 설정&quot;을 누르면 창이 나오는데 &quot;날짜&quot; 탭을 선택하고 간단한 날짜 부분을 수정하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 수정하면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 다양한 예시입니다. 비슷한 형식으로 변경하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 순서를 바꿔도 될 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. yyyy-MM-dd-ddd&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. yyyy-MM-dd-dddd&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. yyyy-MM-dd-'('ddd')'&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. yyyy-MM-dd-'('dddd')'&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. yyyy-MM-dd-'?'dddd'?'&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs3ZRv/btsijW63fjH/06uA7o2kek1kmczatKwV01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs3ZRv/btsijW63fjH/06uA7o2kek1kmczatKwV01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs3ZRv/btsijW63fjH/06uA7o2kek1kmczatKwV01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs3ZRv%2FbtsijW63fjH%2F06uA7o2kek1kmczatKwV01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;629&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;변경 후 작업표시줄.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 위에 예제 5번으로 수정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요일이 특이하게 잘 표시되네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AUXXt/btsihdPk2UJ/vjYyL9Rnb5DINhznfS4Ts0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AUXXt/btsihdPk2UJ/vjYyL9Rnb5DINhznfS4Ts0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AUXXt/btsihdPk2UJ/vjYyL9Rnb5DINhznfS4Ts0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAUXXt%2FbtsihdPk2UJ%2FvjYyL9Rnb5DINhznfS4Ts0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;229&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;185&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border: #f3c534 3px double; padding: 10px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>유용한정보/윈도우</category>
      <category>윈도우11</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/654</guid>
      <comments>https://intunknown.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B011-%EC%9A%94%EC%9D%BC-%ED%91%9C%EC%8B%9C%ED%95%98%EA%B8%B0#entry654comment</comments>
      <pubDate>Thu, 1 Jun 2023 18:45:16 +0900</pubDate>
    </item>
    <item>
      <title>Unreal5 무기 Collision C++</title>
      <link>https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Unreal5 무기 Collision C++&lt;/b&gt;&lt;/h2&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #ffffff; border: #cbcbcb 3px double; padding: 10px;&quot;&gt;안녕하세요.&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 무기 Collision 설정으로 공격 가능한 상태일 때만 Collision이 활성화되도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/652&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[프로그래밍/언리얼] - Unreal5 맞은 방향 알아내기 CrossProduct(외적) c++&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1683696590653&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Unreal5 맞은 방향 알아내기 CrossProduct(외적) c++&quot; data-og-description=&quot;Unreal5 맞은 방향 알아내기 CrossProduct c++ Dot Product는 두 벡터의 사잇각이 0-180도 사이에 있을 때 값을 계산합니다. 즉, 두 벡터가 평행하면 값이 최대가 되고, 직교하면 0이 되며, 반대 방향이면 값&quot; data-og-host=&quot;intunknown.tistory.com&quot; data-og-source-url=&quot;https://intunknown.tistory.com/652&quot; data-og-url=&quot;https://intunknown.tistory.com/652&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxzzWs/hySAghdhXR/MWOZ65EdIEnD6QhCw8yJgK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/nNUaq/hySAd5Q9OY/3iPFKTddU6XgLnvQGphx9k/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/einiDP/hySykyNUaV/4SToQ6p7CY0uFruNMW5Ze1/img.png?width=1588&amp;amp;height=1330&amp;amp;face=0_0_1588_1330&quot;&gt;&lt;a href=&quot;https://intunknown.tistory.com/652&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://intunknown.tistory.com/652&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxzzWs/hySAghdhXR/MWOZ65EdIEnD6QhCw8yJgK/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/nNUaq/hySAd5Q9OY/3iPFKTddU6XgLnvQGphx9k/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/einiDP/hySykyNUaV/4SToQ6p7CY0uFruNMW5Ze1/img.png?width=1588&amp;amp;height=1330&amp;amp;face=0_0_1588_1330');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 맞은 방향 알아내기 CrossProduct(외적) c++&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Unreal5 맞은 방향 알아내기 CrossProduct c++ Dot Product는 두 벡터의 사잇각이 0-180도 사이에 있을 때 값을 계산합니다. 즉, 두 벡터가 평행하면 값이 최대가 되고, 직교하면 0이 되며, 반대 방향이면 값&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;intunknown.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;Notify추가.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;코드수정.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #0051a1;&quot;&gt;결과.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpLKfJ/btseAe529XH/25cbWuKwugZArwWbEszulK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpLKfJ/btseAe529XH/25cbWuKwugZArwWbEszulK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpLKfJ/btseAe529XH/25cbWuKwugZArwWbEszulK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpLKfJ%2FbtseAe529XH%2F25cbWuKwugZArwWbEszulK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;195&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Notify 추가.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터 공격 montage에 Notify를 추가해서 무기의 Collision을 공격중일때 활성, 공격중이 아닐 때 비활성으로 만들어주겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애니메이션의 공격 모션이 때리는 순간일 때 Collision을 활성화 할 수 있도록 EnableBoxCollision이라는 Notify를 배치하고 때리는 모션이 끝나면 DisableBoxCollision Notify를 배치했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2230&quot; data-origin-height=&quot;1519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SB8zm/btsey5gQkYb/i8OHaOQktJVIQ5mvYmaXNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SB8zm/btsey5gQkYb/i8OHaOQktJVIQ5mvYmaXNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SB8zm/btsey5gQkYb/i8OHaOQktJVIQ5mvYmaXNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSB8zm%2Fbtsey5gQkYb%2Fi8OHaOQktJVIQ5mvYmaXNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;409&quot; data-origin-width=&quot;2230&quot; data-origin-height=&quot;1519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;코드 수정.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weapon.h 에서 때린 액터를 또 때리지 않도록 IgnoreActors를 추가하고, 외부에서 WeaponBox에 접근할 수 있도록 함수를 추가했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1683697332889&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;Item/Item.h&quot;
#include &quot;Weapon.generated.h&quot;

/**
 * 
 */
class UBoxComponent;
UCLASS()
class SLAYER_API AWeapon : public AItem
{
	GENERATED_BODY()
public:
	AWeapon();//생성자.
	void Equip(USceneComponent* InParent,const FName&amp;amp; InSocketName);
	void AttachMeshToSocket(USceneComponent* InParent, const FName&amp;amp; InSocketName);
	TArray&amp;lt;AActor*&amp;gt; IgnoreActors;
protected:
	virtual void BeginPlay() override;
	UFUNCTION()
	void OnBoxOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult&amp;amp; SweepResult);
	
private:
	/*Attack*/
	UPROPERTY(VisibleAnywhere, Category = &quot;Weapon Properties&quot;)
	UBoxComponent* WeaponBox;
	UPROPERTY(VisibleAnywhere)
	USceneComponent* BoxTraceStart;
	UPROPERTY(VisibleAnywhere)
	USceneComponent* BoxTraceEnd;
public:
	FORCEINLINE UBoxComponent* GetWeaponBox() const { return WeaponBox; }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weapon.cpp에서는 OnBoxOverlap이벤트에 때린것을 또 때리지 않도록 for문을 통해 이전에 Hit가 되었던 것들을 ActorToIgnore에 넣어주었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1683697486977&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void AWeapon::OnBoxOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult&amp;amp; SweepResult)
{
	const FVector Start = BoxTraceStart-&amp;gt;GetComponentLocation();
	const FVector End = BoxTraceEnd-&amp;gt;GetComponentLocation();
	TArray&amp;lt;AActor*&amp;gt; ActorsToIgnore;
	ActorsToIgnore.Add(this);
	//#include &quot;Kismet/KismetSystemLibrary.h&quot;
	FHitResult BoxHit;
	//이전 충돌했던 것 빼기.
	for (AActor* a : IgnoreActors) {
		ActorsToIgnore.AddUnique(a);
	}
	UKismetSystemLibrary::BoxTraceSingle(this,Start,End, FVector(5.f, 5.f, 5.f),BoxTraceStart-&amp;gt;GetComponentRotation(), ETraceTypeQuery::TraceTypeQuery1,
		false,ActorsToIgnore,EDrawDebugTrace::None, BoxHit,true);
	IgnoreActors.AddUnique(BoxHit.GetActor());
	
	if (BoxHit.GetActor()) {
		/*Actor를 때렸을 때*/
		IHitInterface* HitInterface = Cast&amp;lt;IHitInterface&amp;gt;(BoxHit.GetActor());
		if (HitInterface) {
			HitInterface-&amp;gt;GetHit(BoxHit.ImpactPoint);
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SlayerCharacter.h 에서는 Enable, Disable어쩌고 Notify가 들어왔을 때 Collision을 설정할 함수를 선언하고, 저번에 실수로 빼먹은 것으로 생각되는 Weapon변수를 선언합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1683697935504&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;GameFramework/Character.h&quot;
#include &quot;InputActionValue.h&quot;
#include &quot;CharacterTypes.h&quot;
#include &quot;SlayerCharacter.generated.h&quot;
/*input*/
class UInputMappingContext;
class UInputAction;
/*camera, spring arm*/
class USpringArmComponent;
class UCameraComponent;
/*Equip*/
class AItem;
class AWeapon;
/*Attack*/
class UAnimMontage;
UCLASS()
class SLAYER_API ASlayerCharacter : public ACharacter
{
	GENERATED_BODY()
public:
	ASlayerCharacter();
	virtual void Tick(float DeltaTime) override;
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
	//UFUNCTION(BlueprintCallable)
	void SetWeaponCollision(ECollisionEnabled::Type CollisionEnabled);
protected:
	virtual void BeginPlay() override;
	/*Enhanced input*/ 
	//#include &quot;InputActionValue.h&quot;
	UPROPERTY(EditAnywhere, Category=Input)
	UInputMappingContext* SlayerContext;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* MovementAction;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* JumpAction;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* LookAction;
	void Look(const FInputActionValue&amp;amp; value);
	void Move(const FInputActionValue&amp;amp; value);
	void Jump() override;

	//Equip
	UPROPERTY(VisibleAnywhere, Category = Weapon)
	AWeapon* EquippedWeapon;
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* EkeyAction;
	void EkeyPress();
	//Attack
	UPROPERTY(EditAnywhere, Category = Input)
	UInputAction* AttackAction;
	void Attack();
	void PlayAttackMontage();
private:
	/*camera,spring arm*/
	UPROPERTY(VisibleAnywhere)
	USpringArmComponent* CameraBoom;
	UPROPERTY(VisibleAnywhere)
	UCameraComponent* ViewCamera;
	//Equip
	UPROPERTY(VisibleInstanceOnly)
	AItem* OverlappingItem;
	//Attack
	/*Animation montages*/
	UPROPERTY(EditDefaultsOnly, Category = Montages)
	UAnimMontage* AttackMontage;
	//Attack State
	//#include &quot;CharacterTypes.h&quot;
	ECharacterState CharacterState = ECharacterState::ECS_Unequipped;
	//UPROPERTY(BlueprintReadWrite, meta = (AllowPrivateAccess = &quot;true&quot;))
	EActionState ActionState = EActionState::EAS_Unoccupied;
public:
	FORCEINLINE void SetOverlappingItem(AItem* Item) { OverlappingItem = Item; }
	FORCEINLINE EActionState SetAttackEndState(){ return ActionState = EActionState::EAS_Unoccupied; }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SlayerCharacter.cpp 의 EKeyPress에서&amp;nbsp; 오른손에 장착한 Weapon도 EquippedWeapon에 넣어주고, SetWeaponCollision함수도 정의합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1683698117340&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.
#include &quot;Character/SlayerCharacter.h&quot;
/*input*/
#include &quot;EnhancedInputSubsystems.h&quot;
#include &quot;EnhancedInputComponent.h&quot;
/*Rotate*/
#include &quot;GameFramework/CharacterMovementComponent.h&quot;
/*camera, spring arm*/
#include &quot;GameFramework/SpringArmComponent.h&quot;
#include &quot;Camera/CameraComponent.h&quot;
/*Equip*/
#include &quot;Item/Weapons/Weapon.h&quot;
#include &quot;Components/BoxComponent.h&quot;
/*Attack*/
//#include &quot;Animation/AnimMontage.h&quot;
#include &quot;Animation/AnimInstance.h&quot;
// Sets default values
ASlayerCharacter::ASlayerCharacter()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	/*spring arm*/
	//#include &quot;GameFramework/SpringArmComponent.h&quot;필요
	CameraBoom = CreateDefaultSubobject&amp;lt;USpringArmComponent&amp;gt;(TEXT(&quot;CameraBoom&quot;));
	CameraBoom-&amp;gt;SetupAttachment(GetRootComponent());
	CameraBoom-&amp;gt;TargetArmLength = 300.f;
	CameraBoom-&amp;gt;bUsePawnControlRotation = true;
	/*CharacterRotate*/
	bUseControllerRotationPitch = false;
	bUseControllerRotationRoll = false;
	bUseControllerRotationYaw = false;
	//#include &quot;GameFramework/CharacterMovementComponent.h&quot; 추가
	GetCharacterMovement()-&amp;gt;bOrientRotationToMovement = true;
	/*Camera*/
	ViewCamera = CreateDefaultSubobject&amp;lt;UCameraComponent&amp;gt;(TEXT(&quot;ViewCamera&quot;));
	ViewCamera-&amp;gt;SetupAttachment(CameraBoom);
}

// Called when the game starts or when spawned
void ASlayerCharacter::BeginPlay()
{
	Super::BeginPlay();
	//#include &quot;EnhancedInputSubsystems.h&quot; 추가 필요.
	if (APlayerController* PlayerController = Cast&amp;lt;APlayerController&amp;gt;(GetController())) {
		if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem&amp;lt;UEnhancedInputLocalPlayerSubsystem&amp;gt;(PlayerController-&amp;gt;GetLocalPlayer())) {
			Subsystem-&amp;gt;AddMappingContext(SlayerContext, 0);
		}
	}
}

void ASlayerCharacter::Look(const FInputActionValue&amp;amp; value)
{
	const FVector2D LookVector = value.Get&amp;lt;FVector2D&amp;gt;();
	AddControllerYawInput(LookVector.X);//도리도리
	AddControllerPitchInput(-LookVector.Y);//끄덕끄덕
}

void ASlayerCharacter::Move(const FInputActionValue&amp;amp; value)
{
	if (ActionState != EActionState::EAS_Unoccupied) return;
	const FVector2D MovementVector = value.Get&amp;lt;FVector2D&amp;gt;();
	const FRotator Rotation = Controller-&amp;gt;GetControlRotation();
	const FRotator YawRotation(0.f, Rotation.Yaw, 0.f);
	const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
	AddMovementInput(ForwardDirection, MovementVector.Y);//이동
	const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
	AddMovementInput(RightDirection, MovementVector.X);//이동
}

void ASlayerCharacter::Jump()
{
	Super::Jump(); //Character.h에 있는 Jump사용.
}

void ASlayerCharacter::SetWeaponCollision(ECollisionEnabled::Type CollisionEnabled)
{
	if (EquippedWeapon &amp;amp;&amp;amp; EquippedWeapon-&amp;gt;GetWeaponBox()) {
		EquippedWeapon-&amp;gt;GetWeaponBox()-&amp;gt;SetCollisionEnabled(CollisionEnabled);
		UE_LOG(LogTemp, Log, TEXT(&quot;SetWeaponCollision&quot;));
		EquippedWeapon-&amp;gt;IgnoreActors.Empty();
	}
}

void ASlayerCharacter::EkeyPress()
{
	/*Equip*/
	//#include &quot;Item/Weapons/Weapon.h&quot;
	if (AWeapon* Weapon = Cast&amp;lt;AWeapon&amp;gt;(OverlappingItem)) {
		Weapon-&amp;gt;Equip(GetMesh(),FName(&quot;RightHandSocket&quot;));
		OverlappingItem = nullptr;
		//무기장착.
		CharacterState = ECharacterState::ECS_EquippedOneHandedWeapon;
		EquippedWeapon = Weapon;
	}
}

/*Attack*/
void ASlayerCharacter::Attack()
{
	//공격중이 아니고, 무기 장착중.
	if (ActionState == EActionState::EAS_Unoccupied &amp;amp;&amp;amp; CharacterState != ECharacterState::ECS_Unequipped) {
		PlayAttackMontage();
		ActionState = EActionState::EAS_Attacking;
	}
}

void ASlayerCharacter::PlayAttackMontage()
{
	//#include &quot;Animation/AnimInstance.h&quot;
	UAnimInstance* AnimInstance = GetMesh()-&amp;gt;GetAnimInstance();
	if (AnimInstance &amp;amp;&amp;amp; AttackMontage) {
		AnimInstance-&amp;gt;Montage_Play(AttackMontage);
		const int32 Selection = FMath::RandRange(0,AttackMontage-&amp;gt;GetNumSections()-1);
		GEngine-&amp;gt;AddOnScreenDebugMessage(1, 2.f, FColor::Cyan, FString::Printf(TEXT(&quot;GetSection: %d&quot;), Selection));
		FName SectionName = FName();
		switch (Selection) {
		case 0:
			SectionName = FName(&quot;Attack1&quot;);
			break;
		case 1:
			SectionName = FName(&quot;Attack2&quot;);
			break;
		case 2:
			SectionName = FName(&quot;Attack3&quot;);
			break;
		case 3:
			SectionName = FName(&quot;Attack4&quot;);
			break;
		case 4:
			SectionName = FName(&quot;Attack5&quot;);
			break;
		case 5:
			SectionName = FName(&quot;Attack6&quot;);
			break;
		case 6:
			SectionName = FName(&quot;Attack7&quot;);
			break;
		case 7:
			SectionName = FName(&quot;Attack8&quot;);
			break;
		//case 8:
		//	SectionName = FName(&quot;Attack9&quot;);
		//	break;
		default:
			break;
		}
		//GEngine-&amp;gt;AddOnScreenDebugMessage(2, 2.f, FColor::Red, SectionName.ToString());
		AnimInstance-&amp;gt;Montage_JumpToSection(SectionName, AttackMontage);
	}
}

// Called every frame
void ASlayerCharacter::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}

// Called to bind functionality to input
void ASlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	//#include &quot;EnhancedInputComponent.h&quot;추가.
	if (UEnhancedInputComponent* EnhancedInputComponent = CastChecked&amp;lt;UEnhancedInputComponent&amp;gt;(PlayerInputComponent)) {
		EnhancedInputComponent-&amp;gt;BindAction(MovementAction, ETriggerEvent::Triggered, this, &amp;amp;ASlayerCharacter::Move);
		EnhancedInputComponent-&amp;gt;BindAction(JumpAction, ETriggerEvent::Triggered, this, &amp;amp;ASlayerCharacter::Jump);
		EnhancedInputComponent-&amp;gt;BindAction(LookAction, ETriggerEvent::Triggered, this, &amp;amp;ASlayerCharacter::Look);
		EnhancedInputComponent-&amp;gt;BindAction(EkeyAction, ETriggerEvent::Triggered, this, &amp;amp;ASlayerCharacter::EkeyPress);
		EnhancedInputComponent-&amp;gt;BindAction(AttackAction, ETriggerEvent::Triggered, this, &amp;amp;ASlayerCharacter::Attack);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SlayerAnimInstance.h에서 Notify이벤트를 선언합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1683698176492&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include &quot;CoreMinimal.h&quot;
#include &quot;Animation/AnimInstance.h&quot;
#include &quot;SlayerAnimInstance.generated.h&quot;

/**
 * 
 */
UCLASS()
class SLAYER_API USlayerAnimInstance : public UAnimInstance
{
	GENERATED_BODY()
public:
	virtual void NativeInitializeAnimation() override;
	virtual void NativeUpdateAnimation(float DeltaTime) override;
	UPROPERTY(BlueprintReadOnly)
	class ASlayerCharacter* SlayerCharacter;
	UPROPERTY(BlueprintReadOnly, Category = Movement)
	class UCharacterMovementComponent* SlayerCharacterMovement;
	UPROPERTY(BlueprintReadOnly, Category = Movement)
	float GroundSpeed;
	UPROPERTY(BlueprintReadOnly, Category = Movement)
	bool isFalling;
	UFUNCTION()
	void AnimNotify_AttackEnd();
	UFUNCTION()
	void AnimNotify_EnableBoxCollision();
	UFUNCTION()
	void AnimNotify_DisableBoxCollision();
	
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SlayerAnimInstace.cpp에서 EnableBoxCollision Notify가 발생하면 Collision이 QueryOnly가 되도록 하고, 공격이 끝나면(DisalbeBoxCollision) Collision을 NoCollision이 되도록 정의하였습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1683698294510&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Fill out your copyright notice in the Description page of Project Settings.
#include &quot;Character/SlayerAnimInstance.h&quot;
#include &quot;Character/SlayerCharacter.h&quot;
#include &quot;GameFramework/CharacterMovementComponent.h&quot;
#include &quot;Kismet/KismetMathLibrary.h&quot;
void USlayerAnimInstance::NativeInitializeAnimation()
{
	Super::NativeInitializeAnimation();
	SlayerCharacter = Cast&amp;lt;ASlayerCharacter&amp;gt;(TryGetPawnOwner());
	if(SlayerCharacter){
		//#include &quot;GameFramework/CharacterMovementComponent.h&quot; 필요.
		SlayerCharacterMovement = SlayerCharacter-&amp;gt;GetCharacterMovement();
	}
}
void USlayerAnimInstance::NativeUpdateAnimation(float DeltaTime)
{
	Super::NativeUpdateAnimation(DeltaTime);
	if (SlayerCharacterMovement) {
		//#include &quot;Kismet/KismetMathLibrary.h&quot;
		GroundSpeed = UKismetMathLibrary::VSizeXY(SlayerCharacterMovement-&amp;gt;Velocity);
		isFalling = SlayerCharacterMovement-&amp;gt;IsFalling();
	}
}
void USlayerAnimInstance::AnimNotify_AttackEnd()
{
	SlayerCharacter-&amp;gt;SetAttackEndState();
}
void USlayerAnimInstance::AnimNotify_EnableBoxCollision()
{
	SlayerCharacter-&amp;gt;SetWeaponCollision(ECollisionEnabled::QueryOnly);
}
void USlayerAnimInstance::AnimNotify_DisableBoxCollision()
{
	SlayerCharacter-&amp;gt;SetWeaponCollision(ECollisionEnabled::NoCollision);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;결과.&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 수정하니 한번 공격에 여러 번 맞는 문제나 공격도 안 했는데 Hit Reaction애니메이션이 나가는 문제는 사라졌습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 이거 계속 작성하면 코드 수정이랑 가독성이 좀 아쉽기도 하고, 어느 정도 힌트는 될 수 있다고 생각하지만 코드 자체는 저만 알아볼 수 있는 코드가 되어버려서...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블로그에 계속 이런 식으로 쓰는 것은 생각 좀 다시 해봐야 될 것 같아요.&lt;/p&gt;</description>
      <category>프로그래밍/언리얼</category>
      <category>unreal</category>
      <author>추향</author>
      <guid isPermaLink="true">https://intunknown.tistory.com/653</guid>
      <comments>https://intunknown.tistory.com/entry/Unreal5-%EB%AC%B4%EA%B8%B0-Collision-C#entry653comment</comments>
      <pubDate>Wed, 10 May 2023 15:09:57 +0900</pubDate>
    </item>
  </channel>
</rss>