Event - osy9611/ProjectPT GitHub Wiki

Event

ํ•ด๋‹น ๋ฌธ์„œ๋Š” ๋ถ•๊ดด ์Šคํƒ€๋ ˆ์ผ์˜ ์ด๋ฒคํŠธ ์ฝ˜ํ…์ธ ๋ฅผ ๋ชจ์ž‘ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•œ ๋ฌธ์„œ์ด๋‹ค.

ํ˜„์žฌ ์„œ๋ฒ„ ์—ฐ๋™์ด ์—†๋Š” ์ƒํƒœ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž„์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ–ฅํ›„ ์„œ๋ฒ„ ์ถ”๊ฐ€ ์‹œ ์ˆ˜์ •๋  ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„๊ฐ€ ๋˜์—ˆ๋‹ค.

๊ฒฐ๊ณผ๋ฌผ

EventPage
EventPage GIF
์‹ ๊ทœ ์ด๋ฒคํŠธ ๋˜๋Š” ํŠน์ • ์กฐ๊ฑด ์ด๋ฒคํŠธ ํ•ด๊ธˆ ์‹œ
ConentsOpen GIF

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ด๋ฒคํŠธ ํ† ๊ธ€ ๋ฐ ๋ฐฐ๋„ˆ UI
    • ์„ ํƒํ•œ ์ด๋ฒคํŠธ ๋ฐฐ๋„ˆ์™€ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํ‘œ์‹œ
  • RedDot ์•Œ๋ฆผ
    • ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ํ™•์ธํ•œ ์ด๋ฒคํŠธ๋Š” ๊ธฐ๋ก๋˜๋ฉฐ, ์žฌ์ ‘์† ์‹œ ์ƒˆ ์ด๋ฒคํŠธ์—๋งŒ ๋ ˆ๋“œ๋‹ท ์•„์ด์ฝ˜์„ ํ‘œ์‹œ
  • ์ด๋ฒคํŠธ ๋ณด์ƒ ์ฒ˜๋ฆฌ
    • ๊ฐ ์ด๋ฒคํŠธ์— ๋”ฐ๋ฅธ ๋ณด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ UI๋กœ ๋ณด์—ฌ์ฃผ๊ณ , ์„œ๋ฒ„ ํ†ต์‹ ์„ ํ†ตํ•ด ๋ณด์ƒ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰
  • ์ด๋ฒคํŠธ ๋งŒ๋ฃŒ ํƒ€์ด๋จธ
    • ๊ฐ ์ด๋ฒคํŠธ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ, ๋‚จ์€ ์‹œ๊ฐ„์„ UI์— ํ‘œ์‹œํ•˜๊ณ  ๋งŒ๋ฃŒ ์‹œ ์ž๋™์œผ๋กœ ์ตœ์‹  ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ 
  • ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์ด๋ฒคํŠธ UI ์ž๋™ ์˜คํ”ˆ
    • ๋ ˆ๋ฒจ์—…, ์ฝ˜ํ…์ธ  ํ•ด๊ธˆ ๋“ฑ์˜ ์กฐ๊ฑด์ด ๋งŒ์กฑ๋  ๊ฒฝ์šฐ, ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์˜คํ”ˆ๋˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

๋ถ„์„ ๋ฐ ๊ณ ๋ ค์‚ฌํ•ญ

์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

  • ์„œ๋ฒ„์—์„œ๋Š” ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ์ด๋ฒคํŠธ TableID์™€ ์‹œ์ž‘ ๋ฐ ๋งŒ๋ฃŒ์‹œ๊ฐ„, ๋ฐ›์€ ๋ณด์ƒ ์•„์ดํ…œ์„ ๋ณด๋‚ธ๋‹ค

  • ํด๋ผ์ด์–ธํŠธ๋Š” TableID๋ฅผ ๊ธฐํš ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ƒ‰ํ•ด์„œ ๋ฐฐ๋„ˆ ๋ฐ ์ด๋ฒคํŠธ ํ† ๊ธ€์„ ์ƒ์„ฑํ•œ๋‹ค

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

    tableNo eventName eventDesc openType openValue bannerPath toggleImgPath openPagePath rewardItems
    int string string EventOpenType string string string string Tarray

์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์„ธํŒ… ๋ฐฉ์‹

  • ๊ธฐํš์ž๋Š” eventName, eventDesc, openType, openValue ๋“ฑ์„ ์„ค์ •ํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  • openType์„ ํ†ตํ•ด ํŠน์ • ์กฐ๊ฑด(๋ ˆ๋ฒจ์—…, ์ฝ˜ํ…์ธ  ํ•ด๊ธˆ ๋“ฑ)์„ ์„ค์ •ํ•˜๊ณ , openValue์— ํ•ด๋‹น ์กฐ๊ฑด์˜ ์„ธ๋ถ€๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค
  • bannerPath, toggleImgPath๋ฅผ ํ†ตํ•ด UI์— ํ‘œ์‹œ๋  ๋ฐฐ๋„ˆ ๋ฐ ํ† ๊ธ€ ์ด๋ฏธ์ง€๋ฅผ ์ •์˜ํ•œ๋‹ค
  • openPagePath๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ž๋™์œผ๋กœ ํ•ด๋‹น UI ํŽ˜์ด์ง€๋ฅผ ์—ด๋„๋ก ์„ค์ •ํ•œ๋‹ค
  • rewardItems์—๋Š” ์ด๋ฒคํŠธ ๋ณด์ƒ ์•„์ดํ…œ ID ๋ชฉ๋ก์„ ์„ค์ •ํ•˜์—ฌ, ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ง€๊ธ‰๋  ๋ณด์ƒ์„ ๊ด€๋ฆฌํ•œ๋‹ค

UI/UX ๊ณ ๋ ค ์‚ฌํ•ญ

  • ํ† ๊ธ€ ๊ทธ๋ฃน ์ œ์–ด
    • ์ด๋ฒคํŠธ ํ† ๊ธ€ ๋ฒ„ํŠผ์€ ๊ทธ๋ฃน ๋‚ด์—์„œ ํ•˜๋‚˜๋งŒ ํ™œ์„ฑํ™”๋˜๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ด๋ฒคํŠธ์˜ ๋ฐฐ๋„ˆ์™€ ๋ณด์ƒ ์ •๋ณด๊ฐ€ ์ง๊ด€์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๊ตฌ์„ฑ
  • ์‹ค์‹œ๊ฐ„ ๋‚จ์€ ์‹œ๊ฐ„ ํ‘œ์‹œ
    • ํƒ€์ด๋จธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‚จ์€ ์‹œ๊ฐ„์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ, ์ด๋ฒคํŠธ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด ์ž๋™์œผ๋กœ UI๋ฅผ ๊ฐฑ์‹ 
  • RedDot ์•Œ๋ฆผ
    • ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์ด๋ฒคํŠธ ํ™•์ธ ์—ฌ๋ถ€๋ฅผ ์œ ์ง€ํ•˜์—ฌ, ๋ถˆํ•„์š”ํ•œ ์„œ๋ฒ„ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • ์ž๋™ UI ํƒญ ํ™œ์„ฑํ™”
    • ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋  ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜์—ˆ์„ ๋•Œ UI๊ฐ€ ์ž๋™์œผ๋กœ ํƒญ์„ ํ™œ์„ฑํ™” ํ•˜๋„๋ก ๊ตฌํ˜„

์„œ๋ฒ„ ์—ฐ๋™ ์‹œ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ํ๋ฆ„

  1. ํด๋ผ์ด์–ธํŠธ ์ ‘์† ์‹œ, ์„œ๋ฒ„์—์„œ ์ตœ์‹  ์ด๋ฒคํŠธ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ด
  2. ์„œ๋ฒ„๋Š” ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  4. ํŠน์ • ์ด๋ฒคํŠธ ์ข…๋ฃŒ ์‹œ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ์ •๋ณด๋ฅผ ๋‹ค์‹œ ๋™๊ธฐํ™”

์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋  ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

  • ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๋ฐฉ์‹ ๋ณ€๊ฒฝ
    • ํ˜„์žฌ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์„œ๋ฒ„ ์—ฐ๋™ ํ›™์—๋Š” ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•จ
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹๊ณผ, ์„œ๋ฒ„์—์„œ Push ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ
  • ์ด๋ฒคํŠธ ์ƒํƒœ ์ €์žฅ ๋ฐ ๊ฐฑ์‹  ๋ฐฉ์‹
    • ํ˜„์žฌ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด๋ฒคํŠธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, ์„œ๋ฒ„ ์—ฐ๋™ ํ›„์—๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฒคํŠธ ์™„๋ฃŒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•œ ํ›„ ๋‹ค์‹œ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ ค์ฃผ์–ด์•ผ ํ•จ.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด, ์„œ๋ฒ„์— ์ด๋ฒคํŠธ ์™„๋ฃŒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ดํ›„ ์„œ๋ฒ„์—์„œ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ ํ•„์š”
  • ์ด๋ฒคํŠธ ์กฐ๊ฑด ์ฒ˜๋ฆฌ ๋ฐฉ์‹
    • ํ˜„์žฌ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ง์ ‘ ์ด๋ฒคํŠธ ์˜คํ”ˆ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์ง€๋งŒ, ์„œ๋ฒ„ ์—ฐ๋™ ํ›„์—๋Š” ์„œ๋ฒ„์—์„œ ์ด๋ฒคํŠธ ์˜คํ”ˆ ์กฐ๊ฑด์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Œ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๋ ˆ๋ฒจ ๋‹ฌ์„ฑ ์‹œ ์ด๋ฒคํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„œ๋ฒ„์—์„œ โ€œ์ด๋ฒคํŠธ ์˜คํ”ˆ ๊ฐ€๋Šฅโ€ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€๋Šฅ

ํ™•์žฅ์„ฑ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ๊ณ ๋ ค์‚ฌํ•ญ

  • ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ ๋ชจ๋“ˆํ™”
    • ์ด๋ฒคํŠธ UI(ํ† ๊ธ€, ๋ฐฐ๋„ˆ), ํƒ€์ด๋จธ, ๋ณด์ƒ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ฝ”๋“œ ์ˆ˜์ •์ด ์ตœ์†Œํ™”๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋จ
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ์œ ํ˜•์ด ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ ๊ธฐ์กด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ
  • ์ด๋ฒคํŠธ ์˜คํ”ˆ ์กฐ๊ฑด ํ™•์žฅ ๊ฐ€๋Šฅ
    • ํ˜„์žฌ ์ด๋ฒคํŠธ ์˜คํ”ˆ ์กฐ๊ฑด์€ ๋ ˆ๋ฒจ์—…, ์ฝ˜ํ…์ธ  ํ•ด๊ธˆ ๋“ฑ ์ผ๋ถ€ ๊ธฐ์ค€์— ํ•œ์ •๋˜์–ด ์žˆ์œผ๋‚˜, ์„œ๋ฒ„ ์—ฐ๋™ ํ›„ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐ ์„ค๊ณ„
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ํ€˜์ŠคํŠธ ์™„๋ฃŒ, ์•„์ดํ…œ ํš๋“, ํŠน์ • ๊ธฐ๊ฐ„ ๋‚ด ์ ‘์† ์—ฌ๋ถ€ ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ์„œ๋ฒ„์—์„œ ์„ค์ •ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅ ๊ฐ€๋Šฅ.

๊ตฌํ˜„ ๋‚ด์šฉ

์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์š”์ฒญ ๋ฐ ๊ฐฑ์‹ 

  • ๋ฐ์ดํ„ฐ ์š”์ฒญ ๋ฐ ์—…๋ฐ์ดํŠธ
    • ์œ„์ ฏ์ด ํ™œ์„ฑํ™”๋˜๋ฉด ์„œ๋ฒ„์— ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์ง„ํ–‰

    • ๊ธฐ์กด ์ด๋ฒคํŠธ์™€ ๋น„๊ตํ•˜์—ฌ ์‹ ๊ทœ ์ด๋ฒคํŠธ๋Š” ์ถ”๊ฐ€ํ•˜๊ณ , ๋งŒ๋ฃŒ๋œ ์ด๋ฒคํŠธ๋Š” ์ œ๊ฑฐ

    • ํŠน์ • ์กฐ๊ฑด ์ถฉ์กฑ ์‹œ ์ž๋™์œผ๋กœ UI๊ฐ€ ํ™œ์„ฑํ™” ๋˜๋„๋ก ๊ตฌํ˜„

    • ์ฃผ์š” ์ฝ”๋“œ

      void UPTUserData_Event::OnCheckOpenEvent(EEventOpenType OpenType, const FString& OpenValue)
      {
      	if (CheckOpenEvent(OpenType, OpenValue))
      	{
      		UpdateEvents(true);
      
      		UPTUIManagerSubsystem* UIManager = GetWorld()->GetGameInstance()->GetSubsystem<UPTUIManagerSubsystem>();
      		if (!UIManager)
      		{
      			UE_LOG(PTLog, Error, TEXT("[PTLobbyContentButton] UIMaangerSubsystem is nullptr"));
      			return;
      		}
      
      		TArray<FString> OpenEvents;
      
      		for (const FRequestEventData& Data : EventRequestDatas)
      		{
      			FEventData* EventData = GetEventData(Data.TableId);
      			if (!EventData)
      				continue;
      			if (EventData->openType == OpenType && EventData->openValue == OpenValue)
      			{
      				OpenEvents.Add(Data.TableId);
      			}
      		}
      
      		UPTEventOpenPage* EventOpenWidget = UIManager->GetWidget<UPTEventOpenPage>(DynamicLayerTag, "WBP_DynamicLayout", EventOpenPagePath);
      		EventOpenWidget->Init(OpenEvents);
      	}
      }

์ด๋ฒคํŠธ ๋ฐฐ๋„ˆ ๋ฐ ํƒ€์ด๋จธ ๊ด€๋ฆฌ

  • ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ๋ฐ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋ฃŒ ํƒ€์ด๋จธ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, UI์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋”ฉ

  • ์„œ๋ฒ„ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‚จ์€ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜์—ฌ ํ‘œ์‹œ

  • ์ฃผ์š” ์ฝ”๋“œ(์ผ๋ถ€)

    PTPlayerDataSubsystem* PlayerData = GetWorld()->GetGameInstance()->GetSubsystem<UPTPlayerDataSubsystem>();
    
    	if (!PlayerData)
    	{
    		UE_LOG(PTLog, Error, TEXT("[PTEventBanner] PTPlayerDataSubsystem is nullptr"));
    		return;
    	}
    
    	UPTUserData_Event* UserEvent = PlayerData->GetData<UPTUserData_Event>(EUserDataType::Event);
    
    	FRequestEventData* EventData = UserEvent->FindEventData(TableID);
    	if (!EventData)
    	{
    		UE_LOG(PTLog, Error, TEXT("[PTEventBanner] RequestEventData is nullptr TableID : %s"), *TableID);
    		return;
    	}
    
    	ExpireTime = EventData->ExpireDate;
    
    	FTimespan Remaining = ExpireTime - FDateTime::Now();
    	OnUpdateRemainTimer(Remaining);

์‚ฌ์šฉ์ž ์ธํ„ฐ๋ ‰์…˜ ๋ฐ RedDot ์ฒ˜๋ฆฌ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฒคํŠธ ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ์˜ ๋ฐฐ๋„ˆ์™€ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ

  • RedDot ์ƒํƒœ๋ฅผ ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋ฉฐ, ์—…๋ฐ์ดํŠธ ์‹œ ์ž๋™์œผ๋กœ ๋ฆฌ์…‹๋จ

  • ์ฃผ์š” ์ฝ”๋“œ

    void UPTEventToggleData::SaveRedDot()
    {
        UContentsStorage* ContentsStorage = LocalStorage->GetStorageType<UContentsStorage>(ELocalStorageType::Contents);
        if (!ContentsStorage->ContentsData.EventIDs.Contains(UniqueID))
        {
            ContentsStorage->ContentsData.EventIDs.Add(UniqueID);
            ContentsStorage->SaveData();
        }
    }
โš ๏ธ **GitHub.com Fallback** โš ๏ธ