유니티 컴퍼넌트 복사에대해 질문합니다.

조회수 1504회

유니티를 공부중입니다.

아이템생성관련 작업중인데 문제가생겼습니다.

방식은 아이템 이름이 같더라도 능력치가 다르도록(디아블로형식) 계속해서 아이템을 생성합니다.

그때그때 생성하는 아이템을 주인공이 얻는다면 저장이되고, 그렇지 않다면 삭제됩니다.

순서는

매니저에서 1초마다 아이템생성 -> 몬스터가 죽을때 아이템을 드랍한다면, 매니저가 들고있는 아이템을 몬스터의 itemscript에 참조 -> 그 아이템을 캐릭터의 인벤토리가 다시한번 참조한다.입니다.

문제는 이 때, 캐릭터가 얻은 아이템마저 1초마다 바뀌는 경우가 발생합니다.

그래서 복사에대해 알아보는데, 공부가 얕다보니 한번에 되진않네요.

따로 일하면서 하는 공부라 시간적여유가 많지않아 질문드립니다.

ITEM클래스의 경우 여러가지 옵션을 가진 추상클래스이고,

public abstract class Item
{
    public ItemType ItemType { get; set; }
    //....
    public Quality Quality { get; set; }

    public Item()
    {

    }

    public Item(ItemType itemType, Quality quality)
    {
        this.Quality = quality;
     this.ItemType= itemType;
    }
}

ITEMSCRIPT가 이를 사용할 수 있도록합니다.

public class ItemScript : MonoBehaviour
{
    private Item item;
    public Item Item
    {
        get
        { return item; }
        set
        {
            item = value;
            spriteNeutral = Resources.Load<Sprite>(value.SpriteNeutral);
        }
    }

    public Sprite spriteNeutral;

    public void Use(Slot slot)
    {
        item.Use(slot, this);
    }

    public string GetTooltip(Inventory inv)
    {
        return item.GetToolTip(inv);
    }
}

몬스터는 생성될 때,

public class EnemyAttribute

 tempScript.Item = GameInformation.Instance.FarmContainer.PooledItem[itemroullete_];



 GetComponent<ItemScript>().Item = tempScript.Item;

에 의해 매초 생성되는 아이템 중 하나를 랜덤으로 갖습니다.

그리고 죽으면서

  PlayerTrigger.Instance.inventory.AddItem(GetComponent<ItemScript>());

에 의해 캐릭터에게 아이템을 건네주는 형식이죠.

모두가 참조이다보니 발생하는 문제인 것 같고..

도움 부탁드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)