아이템 저장 관련 문의...

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.8.6
  • 프로젝트명 : 알피쥐
  • 스테이터스 코드 : X
  • 에러 코드 : X
  • 에러 메시지 : X

정말 쉬운문제 질문해서 죄송합니다… 진짜 몇일째 못풀고있어서요…

[System.Serializable]
public class ItemData
{
public string data_itemName;
public int data_itemAmount;
public float data_itemAtkF;
public float data_itemDfcF;
public float data_itemSpeedForce;
public float data_itemHpForce;
public float data_itemMpForce;

public ItemData() { }
public ItemData(Item rhs)
{
    data_itemName = rhs.itemName;
    data_itemAmount = rhs.itemAmount;
    data_itemAtkF = rhs.itemAtkF;
    data_itemDfcF = rhs.itemDfcF;
    data_itemSpeedForce = rhs.itemSpeedForce;
    data_itemHpForce = rhs.itemHpForce;
    data_itemMpForce = rhs.itemMpForce;
}

}

[System.Serializable]
public class Item : ItemData
{
[Header(“아이템 정보”)]
public string itemName;
public int itemAmount;
public float itemAtkF;
public float itemDfcF;
public float itemSpeedForce;
public float itemHpForce;
public float itemMpForce;

public ItemType itemType;
public PotionItemType potionItemType;
public EquipItemType equipItemType;
public Sprite itemImage;
public int itemPrice;
public int itemSellPrice;
public bool isMounting;
public int maxHaveItem;
public string itemContentText;

public Item() { }
public Item(Item rhs)
{
    this.itemType = rhs.itemType;
    this.itemAmount = rhs.itemAmount;
    this.itemImage = rhs.itemImage;
    this.itemName = rhs.itemName;
    this.itemPrice = rhs.itemPrice;
    this.potionItemType = rhs.potionItemType;
    this.equipItemType = rhs.equipItemType;
    this.itemSellPrice = rhs.itemSellPrice;
    this.maxHaveItem = rhs.maxHaveItem;
    this.isMounting = rhs.isMounting;
    this.itemAtkF = rhs.itemAtkF;
    this.itemDfcF = rhs.itemDfcF;
    this.itemSpeedForce = rhs.itemSpeedForce;
    this.itemHpForce = rhs.itemHpForce;
    this.itemMpForce = rhs.itemMpForce;
    this.itemContentText = rhs.itemContentText;

    data_itemName = rhs.itemName;
    data_itemAmount = rhs.itemAmount;
    data_itemAtkF = rhs.itemAtkF;
    data_itemDfcF = rhs.itemDfcF;
    data_itemSpeedForce = rhs.itemSpeedForce;
    data_itemHpForce = rhs.itemHpForce;
    data_itemMpForce = rhs.itemMpForce;
}

}

일단 이게 Item 스크립트 코드입니다. 아이템에서 저장할 정보만 따로 빼논 클래스가 ItemData이구요…

이제 인벤토리에 있는 아이템을 저장시키려고 예제 대로 UserData 클래스에 ItemData형 List 선언해줬구요…
public List _playerInventory_W (Weapon전용 인벤토리)

그다음에 방금 선언한 변수에 게임메니저에있는 실제 플레이어 인벤토리
-public List playerInventory_W = new List()
의 값을 넣으려는데

playerData._playerInventory_W = GameManager.ins.playerInventory_W 이렇게 넣었더니
암시적으로 Item을 ItemData로 변경할 수 없습니다가 뜨네요… Item 클래스에 ItemData를 상속시키는게 아닌가요…? 이럴때는 어떻게 고쳐야하나요… 정말 죄송합니다…

안녕하세요 개발자님
List()을 Param에 저장할 경우,
Item 클래스 내에서 public으로 설정된 변수들만 서버에 저장이 되며 private으로 된 함수는 저장되지 않습니다.

따라서 보여줄 값만 public으로 설정하고 그 외에는 접근자 형식으로 데이터를 구성하는 것을 추천드립니다.

  1. ItemData 클래스 안에 뒤끝에 넣을 데이터만 public으로 설정
  2. List로 보여주지 않을 데이터는 ItemData 클래스 내부에 있는 ItemDetail 등의 클래스로 재설정
  3. 해당 클래스에 public으로 보여주지 않을 데이터 설정
  4. ItemDetail 클래스는 private으로 설정하고 GetItemDetail() 함수 등으로 받아오게 설정

아래와 같은 코드로 구성하시는 방법을 추천드립니다.

class ItemData {
  public int itemId;
  public int itemCount;
  public float growingSpeed;
  
  private Item itemDetail;
  public GetItemDetail() {
    return itemDetail;  
  }
}

class ItemDetail {
  public int growingAtk;
  public int growingSpd;
  public int growingDef;
}

이 코드는 그럼 ItemDetail을 저장하는 코드인건가요??

Item을 저장하는 코드입니다.
ItemDetail은 Item 내에 존재하지만 저장되지는 않는 클래스 입니다. :D