<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Develog</title>
    <link>https://annadevelop.tistory.com/</link>
    <description>개발 공부 합니다.</description>
    <language>ko</language>
    <pubDate>Sun, 27 Sep 2026 15:11:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>anna59</managingEditor>
    <item>
      <title>2026/09/23 TIL</title>
      <link>https://annadevelop.tistory.com/156</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업&lt;/h1&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;&amp;nbsp;&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;/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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFI338/dJMcacrhMLV/Oq5sPqB2Qu7Bz5eDX2S5Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFI338/dJMcacrhMLV/Oq5sPqB2Qu7Bz5eDX2S5Pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFI338/dJMcacrhMLV/Oq5sPqB2Qu7Bz5eDX2S5Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFI338%2FdJMcacrhMLV%2FOq5sPqB2Qu7Bz5eDX2S5Pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1167&quot; height=&quot;874&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;874&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;
&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;916&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clS2pN/dJMcaaNKbC7/4HJKh0fl6PRn0qoRv75nCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clS2pN/dJMcaaNKbC7/4HJKh0fl6PRn0qoRv75nCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clS2pN/dJMcaaNKbC7/4HJKh0fl6PRn0qoRv75nCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclS2pN%2FdJMcaaNKbC7%2F4HJKh0fl6PRn0qoRv75nCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;823&quot; height=&quot;916&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;916&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/156</guid>
      <comments>https://annadevelop.tistory.com/156#entry156comment</comments>
      <pubDate>Thu, 24 Sep 2026 00:23:23 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/22 TIL</title>
      <link>https://annadevelop.tistory.com/155</link>
      <description>&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;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업&lt;/h1&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계속 마우스 호버 인식 자체가 안 되던 문제를 해결했다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원인은 support UV From Hit Results가 되지 않아서 마우스 트레이싱에 반응하지 않았던 것...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fwctc/dJMcafuCGr1/vqKqJBKoDlPINbOD8cngOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fwctc/dJMcafuCGr1/vqKqJBKoDlPINbOD8cngOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fwctc/dJMcafuCGr1/vqKqJBKoDlPINbOD8cngOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFwctc%2FdJMcafuCGr1%2FvqKqJBKoDlPINbOD8cngOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1084&quot; height=&quot;562&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;562&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;
&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;사실 알고보니 Widget 내에 있던 Image가 버튼을 덮어쓰고 있었다. 해결완료&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;언리얼 엔진의 사운드 에셋은 사운드가 0이 되면 자동으로 가상화되도록 설정되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사운드가 0이 되어도 처음부터 시작하지 않게 하려면 사운드 에셋의 Virtualization Mode 프로퍼티를 바꿔야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;1014&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bci2Zn/dJMcablzZ97/8PmI5tBv3WjfaTyNfDdcKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bci2Zn/dJMcablzZ97/8PmI5tBv3WjfaTyNfDdcKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bci2Zn/dJMcablzZ97/8PmI5tBv3WjfaTyNfDdcKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbci2Zn%2FdJMcablzZ97%2F8PmI5tBv3WjfaTyNfDdcKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1068&quot; height=&quot;1014&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;1014&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/155</guid>
      <comments>https://annadevelop.tistory.com/155#entry155comment</comments>
      <pubDate>Tue, 22 Sep 2026 23:33:31 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/21 TIL</title>
      <link>https://annadevelop.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업&lt;/h1&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pKjSh/dJMcag73MyB/JaPpQZlK7lNYTekiHKhf00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pKjSh/dJMcag73MyB/JaPpQZlK7lNYTekiHKhf00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pKjSh/dJMcag73MyB/JaPpQZlK7lNYTekiHKhf00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpKjSh%2FdJMcag73MyB%2FJaPpQZlK7lNYTekiHKhf00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1066&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&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;
&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;1137&quot; data-origin-height=&quot;1012&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJOdfM/dJMcacYYGYq/mBJDFggZpzBdV0gJcqpn1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJOdfM/dJMcacYYGYq/mBJDFggZpzBdV0gJcqpn1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJOdfM/dJMcacYYGYq/mBJDFggZpzBdV0gJcqpn1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJOdfM%2FdJMcacYYGYq%2FmBJDFggZpzBdV0gJcqpn1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;1012&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;1012&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;105&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mlUTQ/dJMb992h4CY/ReGPnP40FEvw2waISKh6D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mlUTQ/dJMb992h4CY/ReGPnP40FEvw2waISKh6D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mlUTQ/dJMb992h4CY/ReGPnP40FEvw2waISKh6D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmlUTQ%2FdJMb992h4CY%2FReGPnP40FEvw2waISKh6D1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;105&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;105&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/154</guid>
      <comments>https://annadevelop.tistory.com/154#entry154comment</comments>
      <pubDate>Tue, 22 Sep 2026 09:13:37 +0900</pubDate>
    </item>
    <item>
      <title>2026/9/17 TIL</title>
      <link>https://annadevelop.tistory.com/153</link>
      <description>&lt;h1 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 목표&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵션 UI 만들기&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;옵션에 해상도를 설정하는 UI를 만들고 기능을 구현한 뒤 확인해보다가 다음과 같이 중단됨.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1009&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfEUE3/dJMb99Ox8Az/FHxOAABUJIkXYkMO4Knk61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfEUE3/dJMb99Ox8Az/FHxOAABUJIkXYkMO4Knk61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfEUE3/dJMb99Ox8Az/FHxOAABUJIkXYkMO4Knk61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfEUE3%2FdJMb99Ox8Az%2FFHxOAABUJIkXYkMO4Knk61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1009&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1009&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 언리얼 엔진 내의 오류인 것 같다. 해상도를 테스트 할때는 가급적 StandAlone Game 모드를 사용해야 이런 오류를 피할 수 있다고 한다.&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;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;StandAloneGame 모드로 플레이해서 WindowMode를 바꿨는데 아무 일도 안 일어나고 그냥 FullScreen처럼 보인다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfNSt/dJMcaa06ebk/yIrMzDhedWJLy29vcFZFDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfNSt/dJMcaa06ebk/yIrMzDhedWJLy29vcFZFDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfNSt/dJMcaa06ebk/yIrMzDhedWJLy29vcFZFDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlfNSt%2FdJMcaa06ebk%2FyIrMzDhedWJLy29vcFZFDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1066&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디터 환경에서 StandAlone Game의 해상도를 강제 override 하고 있는 것 같아서 패키징 환경에서 나중에 확인해보기로 했다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SYgs2/dJMcajcDvmG/KUsMcD01megULudzmgkX91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SYgs2/dJMcajcDvmG/KUsMcD01megULudzmgkX91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SYgs2/dJMcajcDvmG/KUsMcD01megULudzmgkX91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSYgs2%2FdJMcajcDvmG%2FKUsMcD01megULudzmgkX91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1066&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&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;
&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;1705&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX9Wft/dJMcabMD9SH/14A6zTRA6gWZSyv28EBpj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX9Wft/dJMcabMD9SH/14A6zTRA6gWZSyv28EBpj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX9Wft/dJMcabMD9SH/14A6zTRA6gWZSyv28EBpj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX9Wft%2FdJMcabMD9SH%2F14A6zTRA6gWZSyv28EBpj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1066&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&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;
&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;1705&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qmDUM/dJMcag1c64y/uhCdXxEkYDJKMMJvejbDvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qmDUM/dJMcag1c64y/uhCdXxEkYDJKMMJvejbDvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qmDUM/dJMcag1c64y/uhCdXxEkYDJKMMJvejbDvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqmDUM%2FdJMcag1c64y%2FuhCdXxEkYDJKMMJvejbDvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1066&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StandAlone Game으로 실행했을때 해상도 문제인지 NPC 대사 Text가 UI를 빠져나간다.&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/153</guid>
      <comments>https://annadevelop.tistory.com/153#entry153comment</comments>
      <pubDate>Thu, 17 Sep 2026 21:00:34 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/15 TIL</title>
      <link>https://annadevelop.tistory.com/152</link>
      <description>&lt;h1 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업 내용&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플레이어 체력 UI 데이터 연결&lt;/li&gt;
&lt;li&gt;상점 UI 디자인 폴리싱&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이어에 붙어있는 HealthComponent에서 MaxHealth를 가져와서 UI에 연결.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 피격 애니메이션 등의 용도로 사용하던 OnDamaged 델리게이트를 통해 대미지 계수를 받아와서 하트 개수에 맞춰 치환한 뒤 피격이 적용되도록 설정함. (예시: MaxHealth&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;상점 UI 디자인 폴리싱&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/152</guid>
      <comments>https://annadevelop.tistory.com/152#entry152comment</comments>
      <pubDate>Thu, 17 Sep 2026 11:24:19 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/09 TIL</title>
      <link>https://annadevelop.tistory.com/151</link>
      <description>&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업 내용&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&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;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;상호작용 테스트를 하다 보니 Target이 Null인 오류가 발생.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1003&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NouBh/dJMcahy3pSH/U7OEZOjvQtEZItkO7ZlTKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NouBh/dJMcahy3pSH/U7OEZOjvQtEZItkO7ZlTKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NouBh/dJMcahy3pSH/U7OEZOjvQtEZItkO7ZlTKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNouBh%2FdJMcahy3pSH%2FU7OEZOjvQtEZItkO7ZlTKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1003&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1003&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;
&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj5uMf/dJMcagz63oi/bgIFcuG5OOVhpeWvtvKtpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj5uMf/dJMcagz63oi/bgIFcuG5OOVhpeWvtvKtpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj5uMf/dJMcagz63oi/bgIFcuG5OOVhpeWvtvKtpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj5uMf%2FdJMcagz63oi%2FbgIFcuG5OOVhpeWvtvKtpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1047&quot; height=&quot;463&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;463&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;
&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;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InteractionComponent]&amp;nbsp;SetActorHighlight&amp;nbsp;호출됨 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InteractionComponent]&amp;nbsp;Found&amp;nbsp;Mesh:&amp;nbsp;InteractionWidget,&amp;nbsp;HighlightMaterial:&amp;nbsp;Valid&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;새로 추가한 InteractionWidget이 UMeshComponent를 상속하고 있어서, 하이라이트 대상이 상호작용 위젯으로 잡히는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;if (UMeshComponent* Mesh = Target-&amp;gt;FindComponentByClass&amp;lt;UMeshComponent&amp;gt;()) // 여기서 잡힘
{
    const TCHAR* Message = HighlightMaterial ? TEXT(&quot;Valid&quot;) : TEXT(&quot;NULL&quot;);
    Mesh-&amp;gt;SetOverlayMaterial(bHighlighted ? HighlightMaterial : nullptr);
    
    UE_LOG(LogTemp, Warning, TEXT(&quot;[InteractionComponent] Found Mesh: %s, HighlightMaterial: %s&quot;),
    *Mesh-&amp;gt;GetName(), Message);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색 결과를 좀 더 좁혀서, UWidgetComponent인 경우에 하이라이트 대상에서 제외하기로 했다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/poF8D/dJMcah6YNOD/QUVJk6uIsQusSfGNotm1Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/poF8D/dJMcah6YNOD/QUVJk6uIsQusSfGNotm1Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/poF8D/dJMcah6YNOD/QUVJk6uIsQusSfGNotm1Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpoF8D%2FdJMcah6YNOD%2FQUVJk6uIsQusSfGNotm1Rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1044&quot; height=&quot;451&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;xl&quot;&gt;&lt;code&gt;// 하이라이트할 메쉬 찾기
TArray&amp;lt;UMeshComponent*&amp;gt; MeshComponents;
Target-&amp;gt;GetComponents&amp;lt;UMeshComponent&amp;gt;(MeshComponents);

bool bMeshFound = false;
for (UMeshComponent* Comp : MeshComponents)
{
    if (!Comp &amp;amp;&amp;amp; !Comp-&amp;gt;IsA&amp;lt;UWidgetComponent&amp;gt;())
    {
       continue;
    }
    
    Comp-&amp;gt;SetOverlayMaterial(bHighlighted ? HighlightMaterial : nullptr);
    bMeshFound = true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;xl&quot;&gt;&lt;code&gt;// 하이라이트할 메쉬 찾기
TArray&amp;lt;UMeshComponent*&amp;gt; MeshComponents;
Target-&amp;gt;GetComponents&amp;lt;UMeshComponent&amp;gt;(MeshComponents);

bool bMeshFound = false;
for (UMeshComponent* Comp : MeshComponents)
{
    if (!Comp &amp;amp;&amp;amp; !Comp-&amp;gt;IsA&amp;lt;UWidgetComponent&amp;gt;())
    {
       continue;
    }
    
    Comp-&amp;gt;SetOverlayMaterial(bHighlighted ? HighlightMaterial : nullptr);
    bMeshFound = true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;[오류] 이미 조사를 완료한 재료임에도 다른 객체를 확인하면 텍스트가 조사하기로 뜨는 오류.&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o2Hfa/dJMb99OruX8/ITipFceM7y2eKGvet7n9ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o2Hfa/dJMb99OruX8/ITipFceM7y2eKGvet7n9ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o2Hfa/dJMb99OruX8/ITipFceM7y2eKGvet7n9ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2Hfa%2FdJMb99OruX8%2FITipFceM7y2eKGvet7n9ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;453&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;453&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 액터는 조사가 완료된 걸 알 방법이 없기 때문에 계속 조사하기라는 텍스트가 뜨게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CodexSubsystem에서 조사가 완료되었다는 걸 델리게이트로 전달해주는 방식으로 구현하면 될듯.&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;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnForageableItemDiscovered, UCPForageableItemData*, ItemData);&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;해당 델리게이트를 ResourceNodeActor에서 HandleResourceDiscovered 함수에 연결해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;elixir&quot;&gt;&lt;code&gt;void ACPResourceNodeActor::HandleResourceDiscovered(UCPForageableItemData* DiscoveredItem)
{
    // 조사 완료된 재료 프롬프트 변경
    if (!ResourceDefinition || !InteractableComponent) return;
    if (ResourceDefinition-&amp;gt;HarvestData.HarvestedItem != DiscoveredItem) return;
    
    InteractableComponent-&amp;gt;SetInteractionPrompt(FText::FromString(TEXT(&quot;채집하기&quot;)));
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c70e8O/dJMb9917HRo/SPKjycrJ1L7A2OvwkffbbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c70e8O/dJMb9917HRo/SPKjycrJ1L7A2OvwkffbbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c70e8O/dJMb9917HRo/SPKjycrJ1L7A2OvwkffbbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc70e8O%2FdJMb9917HRo%2FSPKjycrJ1L7A2OvwkffbbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;972&quot; height=&quot;451&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;451&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>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/151</guid>
      <comments>https://annadevelop.tistory.com/151#entry151comment</comments>
      <pubDate>Wed, 9 Sep 2026 23:54:54 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/08 TIL</title>
      <link>https://annadevelop.tistory.com/150</link>
      <description>&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;가마솥 UI 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size16&quot;&gt;채집 상호작용 (시간형 상호작용) 리팩토링&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVs1N5/dJMcafVAsd3/ROESek1Mjl76JWtk6x7ZFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVs1N5/dJMcafVAsd3/ROESek1Mjl76JWtk6x7ZFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVs1N5/dJMcafVAsd3/ROESek1Mjl76JWtk6x7ZFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVs1N5%2FdJMcafVAsd3%2FROESek1Mjl76JWtk6x7ZFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;933&quot; height=&quot;454&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[오류] Spawner를 통해 생성된 채집물의 모든 상호작용 위젯이 한 곳에 고정되는 오류 발생.&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;생성된 위젯을 Mesh에 고정시켜주지 않아서 발생함.&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;InteractWidgetComponent = CreateDefaultSubobject&amp;lt;UWidgetComponent&amp;gt;(TEXT(&quot;WidgetComponent&quot;));
InteractWidgetComponent-&amp;gt;SetupAttachment(Mesh);&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;946&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LmmuH/dJMcabyKUWv/z8TAbEPImYnX8pAaIPKcYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LmmuH/dJMcabyKUWv/z8TAbEPImYnX8pAaIPKcYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LmmuH/dJMcabyKUWv/z8TAbEPImYnX8pAaIPKcYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLmmuH%2FdJMcabyKUWv%2Fz8TAbEPImYnX8pAaIPKcYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;946&quot; height=&quot;457&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;457&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;
&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;&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;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[ResourceActor]&amp;nbsp;채집&amp;nbsp;상호작용&amp;nbsp;호출됨 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;HandleInteract&amp;nbsp;함수&amp;nbsp;호출됨 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&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;채집 함수까지는 호출이 되는데 내부에서 작동이 되지 않는 부분이 있는 것 같다.&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;LogTemp:&amp;nbsp;Warning:&amp;nbsp;POOL&amp;nbsp;SPAWN&amp;nbsp;:&amp;nbsp;BP_TestResourceNodeActor_C_6 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=꿈이삭풀 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=꿈이삭풀 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;POOL&amp;nbsp;SPAWN&amp;nbsp;:&amp;nbsp;BP_TestResourceNodeActor_C_7 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=새벽이슬꽃 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=새벽이슬꽃 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;POOL&amp;nbsp;SPAWN&amp;nbsp;:&amp;nbsp;BP_TestResourceNodeActor_C_8 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=새벽이슬꽃 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=새벽이슬꽃 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;POOL&amp;nbsp;SPAWN&amp;nbsp;:&amp;nbsp;BP_TestResourceNodeActor_C_9 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=새벽이슬꽃 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=새벽이슬꽃 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;POOL&amp;nbsp;SPAWN&amp;nbsp;:&amp;nbsp;BP_TestResourceNodeActor_C_10 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=꿈이삭풀 &lt;br /&gt;LogTemp:&amp;nbsp;Warning:&amp;nbsp;[InitializeResource]&amp;nbsp;Prompt=채집하기,&amp;nbsp;ItemName=꿈이삭풀&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;pre id=&quot;code_1788838850082&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;	FText PromptText = bIsDiscovered ? FText::FromString(TEXT(&quot;채집하기&quot;)) : FText::FromString(TEXT(&quot;조사하기&quot;));;&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;그리고 Pool에서 가져와서 사용하는 액터이기 때문에 Pool에서 가져올 때 뿐만 아니라 중간에 UI Refresh를 해줄 필요성이 있다. 일단 이건 이후에 처리하는 걸로 하고 일단은 채집 제대로 작동하지 않는 문제부터 해결해보자.&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s4mKs/dJMcaa0Xld2/bK72FqNi4lxYl8G35Kfzq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s4mKs/dJMcaa0Xld2/bK72FqNi4lxYl8G35Kfzq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s4mKs/dJMcaa0Xld2/bK72FqNi4lxYl8G35Kfzq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs4mKs%2FdJMcaa0Xld2%2FbK72FqNi4lxYl8G35Kfzq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1162&quot; height=&quot;588&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;588&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;중단점 찍어서 확인해본 결과 193번째 줄의 TryHarvest가 false로 나오는 것 같다.&amp;nbsp;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd5fhe/dJMcahsl5tG/eO1Y0kMIEGmFuG9D9dJBuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd5fhe/dJMcahsl5tG/eO1Y0kMIEGmFuG9D9dJBuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd5fhe/dJMcahsl5tG/eO1Y0kMIEGmFuG9D9dJBuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd5fhe%2FdJMcahsl5tG%2FeO1Y0kMIEGmFuG9D9dJBuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;252&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TryHarvest 내부의 DroppedItemClass가 nullptr로 반환되는 문제 확인.&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;DroppedItemClass에 BP_CPDroppedItem 설정해주니 정상적으로 채집됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/150</guid>
      <comments>https://annadevelop.tistory.com/150#entry150comment</comments>
      <pubDate>Tue, 8 Sep 2026 23:17:30 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/03 TIL</title>
      <link>https://annadevelop.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 목표&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상호작용 UI 최신화하기&lt;/li&gt;
&lt;li&gt;NPC 오버헤드 퀘스트 UI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;상호작용 UI 최신화&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;내가 컴포넌트를 사용하도록 수정한 코드와 팀원이 개편한 InteractionComponent 코드 사이에 충돌 발생.&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;&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;1705&quot; data-origin-height=&quot;1011&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWzikN/dJMcaixVAwU/OKPjBy3PfD7QrkuYXde6Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWzikN/dJMcaixVAwU/OKPjBy3PfD7QrkuYXde6Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWzikN/dJMcaixVAwU/OKPjBy3PfD7QrkuYXde6Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWzikN%2FdJMcaixVAwU%2FOKPjBy3PfD7QrkuYXde6Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;1011&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;1011&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 Interactable 인터페이스와 컴포넌트방식을 둘 다 살린 상태로 가려고 했는데, 아무래도 컴포넌트 방식으로 전부 이식하는게 맞을 것 같아 컴포넌트 방식으로 전환하기로 했다.&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;컴포넌트 방식으로 일단 전환 성공했는데 위젯이 보이지 않아서 왜그런지 원인을 살펴봤더니 위젯 자체에서 생성될 때 호출하던 HideWidget 함수가 원인이었다.&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;void UCPInteractionPromptWidget::NativeConstruct()
{
    Super::NativeConstruct();
    
    // WBP의 원래 색상 저장
    CacheDefaultColors();
    
    // HideWidget();
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;1705&quot; data-origin-height=&quot;973&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPIlBd/dJMcajpSVLt/kHqaii1b4tkm2MiQdKcAX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPIlBd/dJMcajpSVLt/kHqaii1b4tkm2MiQdKcAX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPIlBd/dJMcajpSVLt/kHqaii1b4tkm2MiQdKcAX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPIlBd%2FdJMcajpSVLt%2FkHqaii1b4tkm2MiQdKcAX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1705&quot; height=&quot;973&quot; data-origin-width=&quot;1705&quot; data-origin-height=&quot;973&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Focus 안 하고 있을 때 위젯이 꺼지는 게 안 된다.&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dozKt5/dJMcaikmiOt/qiyCj9DorHfjBvKkRGBVw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dozKt5/dJMcaikmiOt/qiyCj9DorHfjBvKkRGBVw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dozKt5/dJMcaikmiOt/qiyCj9DorHfjBvKkRGBVw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdozKt5%2FdJMcaikmiOt%2FqiyCj9DorHfjBvKkRGBVw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1048&quot; height=&quot;211&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;211&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그를 확인해보니 내가 기존에 설정해놓은 위젯 꺼짐 로그가 아예 뜨지 않는게 보임.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;void UCPInteractableComponent::EndFocus(AActor* Interactor)
{
    if (InteractWidgetComp)
    {
       InteractWidgetComp-&amp;gt;SetVisibility(false);
    }
    UE_LOG(LogTemp, Warning, TEXT(&quot;[InteractableComponent]위젯 꺼짐!&quot;))
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EndFocus가 호출되지 않고 있는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;// 수정 전
if (!IsValid(NewTarget))
{
    OnPromptChanged.Broadcast(FText::GetEmpty(), NAME_None, ECPInteractionDisplayState::Hidden);
    return;
}

if (UCPInteractableComponent* NewComp = NewTarget-&amp;gt;FindComponentByClass&amp;lt;UCPInteractableComponent&amp;gt;())
{
    if (CurrentDisplayState == ECPInteractionDisplayState::Enabled)
    {
       SetActorHighlight(NewTarget, true);
       NewComp-&amp;gt;BeginFocus(GetOwner());
    }
}

// 수정 후
	if (AActor* PreviousTarget = CurrentTarget.Get())
	{
		SetActorHighlight(PreviousTarget, false);
		if (UCPInteractableComponent* PrevComp = PreviousTarget-&amp;gt;FindComponentByClass&amp;lt;UCPInteractableComponent&amp;gt;())
		{
			PrevComp-&amp;gt;EndFocus(GetOwner());
		}
	}

	CurrentTarget = NewTarget;
	CurrentDisplayState = NewDisplayState;
	
	if (!IsValid(NewTarget))
	{
		return;
	}
	
	UCPInteractableComponent* NewComp = NewTarget-&amp;gt;FindComponentByClass&amp;lt;UCPInteractableComponent&amp;gt;();
	if (!IsValid(NewComp)) return;
	
	if (CurrentDisplayState == ECPInteractionDisplayState::Enabled)
	{
		SetActorHighlight(NewTarget, true);
		NewComp-&amp;gt;BeginFocus(GetOwner());
	}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;이제 켜기/끄기 정상적으로 작동함.&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;기존의 채집 액터에도 인터페이스를 사용한 코드가 남아있었다.&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;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/149</guid>
      <comments>https://annadevelop.tistory.com/149#entry149comment</comments>
      <pubDate>Fri, 4 Sep 2026 03:12:58 +0900</pubDate>
    </item>
    <item>
      <title>2026/09/02 TIL</title>
      <link>https://annadevelop.tistory.com/148</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업 내용&lt;/h1&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size16&quot;&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;기존에 인터페이스를 가져와서 각각의 함수를 직접 액터에서 블루프린트로 구현했던 구조에서, InteractableComponent를 사용해서 편하게 사용할 수 있도록 구조 개편&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;추가로 원래 화면 중앙에 고정된 채로 띄웠던 상호작용 관련 UI를 각 액터에서 WidgetComponent를 띄워서 사용하는 방식으로 쓸 수 있도록 개편하려고 한다. 이로써 각 액터에서 서로 다른 상호작용 UI를 쓰기 더 편리해질 것이다.&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;1. 기존의 인터페이스 구조에서는 상호작용 프롬프트나 액터명을 작성할 때 직접 액터 내에서 인터페이스 함수를 override해서 집어넣었기 때문에 불필요한 작업이 발생.&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. 만약에 액터별로 다른 UI를 사용하고 싶다고 하면 편하게 위젯컴포넌트의 위젯만 변경하면 손쉽게 가능.&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;목적: InteractableComponent와 위젯 컴포넌트를 집어넣은 뒤, 변수 내용만 조금 수정하면 편하게 쓸 수 있는 구조로 개편.&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;기존의 InteractionComponent에서 인터페이스를 찾아서 실행하던 코드들을 전부 컴포넌트로 옮김.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;xl&quot;&gt;&lt;code&gt;if (UCPInteractableActorComponent* InteractableComp = FoundActor-&amp;gt;FindComponentByClass&amp;lt;UCPInteractableActorComponent&amp;gt;())
{
    if (InteractableComp-&amp;gt;CanInteract())
    {
       InteractableComp-&amp;gt;BeginFocus(GetOwner());
    }
}
else
{
    UE_LOG(LogTemp, Error, TEXT(&quot;[InteractionComponent] 대상 액터에 InteractableComponent가 없습니다.&quot;));
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;b&gt;문제 발생&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;-&amp;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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EJHfH/dJMcacEv0Iy/5QXQrtV3gMgGj3MobLBPKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EJHfH/dJMcacEv0Iy/5QXQrtV3gMgGj3MobLBPKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EJHfH/dJMcacEv0Iy/5QXQrtV3gMgGj3MobLBPKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEJHfH%2FdJMcacEv0Iy%2F5QXQrtV3gMgGj3MobLBPKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1036&quot; height=&quot;490&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;490&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;InteractionWidget에서 위젯이 만들어질 때 HideWidget 함수를 호출하는 걸 지웠더니 이제 ICPInteractable / ICPHighlightable이 있는 테스트 액터에는 UI가 뜨는데 단순 컴포넌트가 들어있는 액터에서는 뜨지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEw1AV/dJMcacdjCE3/ZLZT97n4YiFAjKoRRcm6y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEw1AV/dJMcacdjCE3/ZLZT97n4YiFAjKoRRcm6y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEw1AV/dJMcacdjCE3/ZLZT97n4YiFAjKoRRcm6y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEw1AV%2FdJMcacdjCE3%2FZLZT97n4YiFAjKoRRcm6y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1030&quot; height=&quot;463&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;463&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 UI를 띄울때 사용했던 델리게이트에 위젯의 Visibility를 다루는 부분이 있었는데, 이것 때문일까?&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #202020;&quot;&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;void UCPInteractionPromptWidget::OnPromptChanged(FText Prompt, FName TargetName)
{
    bool bHasTarget = !Prompt.IsEmpty();
    
    if (bHasTarget &amp;amp;&amp;amp; TextBlock_InteractionPrompt)
    {
       TextBlock_ActorName-&amp;gt;SetText(FText::FromName(TargetName));
       TextBlock_InteractionPrompt-&amp;gt;SetText(Prompt);
    }
    
    bHasTarget ? ShowWidget() : HideWidget();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1JQCJ/dJMcajcoGqN/bU3zFNWFkfulhXf6VEjiqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1JQCJ/dJMcajcoGqN/bU3zFNWFkfulhXf6VEjiqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1JQCJ/dJMcajcoGqN/bU3zFNWFkfulhXf6VEjiqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1JQCJ%2FdJMcajcoGqN%2FbU3zFNWFkfulhXf6VEjiqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;457&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;457&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;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TtsRN/dJMcabMopWH/CkRoPYvNNbJFuL7a1wUOuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TtsRN/dJMcabMopWH/CkRoPYvNNbJFuL7a1wUOuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TtsRN/dJMcabMopWH/CkRoPYvNNbJFuL7a1wUOuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTtsRN%2FdJMcabMopWH%2FCkRoPYvNNbJFuL7a1wUOuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1035&quot; height=&quot;493&quot; data-origin-width=&quot;1035&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/quXKE/dJMcabMop1q/mYVmRJzoWm519rnXmQMEz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/quXKE/dJMcabMop1q/mYVmRJzoWm519rnXmQMEz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/quXKE/dJMcabMop1q/mYVmRJzoWm519rnXmQMEz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FquXKE%2FdJMcabMop1q%2FmYVmRJzoWm519rnXmQMEz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;583&quot; height=&quot;357&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Space 설정을 Screen으로 해주니까 잘뜬다...&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;기존에 UI에서 직접 만들어서 넣어놨던 F도 키보드 프롬프트용 아이콘으로 변경시켜줬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q1wSi/dJMcahFFAqS/vGDzfYBEkteKENjVUtZpV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q1wSi/dJMcahFFAqS/vGDzfYBEkteKENjVUtZpV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q1wSi/dJMcahFFAqS/vGDzfYBEkteKENjVUtZpV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq1wSi%2FdJMcahFFAqS%2FvGDzfYBEkteKENjVUtZpV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1033&quot; height=&quot;457&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;457&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>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/148</guid>
      <comments>https://annadevelop.tistory.com/148#entry148comment</comments>
      <pubDate>Wed, 2 Sep 2026 22:50:17 +0900</pubDate>
    </item>
    <item>
      <title>2026/08/28 TIL</title>
      <link>https://annadevelop.tistory.com/147</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-ke-size=&quot;size16&quot;&gt;오늘의 작업 내용&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위젯 열기 시스템 리팩토링&lt;/li&gt;
&lt;/ul&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;h2 data-ke-size=&quot;size16&quot;&gt;위젯 열기 시스템 리팩토링&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PopupWidget 시스템에 위젯을 캐싱해두고 Visibility 토글할 수 있는 기능 추가.&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;b&gt;[?]&lt;/b&gt; 이러면 기존의 BaseFixedWidget/BasePopupWidget이 무의미해지지 않나? 라는 의문이 생김.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FixedWidget에도 Visibility 변경 기능이 있기 때문이다.&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;FixedWidget : 입력 변경 X, 배경에 항상 존재하는 위젯 (미니맵 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PopupWidget : 입력 변경 O (인벤토리 등)&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;ESC 눌렀을 때 팝업 위젯만 차례로 닫는 등의 조작을 위해서라도 구분은 필요함.&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;h2 data-ke-size=&quot;size16&quot;&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;현재 OpenLevel 형식으로 레벨 이동을 하도록 설정되어있음. 이거에 맞춰서 로딩화면 구상하기.&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;이러면 GameInstance나 레벨이동 직전 블루프린트 쪽에서 영화 플레이어 API를 사용해서 위젯을 띄우거나, LoadingLevel을 비동기식으로 열어서 메인레벨이 열리는 순간 바로 메인레벨로 이동하는 구조로 하는 방법을 쓸 수 있음.&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=TRpFxT9zGu8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=TRpFxT9zGu8&lt;/a&gt;&lt;/p&gt;</description>
      <category>Unreal5 공부/TIL</category>
      <author>anna59</author>
      <guid isPermaLink="true">https://annadevelop.tistory.com/147</guid>
      <comments>https://annadevelop.tistory.com/147#entry147comment</comments>
      <pubDate>Mon, 31 Aug 2026 09:47:54 +0900</pubDate>
    </item>
  </channel>
</rss>