DataTable - osy9611/ProjectPT GitHub Wiki

๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”

Unity์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ TableGenerator๋ฅผ ์–ธ๋ฆฌ์–ผ์˜ DataTable ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ–ˆ๋‹ค

Unity์™€ Unreal์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐฉ์‹ ๋น„๊ต

Unity์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ์‹

  • ์—‘์…€ ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ + .byte ํฌ๋งท ํ™œ์šฉ
  • Json/XML ๋Œ€์‹  .byte ํฌ๋งท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™”

Unity์—์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •

image

Unity์—์„œ .byte ํฌ๋ฉง์„ ์‚ฌ์šฉํ•œ ์ด์œ 

ํ•ญ๋ชฉ JSON/XML ๋ฐฉ์‹ .byte ๋ฐฉ์‹
์†๋„ ๋А๋ฆผ (ํŒŒ์‹ฑ ํ•„์š”) ๋น ๋ฆ„ (๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘)
์šฉ๋Ÿ‰ ์ƒ๋Œ€์ ์œผ๋กœ ํผ ์••์ถ• ๊ฐ€๋Šฅ (์šฉ๋Ÿ‰ ์ ˆ๊ฐ)
๋กœ๋“œ ๋ฐฉ์‹ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ํŒŒ์‹ฑ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ง๋ ฌํ™”

Unreal์—์„œ DataTable์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

Unreal DataTable ํ™œ์šฉ์˜ ์žฅ์ 

  • CSV, JSON ํŒŒ์ผ์„ ๋ฐ”๋กœ ์ฝ์–ด ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ
  • ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์—์„œ๋„ ์†์‰ฝ๊ฒŒ ํ™œ์šฉ ๊ฐ€๋Šฅ

Unreal์—์„œ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ํ˜•์‹

  • Unreal์—์„œ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ํ˜•์‹ (CSV ์˜ˆ์‹œ)

    tableNo itemID Amount
    int int int
    1 101 10
  • CSV ํŒŒ์ผ โ†’ DataTable ๋ณ€ํ™˜ ๊ณผ์ •

    image 1

TableGenerator Plugin ๊ตฌํ˜„

TableGenerator ๋Š” CSV ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ DataTable๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , C++ ํด๋ž˜์Šค๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ด๋‹ค.

TableGenerator ์ ์šฉ ๊ณผ์ •

  • CSV ๋ฐ์ดํ„ฐ โ†’ DataTable ์ž๋™ ๋ณ€ํ™˜

  • DataTable์„ ๊ธฐ๋ฐ˜์œผ๋กœ C++ ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ

  • TableGenerator ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์กฐ

    image 2

Make Data Table(์ž๋™ ์ƒ์„ฑ ์‹œ์Šคํ…œ)

  • CSV ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ํ™”๋œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

  • ๊ฐ ์ปฌ๋Ÿผ์„ ๋ถ„์„ํ•˜์—ฌ C++ ๊ตฌ์กฐ์ฒด (Struct) ๋˜๋Š” Enum์„ ์ž๋™ ์ƒ์„ฑ

  • ํŒŒ์ด์ฌ ์ฝ”๋“œ ์ผ๋ถ€(CSVโ†’Enum ๋ณ€ํ™˜)

    import csv
    
    def generate_enum_from_csv(csv_file):
        with open(csv_file, newline='') as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                print(f"enum {row[0]} = {row[1]};")

Import CSV Data(๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” & ์ž๋™ ๋กœ๋“œ)

  • DataTable์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ .byte ํŒŒ์ผ๋กœ ์ €์žฅ
  • .byte ํŒŒ์ผ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง• ์„ค์ • ์ ์šฉ
  • ํŒจํ‚ค์ง• ์ ์šฉ ๋ฐฉ๋ฒ•
    • ํ”„๋กœ์ ํŠธ ์„ธํŒ… โ†’ ํŒจํ‚ค์ง• โ†’ ๊ณ ๊ธ‰ โ†’ ํŒจํ‚ค์ง€ ์ถ”๊ฐ€ ๋น„์—์…‹ ๋””๋ ‰ํ„ฐ๋ฆฌ์— .byte ํŒŒ์ผ์ด ์ €์žฅ๋œ ๊ฒฝ๋กœ ๋“ฑ๋ก ํ•„์š”

๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ง๋ฉดํ•œ ๋ฌธ์ œ

TableGenerator๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ, Unreal5 ์ตœ์‹  ๋ฒ„์ „์˜ ์ง๋ ฌํ™” ๋ฐฉ์‹ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๊ธฐ์กด FAchive ๊ธฐ๋ฐ˜ ์ง๋ ฌํ™” ๋ฐฉ์‹์—์„œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€

FArchive does not support FObjectPtr serialization. Use FArchiveUObject instead.

๋ฌธ์ œ ์›์ธ ๋ถ„์„

  • .byte ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ, FObjectPtr ํƒ€์ž…์˜ ์ง๋ ฌํ™” ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

  • Unreal 5 ์—์„œ๋Š” ๊ธฐ์กด FArchive๋ฅผ ํ†ตํ•œFObjectPtr ์ง๋ ฌํ™”๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์Œ

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : FObjectAndNameAsStringProxyArchive ์ ์šฉ

    TArray<uint8> BinaryData;
    FMemoryWriter MemoryWriter(BinaryData, true);
    FObjectAndNameAsStringProxyArchive Ar(MemoryWriter, false);
โš ๏ธ **GitHub.com Fallback** โš ๏ธ