관리 메뉴

정보선생님 수아

Special) 인벤토리 구성하기-1 본문

GameEngine/Unity3D

Special) 인벤토리 구성하기-1

정보선생님 수아 :D 2017. 10. 3. 14:42

본 수업내용은 생각보다 어렵기 때문에 스크립트를 잘 보시길 바랍니다 :D




------------소스코드 및 이미지 파일------------


Unity 12) Inventory_with_non_use_DB.zip


------------소스코드 및 이미지 파일------------







본 수업은 어느게임에서든 활용할 수 있는 인벤토리 만들기입니다.

인벤토리라는 주제 자체가 쉬운 주제는 아니기 때문에,

가능한 소스코드를 유의해서 봐 주기 바랍니다.

 더불어 본 스크립트에 사용된 소스는 다른 곳에도 유용하게 사용될 수 잇는 것들이 많기 때문에 

실제 코드로도 응용할 수 있습니다 :D




카카오톡 플러스친구에서 '정보선생님 수아'를 추가해주세요 :D



9 Comments
  • 프로필사진 학생 2018.10.04 11:32 안녕하세요 강좌 정말 감사합니다. 잘보았습니다.
    혹시 여기서 사용한 아이템 파일을 사용해서 게임을 만들어도 될까요??
  • 프로필사진 2018.10.11 02:27 비밀댓글입니다
  • 프로필사진 학생 2019.08.07 11:56 안녕하세요 선생님 강의 정말로 유용했습니다.
    혹시 아이템 아이콘 이미지 파일을 제가 만들고 있는 게임에 사용해도 될까요?
  • 프로필사진 2019.09.21 17:57 비밀댓글입니다
  • 프로필사진 감사합니다.!! 2019.08.22 12:24 안녕하세요 우연찮게 이런 좋은 강의를 접하게되었습니다.
    한가지 궁금한점이 있는데, item.cs 에서 icon 속성은 별도의 방법으로 다룬다고 주석을 달아놓으셧더라구요ㅕ
    이게시글에선 설명이 되있지않은데 혹시 간략하게나마 설명 부탁드려도 될까요
  • 프로필사진 2019.09.21 17:58 비밀댓글입니다
  • 프로필사진 인벤토리 찾다가... 2019.08.25 00:24 안녕하세요. 포트폴리오에 인벤토리 추가방법을 몰라서 참고 하려고 위에꺼 그대로 따라 해봤는데 오류가 나서 질문드립니다. ArgumentOutOfRangeException: Argument is out of range.
    Parameter name: index라고 문구가 뜨는데 여길 클릭하면
    인벤토리 스크립트 쪽에서
    for(int i=0; i<slotX*slotY; i++)
    {
    if(db.items[i] != null)
    {
    inventory[i] = db.items[i];
    }
    else
    {

    }
    }

    이부분에서 에러가 나는데... 어떻게 수정 해야할지 잘 몰라서 문의 드립니다.
    찾아보니까 비어있는 List에 접근하려고 해서 뜬거라는데
    유니티에서 따로 무엇을 만져야 하는지요??
    slotx:5
    sloty:4로 변경해놓았습니다.
  • 프로필사진 2019.09.21 17:57 비밀댓글입니다
  • 프로필사진 도와주세요 2020.05.15 18:59 다 따라하고나서 실행해보니 아이콘이미지가 안떠서 물어봅니다.

    ItemIcon 속성을 Texture2D로 하면 inventory에 넣을때
    Icon이 null값이 나옵니다.

    혹시몰라서 Sprite로 변경한뒤에 넣어보니 들어가긴 했는데 Texture2D 속성이 아니라서 GUI.draw 나sprite.create 같은걸 사용 못하더라구요.

    방법을 모르겠습니다 도와주세요 ㅠ

    =======================

    해결했습니다 !
    Sprite를 Texture로 바꾸는 작업을 했습니다.
    Texture ConvertSpriteToTexture(Sprite sprite)
    {
    try
    {
    if (sprite.rect.width != sprite.texture.width)
    {
    int x = Mathf.FloorToInt(sprite.textureRect.x);
    int y = Mathf.FloorToInt(sprite.textureRect.y);
    int width = Mathf.FloorToInt(sprite.textureRect.width);
    int height = Mathf.FloorToInt(sprite.textureRect.height);

    Texture2D newText = new Texture2D(width, height);
    Color[] newColors = sprite.texture.GetPixels(x, y, width, height);

    newText.SetPixels(newColors);
    newText.Apply();
    return newText;
    }
    else
    return sprite.texture;
    }
    catch
    {
    return sprite.texture;
    }
    }

댓글쓰기 폼