카트라이더 인벤토리 - 가장 간단한 DB 관리방법

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ม.ค. 2025

ความคิดเห็น • 79

  • @gorani_TV
    @gorani_TV  5 ปีที่แล้ว +8

    2:04 프로젝트 만들기
    7:47 엑셀 유니티 연동
    9:46 전체 아이템 리스트
    15:55 텍스트 저장하기
    17:35 JSON 변환
    20:20 탭에 따라 내 아이템 보이기
    25:16 사용 중 표시
    29:09 아이템 이미지와 체크박스
    33:38 설명창 띄우기
    38:14 캔버스에서 마우스 위치
    41:28 설명 내용 표시
    43:19 아이템 얻기, 삭제
    48:46 초기화
    50:00 인덱스로 아이템 정렬
    52:13 개수 입력 안 해도 1개
    53:15 내 아이템 저장 방법

  • @gorani_TV
    @gorani_TV  5 ปีที่แล้ว +2

    * 중요
    여기까지는 유니티 에디터 상에서만 제대로 작동합니다
    그래서 모바일 JSON 암호화 저장 (+ 전체 해상도 대응법)
    th-cam.com/video/z-eBBEw8gbw/w-d-xo.html 편을 꼭 보시는 것을 추천드립니다

  • @김태훈-x6x
    @김태훈-x6x 4 ปีที่แล้ว +2

    오타 때문에 고생 안하도록 전체 프로젝트와 리소스, 스크립트까지....!!
    이 영상 하나만으로도 배울게 참 많네요.
    좋은 영상에, 학습자를 배려한 여러가지까지.. 정말 감사합니다 !!

  • @user-qh9xl9ry7d
    @user-qh9xl9ry7d 3 ปีที่แล้ว

    시간 날 때마다 고라니님 강의 중에 필요한 거 몇 개씩 듣고 있는데 이 강의가 설명이 제일 군더더기 없고 깔끔하네요. 내용도 쉽고 유용합니다.

  • @earform-korea
    @earform-korea 2 ปีที่แล้ว +1

    고라니님 클래스101 듣고 재미를느껴 천천히 유튜브로 잘보고있습니다.
    split 에대해 잘몰라여쭤봅니다....
    split('/n'),('/t')
    /n =엔터이고 /t는 탭이란것은 정해진약속같은것일까요?
    split ( ' : ' ) 이렇게쓰면 "안녕 : 잘가" 안녕=0번째 잘가=1번째 이렇게사용하는것만알고있었어서요..
    그렇다면 /n이면 엔터전에 0번째 엔터후에1번째 엔터후에 2번째 이런식인걸까요?

    • @gorani_TV
      @gorani_TV  2 ปีที่แล้ว


      =엔터이고 \t는 탭이란것은 정해진약속같은것일까요? -> 네 약속입니다 / 슬래시가 아닌 백스페이스 옆의 원 표시 \ 입니다
      string testStr = "안녕
      잘가
      요";
      string[] testStrs = testStr.Split('
      ');
      foreach (var str in testStrs)
      {
      print(str);
      }
      Split은 문자열 배열을 반환합니다
      testStrs[0]은 "안녕"
      testStrs[1]은 "잘가"
      testStrs[2]은 "요"

  • @Great_Yi_Soon_Sin
    @Great_Yi_Soon_Sin 3 ปีที่แล้ว

    획득 저장 불러오기 재활용 초기화에 대한 이해가 많이 되었습니다. 정말 고맙습니다.

    • @gorani_TV
      @gorani_TV  3 ปีที่แล้ว

      감사합니다

  • @Marshall_312
    @Marshall_312 5 ปีที่แล้ว +4

    옹~~ 잘듣고 갑니당

  • @후리미엄-l3i
    @후리미엄-l3i 2 ปีที่แล้ว

    보는 저도 재밌네요. 좋은자료 주셔서 감사합니다

  • @suyeonkim6002
    @suyeonkim6002 3 ปีที่แล้ว

    하 진짜 감사합니다. 진짜 명쾌한 설명 감동받았어요 ㅠㅠ

  • @dagilllll
    @dagilllll 3 ปีที่แล้ว

    좋은 강의 감사드립니다. 궁금한 부분이 있는데요. 아이템을 사용중일 경우 능력치나 옵션의 증가부분은 어떤식으로 구현해야 좋을까요??... 돼지를 장착하면 체력이 50증가한다 이런것들을 보통 어떤식으로들 구현하나요?

    • @gorani_TV
      @gorani_TV  3 ปีที่แล้ว

      가지고 있는 리스트에서 Name이 있는지로 판단하시면 됩니다

  • @ulysses8871
    @ulysses8871 3 ปีที่แล้ว

    하.. 이 강의는 많은 사람들이 봐야되요. 정말 많은 도움됐습니다 선생님. 좋아요 계속 누를순 없나..

  • @유진한-b7j
    @유진한-b7j 3 ปีที่แล้ว

    대박. 이런거 더 올려주세용. 고맙습니다

  • @guylucky1508
    @guylucky1508 3 ปีที่แล้ว

    진짜 강의 최고급 강의다 설명 미쳤다 감사합니다

    • @gorani_TV
      @gorani_TV  3 ปีที่แล้ว

      정말 감사합니다

  • @송병선-x9k
    @송병선-x9k 5 ปีที่แล้ว

    좋은 강좌 감사합니다!
    궁금한 점이 있는데요. 인벤토리가 카트라이더 처럼 아이템 종류(탭)이 많지만 소유하고있지 않은 아이템도 보이게하는 인벤토리일 경우에는
    ItemList 1개로 관리하는 것 보단 각 종류마다 ItemList를 생성해서 관리하는게 좋은가요??

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว

      개인적으로 볼 때 리스트가 하나이면 더 편하다고 생각해요

  • @심현우-y3s
    @심현우-y3s 5 ปีที่แล้ว

    강의 정말 좋네요! 한가지 궁금한 점이 있는데
    item 클래스의 변수들을 만들때 string이나 bool 말고 다른 변수형으로 만들면 저장할때 뭔가 문제가 생겨서 다른 변수형으로 만들지 않는건가요? 아니면 저장을 했다가 로드할때 string 형식으로 반환받아서 item 클래스에 넣어야 하기 때문에 string과 bool 형식만 사용하신 건가요?아니면 다른 이유가 있는건가요?정말 궁금합니당!!

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว +1

      방금 테스트 해보니 int도 잘 되네요. int.Parse("5")로 해봐도 잘 되구요. 그 때 테스트 해 볼때, 어떤 이유로 int가 저장이 먹통이 되었었는데 제가 뭔가 잘못 했나봐요.

    • @심현우-y3s
      @심현우-y3s 5 ปีที่แล้ว

      @@gorani_TV 오 인트도 된다니 엄청나게 희소식이네요 답변 감사합니당

  • @rupang8346
    @rupang8346 4 ปีที่แล้ว

    고라니님. 이런 방식으로 저장하고 googleplaystore에 출시했을때 앱을 업데이트해도 저장내역이 유지되나요?? 아니면 playerprefs같은데에다 string으로 저장해야 되나요?? 혹시 아시면 답해주시면 감사하겠습니다.

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      PlayerPrefs의 데이터도 유지 됩니다. 텍스트 파일도 초기화를 하지 않는 이상 될 걸로 보입니다.

  • @안성훈-g2e
    @안성훈-g2e 4 ปีที่แล้ว

    안녕하세요 고라니님 영상 잘 보면서 배우고있습니다
    한가지 궁금한점이 있는데
    15분에 List는 참조다입이라 New로 생성하고 그다음에 Add로 추가하는걸로 알고있는데
    List AllItemList = new List() 을 쓰지 않고 바로 Add해도 괜찮은 이유를 알고싶습니다
    Add를 하면 저절로 생성이 되는건가요?

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      지역변수는 무조건 초기화해야 하지만, 전역변수는 사용자를 고려해 초기화하지 않아도 알아서 껍데기를 만드는 듯 합니다.

    • @안성훈-g2e
      @안성훈-g2e 4 ปีที่แล้ว

      @@gorani_TV 그렇군요! 덕분에 지식이 하나더 늘어갑니다 친절하고 빠른 답변 감사드립니다!!!

  • @박정수-w6u9u
    @박정수-w6u9u 4 ปีที่แล้ว

    좋은 영상 너무너무 감사합니다!!
    내용중에 리셋 이휴 초기아이템부분 궁금한게있는데요.
    피그 하나만 추가하셨는데 다른 아이템도 추가하고싶으면 코드 작성을 어떻게 해야되나요?ㅠ

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว +1

      피그 아래 또 하고싶은 거 하면 됩니다

    • @박정수-w6u9u
      @박정수-w6u9u 4 ปีที่แล้ว

      @@gorani_TV 감사합니당!혹시... 다음엔 장착 교체 같은 영상 계획없으신가요?ㅠ

  • @illucoder595
    @illucoder595 4 ปีที่แล้ว

    영상 너무잘봤습니다
    나중에 의문이 든게... text를 string으로 배열에 저장해놓아서 이 값을 바꾸려면
    (int.Parse(curItem.Number) + 10).Tostring 으로 집어넣어야되잖아용
    이게 string값을 int로 변환후 계산 후 다시 string으로 변환하시는데, 복잡한 계산식의 경우 너무 길어지고 복잡해지지않나요?? 혹시 더 간단히 할 방법은 없을까요 ㅎㅎ..

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      유니티 허브에 답변대로 tsv는 ToString해야하지만 json은 jsonUtility사용하면 됩니다 현재는 tsv라 미리 변수 만들고 넣었다 사용하세요

  • @안녕차차-s4j
    @안녕차차-s4j 3 ปีที่แล้ว +1

    제이슨닷넷 하면 에러가 나와서 적용안하고 해보는데 가능하네요. 그리고 41분 54초에 Getchild같은 경우는 GetChild(0)로 변수로 하나 받고 거기서부터 다시 GetChild(1)으로 image비교하면 자식 아래 자식으로 접근 가능하며 설명창 파란 배경이미지가 사라지지 않고 아이템과 같이 뜨게 할 수 있는거 같아요. 강의가 어떤 부분은 이해 어렵긴하지만 많이 배우고 있습니다.

    • @gorani_TV
      @gorani_TV  3 ปีที่แล้ว

      감사합니다

  • @dogblack2532
    @dogblack2532 3 ปีที่แล้ว

    진짜 천재다 ㄷㄷ

  • @Jerry-e7p
    @Jerry-e7p 4 ปีที่แล้ว

    정말 감사합니다~~

  • @1000-m5r
    @1000-m5r 5 ปีที่แล้ว

    영상 잘봤습니다! 감사해요 질문이 있는데 변수 하나가 수정되어도 제이슨을 통으로 저장해야하나요? 뭔가 비용적으로 괜찮은지 궁금하네요

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว

      +김병준 네 텍스트로 저장하는 방식은 그렇게 해야 해요. 많은 분들이 이 방법으로 저장해 오셨으므로 비용문제는 걱정 안 하셔도 될 듯 합니다
      또는 Load를 시작할때만 불러오므로 게임을 종료하기 전에 딱 한 번만 내 아이템을 저장하는 방식을 사용할수도 있겠습니다

    • @1000-m5r
      @1000-m5r 5 ปีที่แล้ว

      @@gorani_TV 답변 감사합니다! 또 디비 관련 질문인데 제가 바이너리로 저장을 하다가 json이 좋다는 이야기를 들어서 강좌를 찾아보게 되었는데요 바이너리는 하나가 에러가 나면 파일 전체가 날아가는 리스크가 있어서 안쓰려고요 ㅠㅠ 제이슨은 파일을 따로 아이템 제이슨 파일, 무기 제이슨 파일, 유저정보 제이슨파일 이렇게 따로 분리해서 저장하나요? 강좌를 보니 로드할때도 개별적으로 불러와도 문제가 없을것 같아보여서 질문드립니다!

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว +1

      네 원하시는 방법 마음대로 변형해서 쓰셔도 됩니당

    • @1000-m5r
      @1000-m5r 5 ปีที่แล้ว

      @@gorani_TV 최고십니다 ㅎㅎ

  • @user-np6gw2fi8v
    @user-np6gw2fi8v 3 ปีที่แล้ว

    14:49 졸귀..

  • @돈도니-y8l
    @돈도니-y8l 3 ปีที่แล้ว

    정말 좋은 영상 감사합니다. 덕분에 많은 도움이 되었습니다.
    궁금한게 있는데 Tabclick 에서 ' // 아이템 이미지와 사용중인지 보이기 ' 부분에서 i 값을 로그로 찍어보았습니다.
    근데 다른 아이템을 클릭할때마다 for문을 도는 횟수가 2배씩 증가해서 몇번 클릭해도 느려집니다..제가 뭔가를 빠트린걸까요..

    • @gorani_TV
      @gorani_TV  3 ปีที่แล้ว

      슬롯이 혹시 계속 증가하고 있나요?

    • @돈도니-y8l
      @돈도니-y8l 3 ปีที่แล้ว

      @@gorani_TV 문제점 해결했습니다~!!
      추가: 슬롯은 증가하지 않았습니다..클릭시마다 Loop되는 이유가 있었습니다..제가뭔가를 잘못썻나보네요..ㅠ

  • @JJ-zj9zv
    @JJ-zj9zv 4 ปีที่แล้ว

    8:36 이부분에서 텍스트 에셋의 맨마지막줄 마지막열 스트링에 화이트스페이스가 생기던데 혹시 이부분은 어떻게 해결해야 하나요?

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      그대로 두시기 바랍니다

  • @kekeke33249
    @kekeke33249 4 ปีที่แล้ว

    라니님 영상보고 응용 중인데 14:58 25번째 줄 ItemDatabasse.text.lenght 부분에-1 해주는거 당연하게 이해가는데 적용시키면 마지막 줄 데이터가 완전히 삭제되고 -1 없애면 잘 나오는데 어느 부분이 문제일까요 그리고 -1 안해준것때문에 연쇄돼서 그런거 같은데 row의 마지막 값 (영상에서의 true)이비교 자체가 불가능 해집니다
    비교값 데이터베이스 값 둘 다 TRUE 같은데 비교가 안되서 무조건 false로 판정되고 다른 단어도 바꿔봐도 당연히 같네요 ㅠ
    ROW 마지막에 빈 값을 temp로 임시로 추가 해보니 비교되고 마지막 값이 된 temp는 역시 비교가 안되는 값이 돼버리네요 이런식으로 매꿔놨긴 했는데 도저히 이유를 모르겠습니다 짐작 가는 부분이라도 있으시면 알려주세영

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      -1은 엔터때문입니다. 아이템 DB를 다시 확인해 엔터가 있으면 -1을 하세요. 여러가지로 바꾸면서 해보세요

  • @즁-u8g
    @즁-u8g 4 ปีที่แล้ว

    37:46
    여기 부분에서 왜 스탑코루틴만 따로 변수에 넣어서 실행하는지 궁금합니다!

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว +1

      스타트 코루틴 또한 변수에 넣었습니다. 변수에 저장을 안하면 플레이되고 있는 코루틴을 못 불러오기 때문입니다

  • @kekeke33249
    @kekeke33249 4 ปีที่แล้ว

    선생님은 유튜브에 보배십니다

  • @better-programmer
    @better-programmer 4 ปีที่แล้ว

    오랜만에 댓글 쓰네유 쓰는 이유는 문제점이있기때문입니다 이건 저만의 문제일 수 있지만 코드 첫부분에 받으실 때 Split('
    ')으로 나누셨잖아여 그렇게되면 유니코드에 의해 /n이라는 줄바꿈도 같이 문자로 변경됨니다 그래서 길이를 찍으면 하나 더 나오더라구요 이 문제는
    ->\t으로 하여 쉽게 고칠 수 있습니다~~

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      문자열 리터럴 아스키코드 13번 '
      ' 때문이네요. 감사합니다
      // 전체 아이템 리스트 불러오기
      string[] line = ItemDatabase.text.Substring(0, ItemDatabase.text.Length - 1).Split('
      ');
      for (int i = 0; i < line.Length; i++)
      {
      line[i] = line[i].Trim(); //이거 추가
      string[] row = line[i].Split('\t');
      AllItemList.Add(new Item(row[0], row[1], row[2], row[3], row[4] == "TRUE", row[5]));
      }

    • @better-programmer
      @better-programmer 4 ปีที่แล้ว

      @@gorani_TV 저 같은경우 이렇게 했습니다
      string[] line = kkutodatabase.text.Substring(0, kkutodatabase.text.Length - 1).Split('\t');
      for (int i = 0; i < line.Length; i++)
      {
      Debug.Log(line[i]+"\t"+ line[i].Length);
      }
      데이터베이스는
      이것이리얼여자캐릭터가생각대로그려지는책 이멋진세계에축복을붉은전설 이멋진세계에축복을 이멋진세계에폭염을 이멋진세계에일상을
      이런식으로 텝으로 나눴구요

    • @better-programmer
      @better-programmer 4 ปีที่แล้ว

      @@gorani_TV 저 그리고 유니티에서 복사 버튼 누르면 복사되고 그런건 어떻게하나여 ㅠㅠ 뭐 using system.windows.form 이였나? 그걸하면 오류가 나더라구요ㅠㅠ

  • @ShinSJ_08
    @ShinSJ_08 4 ปีที่แล้ว

    이번 게임잼 끝나면 영상 정주행 해야겠아요
    아 그리고 라니님!
    게임잼 끝나면 게임잼서버를 라니님 유튜브 서버로 바꿔요!
    거기서 소통도하고

  • @Wind_mill
    @Wind_mill ปีที่แล้ว

    json.Utillty.tojson 과 json.Utillty.Tofrom 을 통해서 되나요?

    • @gorani_TV
      @gorani_TV  11 หลายเดือนก่อน +1

      JsonUtiliy.FromJson과 ToJson이 있어요

  • @reddust1323
    @reddust1323 3 ปีที่แล้ว

    화면전환이나 설명이 너무빠르게 느껴집니다 재생속도 0.75배로하고보는데도 화면전환자체는 빨라서 일시정지하기 바쁩니다.

    • @gorani_TV
      @gorani_TV  3 ปีที่แล้ว

      의견 감사합니다

  • @포텐-k4t
    @포텐-k4t 5 ปีที่แล้ว

    초기화 눌렀을때 풍선도 기본적으로 하나를 지급하려면 어떻게 해야 할까요?

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว

      Item BasicItem = AllItemList.Find(x => x.Name == "Pig");
      Item BasicItem2 = AllItemList.Find(x => x.Name == "RedBalloon");
      MyItemList = new List() { BasicItem, BasicItem2 }; 입니다

    • @포텐-k4t
      @포텐-k4t 5 ปีที่แล้ว

      @@gorani_TV 아 감사합니다 혹시 초기화 눌렀을때 돼지가 체크돼있게 할 수 있을까요? 영상보면 체크가 해제되는데 풍선이랑 같이 체크돼있게

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว

      @@포텐-k4t
      public void ResetItemClick()
      {
      Item BasicItem = AllItemList.Find(x => x.Name == "Pig");
      BasicItem.isUsing = true;
      MyItemList = new List() { BasicItem };
      Save();
      }

  • @youngjepark5835
    @youngjepark5835 4 ปีที่แล้ว

    구글 스프레드 시트도 되나요?

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      +고니고니 네 연동만 하면 됩니다

  • @better-programmer
    @better-programmer 4 ปีที่แล้ว

    근데 이거를 클래스 말구 스트럭트라는 기능으로 하면 더 쉽긴해여 뭐 예외같은 오류가 없어서

    • @gorani_TV
      @gorani_TV  4 ปีที่แล้ว

      오 그래요?

  • @DevGomDal
    @DevGomDal 5 ปีที่แล้ว

    엑셀 json 이 저의 머리를 많이 아프게 했었죠... 나쁜 녀석

    • @gorani_TV
      @gorani_TV  5 ปีที่แล้ว

      ㅎㅎ 도움이 되셨으면 좋겠네요~

  • @김문상
    @김문상 2 ปีที่แล้ว

    카트라이더 그게... 무슨 게임 이었더라...?

    • @gorani_TV
      @gorani_TV  11 หลายเดือนก่อน

      전설속으로 사라진..