How to make a Excel Importer in Unity!

Поділитися
Вставка
  • Опубліковано 7 вер 2024
  • 엑셀 데이터를 불러와 게임 내에서 사용하는 Excel Importer를 제작하는 동영상입니다.
    In this video you will learn how to create Excel Importer with Unity Engine.
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    👍 양질의 교육 콘텐츠를 제작할 수 있도록 채널 맴버십에 가입하세요.
    / @unitynote
    👍 양질의 교육 콘텐츠를 제작할 수 있도록 고박사에게 후원을 해보세요. (카카오 페이)
    donaricano.com...
    ※링크로 이동하시면 카카오 QR코드가 보입니다.
    ✅ 인프런 - 따라하면서 배우는 고박사의 하이퍼캐주얼 게임 시리즈 01
    www.inflearn.c...
    🔔 앞으로 올라오는 더 많은 강좌 동영상을 쉽게 보려면?
    / @unitynote
    여러분 안녕하세요. 고박사입니다.
    항상 더 좋은 강의를 제작할 수 있도록 노력하겠습니다.
    여러분의 관심과 응원은 저에게 큰 힘이 됩니다.
    구독(Subscribe), 좋아요(Like)를 눌러주세요!!
    감사합니다.
    Unity Version 2021.2.8f1
    #유니티엔진 #유니티강좌 #EXCELIMPORTER #엑셀임포트

КОМЕНТАРІ • 55

  • @user-qh9xl9ry7d
    @user-qh9xl9ry7d 2 роки тому +2

    대화 시스템에 이서 데이터 파싱까지 연계해서 알려주시니 너무 좋습니다 굿!

    • @unitynote
      @unitynote  2 роки тому

      댓글 감사합니다^^

  • @GavinKo-hv7bj
    @GavinKo-hv7bj 2 роки тому +1

    플러터로 게임 개발 중, 이 영상 덕분에 확신이 생겼습니다ㅎㅎ 좋은 영상 감사합니다

    • @unitynote
      @unitynote  2 роки тому +1

      도움이 되셨다니 다행입니다.

  • @scm1203
    @scm1203 2 роки тому +1

    와~ 이거 되게 편하네요~
    엑셀을 이렇게 유니티와 연동할수있군요.
    많이 배우고 갑니다.~~^^

    • @unitynote
      @unitynote  2 роки тому +1

      여러 방법을 알아두고 상황에 따라 사용하시면 됩니다 :)

  • @user-to4yk6kh7w
    @user-to4yk6kh7w 2 роки тому +1

    정말 좋은 강좌입니다 선생님!

    • @unitynote
      @unitynote  2 роки тому

      댓글 감사합니다^^

  • @tetras699
    @tetras699 Рік тому

    늘감사합니다~.

  • @jwj8659
    @jwj8659 2 роки тому +1

    에셋 사서 쓰는 것도 좋지만 이렇게 직접 짜서 만들어보는 것도 좋은 공부가 되겠네요. parser는 리버스 엔지니어링 하기 많이 빡세긴 하지만요 ㅎ

    • @unitynote
      @unitynote  2 роки тому

      다른 사람의 코드를 보는게 많은 공부가 되기 때문에 에셋을 사서 뜯어보면 좋습니다. :)

  • @user-jo1cm5ew8d
    @user-jo1cm5ew8d 2 роки тому

    좋은 영상 정말 감사합니다! 순서대로 잘 알려주셔서 쉽게 따라 할 수 있었어요 한번 더 감사합니다!!@

    • @user-jo1cm5ew8d
      @user-jo1cm5ew8d 2 роки тому

      그런데 혹시 스크립트를 reimport 했을 때 asset이 생기는 원리가 무엇인가요?? 한번은 다시 에셋을 만드려는데 나오지 않았었거든요 ㅠㅠ

    • @unitynote
      @unitynote  2 роки тому

      @@user-jo1cm5ew8d 홈페이지에서 F5를 눌러 새로고침 하는 것과 같습니다.
      코드 내부에 어떤 실행을 담고 있을 때는 새로고침 해야 될 때가 있는데 reimport가 그 역할을 할 수 있습니다.
      간혹 코드 연동이 바로 안될 때도 reimport를 하게 됩니다.

  • @ququ9609
    @ququ9609 10 днів тому

    안녕하세요 고박사님 영상 정말 잘봤습니다.
    질문이 한가지 있는데 speakerIndex는 따로 초기화 시켜주는 부분은 없는건가요?

    • @unitynote
      @unitynote  10 днів тому

      speakerIndex가 currentSpeakerIndex라면 06:50 20줄에서 초기화하고 있습니다.

  • @user-yo9eg1lz2e
    @user-yo9eg1lz2e 2 роки тому

    오오!!!
    CSV리더 유니코드 때문에 불편했는데!!
    다음에는 이것을 사용해야겠네요

    • @unitynote
      @unitynote  2 роки тому

      댓글 감사합니다^^

  • @CreateDefaultSubobject
    @CreateDefaultSubobject Рік тому

    매우 도움이되었습니다

    • @unitynote
      @unitynote  Рік тому

      도움이 되었다니 다행입니다^^

  • @jangsijin8912
    @jangsijin8912 2 роки тому +2

    고박사님 질문 있습니다!
    혹시 ScriptableObject로 만든 DialogDB의 Inspector 창에
    데이터로 가져온 Tutorial 6개 객체 배열의 내용을 보고 싶은데 삼각형 버튼이 활성화가 안 되는 것 같습니다...
    구글에 찾아봐도 잘 안나오는 것 같은데 혹시 해결할 수 있는 방법이 있을까요? (IDE는 Rider를 사용하고 있습니다.)
    항상 좋은 영상 만들어 주셔서 감사드립니다! 😆

    • @unitynote
      @unitynote  2 роки тому

      엑셀 파일의 시트 이름과 DialogDB 클래스에 선언된 리스트 변수 이름이 같은지 확인해보세요.
      둘의 이름이 일치하지 않으면 배열 내용 확인도 불가능하고, 내용이 제대로 들어가지 않습니다.

    • @jangsijin8912
      @jangsijin8912 2 роки тому

      음.. 빌드 했을 때 데이터 출력도 잘 되고 있으며 대화 리스트 6개도 정상적으로 들어왔다고 표시가 되는데요.
      내부 값들을 보기 위한 삼각형 클릭 부분만 비활성화되어 있습니다...ㅠㅠ
      조금 더 찾아보고 해결되면 추가 답글로 작성하도록 하겠습니다.
      감사합니다.

    • @unitynote
      @unitynote  2 роки тому +1

      @@jangsijin8912 음.. 아니면 갱신이 제대로 안되어서 그럴수도 있으니 scriptable 에셋 파일을 삭제 하고 다시 생성해보세요

  • @user-ke6wt5mo3p
    @user-ke6wt5mo3p 2 роки тому

    감사합니다!!

    • @unitynote
      @unitynote  2 роки тому

      댓글 감사합니다

  • @thachhoang157
    @thachhoang157 Рік тому

    내 컴퓨터가 ExcelAssetScript를 보지 않는 이유는 무엇입니까? 도움이 필요합니다

  • @violetcrow83
    @violetcrow83 7 місяців тому

    안녕하세요 고박사님. 여쭤볼게 있어서 댓글 남깁니다. 혹시 유니티에서 구현한 모듈상의 데이터를 엑셀로 아웃풋 하려 하는데 그 엑셀에 이미지파일도 같이 첨부가 가능할까요?

    • @unitynote
      @unitynote  7 місяців тому

      엑셀에 이미지 파일을 수동으로 첨부하는건 가능하지만 코드를 이용해 엑셀에 이미지 데이터를 삽입하는건 가능할지 모르겠습니다.
      제가 아는선에서는 불가능한데 혹시 몰라 확답은 못드리겠습니다.

  • @user-jo1cm5ew8d
    @user-jo1cm5ew8d 2 роки тому

    혹시 빌드 후에도 엑셀의 값만 바꿔서 정보를 넣으려는데 방법이 있을까요? 엑셀 파일을 StreamingAssets에 넣어서 빌드를 하고 엑셀 정보를 바꿔도 빌드 할 때의 정보만 유지되어있네요..그리고 reimport로 생긴 파일을 StreamingAssets에 넣어도 아이콘이 바뀌면서 안되네요..

    • @unitynote
      @unitynote  2 роки тому

      이런 경우는 보통 구글 스프레드 시트나 외부 DB를 활용해 온라인으로 데이터를 받아와 사용하도록 합니다.
      빌드 후에 값이 자주 바뀌는 경우에는 이 방법을 쓰기 어렵습니다.

  • @DHiHi
    @DHiHi Рік тому

    고박사님 혹시 이미지도 해당 테이블의 속성으로 놓고 사용하는 방법이 있을까요 ㅠㅠ 아이템의 스프라이트 png 파일도 정보로 가지고, 이 정보를 토대로 화면에 띄어주고 싶습니다!

    • @unitynote
      @unitynote  Рік тому

      이미지 파일 자체를 등록할 순 없고, 이미지 파일은 Project View의 Resources 폴더에 두고
      유니티의 Resources.Load()로 이미지를 불러오도록 하고, 불러올 이미지의 경로 문자열을 테이블에 저장하면 됩니다.

    • @DHiHi
      @DHiHi Рік тому

      @@unitynote 아하 Resources.Load()에 이미지를 넣고, 그 안에 데이터를 생성자에서 이미지 초기화할 때, 사용하면 되는군요!! 빠르고 좋은 답변, 그리고 항상 도움이 되는 영상 감사합니다ㅜㅜ

  • @user-dz4jf2jh8s
    @user-dz4jf2jh8s Рік тому

    덕분에 게임 제작이 편리해졌어요. 혹시 블로그에 링크를 걸어도 괜찮을가요?

    • @unitynote
      @unitynote  Рік тому

      네 출처를 남겨주신다면 얼마든지 가능합니다 :)

  • @babamba55
    @babamba55 2 роки тому

    혹시 빈데이터나 배열을 인식시킬 방법이 있을까요?

  • @user-yf6uo8ts1g
    @user-yf6uo8ts1g Рік тому

    안녕하세요 고박사님. 좋은 영상 만들어주셔서 항상 잘 보고 있습니다.
    다름이 아니라 한가지 질문이 있어 댓글을 남기게 되었습니다.
    이번 영상에서 excel 파일을 만들때 branch 열에 숫자를 적어주고 DialogEntity unity script에 int 형인 branch로 받아오는 것으로 확인했습니다.
    그런데 DialogEntity script에서 int형으로 branch 변수를 선언하고, excel 파일을 이용해 에셋을 만들경우
    Exception: Invalid excel cell type at row 7, column 0, Entities sheet.와 같은 에러가 발생합니다.
    그래서 string으로 branch 변수를 생성해보았습다. 그랬더니, 에셋은 잘 만들어지지만
    DialogStsytem script의 29번째줄 if (dialogDB.Entities[i].branch == branch)에서 ''==' 연산자는 'string' 및 'int' 형식의 피연산자에 적용할 수 없습니다.'라는 에러가 발생하네요.
    그래서 이 문제를 해결하고자 dialogDB.Entities[i].branch를 int형으로 parsing하니 대화가 뜨질 않네요...
    excel 파일은 고박사님과 동일하게 입력하였습니다!
    혹시 int형으로 branch를 선언하여 excel파일을 연동하는 것이 안되는 이유가 있을까요??
    긴 글 읽어주셔서 감사합니다!

    • @unitynote
      @unitynote  Рік тому

      에러 내용은 0행 7열. 즉 branch 행의 6번째 데이터의 셀 유형이 잘못되었다고 합니다.
      branch의 int, string에 따라 문제가 된다면 0행 1열부터 문제가 있었어야 합니다. 7열의 데이터를 확인해보면 될 것 같아요

  • @user-nt3ws8uq2d
    @user-nt3ws8uq2d Рік тому

    엑셀 시트가 2개라면 3:35에서 작성하는 직렬화 클래스를 어떻게 적어야되나요? 두 시트의 변수를 한 클래스에 모두 적어주면 될까요??

    • @unitynote
      @unitynote  Рік тому

      04:35 시트가 2개일 때는 영상에서 설명하는 방법과 같이 사용하면 됩니다.

  • @greatyisoon-sin3402
    @greatyisoon-sin3402 2 роки тому

    우와 감사합니다 ^^;

    • @unitynote
      @unitynote  2 роки тому

      댓글 감사합니다^^

  • @sksmsfkek
    @sksmsfkek Рік тому

    감사합니다 블로그에서 링크 걸어도 될까요?

  • @user-no4qw1jg6j
    @user-no4qw1jg6j 8 місяців тому

    혹시 빌드했을시에도 작동하나요?

    • @unitynote
      @unitynote  8 місяців тому

      네 잘 작동합니다.

    • @user-no4qw1jg6j
      @user-no4qw1jg6j 8 місяців тому

      인게임 상에서 불러오려고 하면 XSSFWorkbook 쪽에서 에러가 나는거 같아서요. 엑셀자체를 인게임에서 불러오게 된다면 에디터일 경우에는 문제가 없지만 빌드했을경우에는 문제가 생기는거 같아요 @@unitynote

  • @user-ho3jf8ep7s
    @user-ho3jf8ep7s 2 роки тому

    엑셀파일을 Reimport 하거나 ExcelAsseScript를 누르면 NullReferenceException 오류가 뜨면서 파일이 생성되지 않는데 무엇이 문제 일까요?
    ExcelImporter 폴더를 삭제하고 다시 불러와도 똑같네요.

    • @unitynote
      @unitynote  2 роки тому +1

      엑셀에 작성된 메뉴 이름들과 코드의 변수 이름이 동일한지(대소문자 구분함)
      DB 스크립트의 리스트 변수 이름이 엑셀의 시트 이름과 동일한지
      이런 부분들에 대해 코드를 다시 살펴보시는걸 권해드립니다.

    • @user-gr5ww4pc5j
      @user-gr5ww4pc5j 2 роки тому

      @@unitynote 계속 확인해봤지만 동일합니다ㅜ

  • @Wind_mill
    @Wind_mill Рік тому

    흠.. 이렇게 오류가 뜨는데요,
    적힌부분대로 선언도 갯수만 많지만 맞추어했는데. 무슨문제일까요? 혹시 수식을 사용하면 안되는건가요?
    Exception: Invalid excel cell type at row 1, column 1, DB_Enemy sheet.
    ExcelImporter.CreateEntityFromRow (NPOI.SS.UserModel.IRow row, System.Collections.Generic.List`1[T] columnNames, System.Type entityType, System.String sheetName) (at Assets/ExcelImporter/Editor/ExcelImporter.cs:165)
    ExcelImporter.GetEntityListFromSheet (NPOI.SS.UserModel.ISheet sheet, System.Type entityType) (at Assets/ExcelImporter/Editor/ExcelImporter.cs:191)
    ExcelImporter.ImportExcel (System.String excelPath, ExcelImporter+ExcelAssetInfo info) (at Assets/ExcelImporter/Editor/ExcelImporter.cs:228)
    ExcelImporter.OnPostprocessAllAssets (System.String[] importedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromAssetPaths) (at Assets/ExcelImporter/Editor/ExcelImporter.cs:45)
    System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at :0)
    Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at :0)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at :0)
    UnityEditor.AssetPostprocessingInternal.InvokeMethod (System.Reflection.MethodInfo method, System.Object[] args) (at :0)
    UnityEditor.AssetPostprocessingInternal.PostprocessAllAssets (System.String[] importedAssets, System.String[] addedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromPathAssets, System.Boolean didDomainReload) (at :0)

    • @Wind_mill
      @Wind_mill Рік тому

      원인을 찾아습니다. 수식이 버그였네요. 감사합니다. &과""을 추가한경우 발생하네요.

    • @unitynote
      @unitynote  Рік тому

      해결하셨다니 다행이에요