거두절미하고 설명해보면
현재 몬스터가 죽으면 랜덤한 보석(재화)을 떨구고 있는 드랍테이블을 구상하고 있고
방법은 Instantiate로 보석 프리펩을 생성시키고 있어요
궁금한 점은 몬스터가 죽을때 그 몬스터에 맞는 드랍테이블 확률에 따라서 (EX : A몬스터 10~20, B몬스터 20~50)
보석의 랜덤한 enum값과(보석의 타입), 그 보석의 양을 정해주면서 생성하려고 하는데
현재는 DropManager라는 스크립트를 만들어서
몬스터가 죽으면서 얻는 값을 -> Manager에 넘겨주고
-> 보석이 생성되면서 Manager에서 값을 받아와 보석의 양과 타입이 정해짐 [몬스터가 죽을 때마다 반복]
이런 '최근의 죽은 몬스터의 정보를 저장하고 받아오는 방식'으로 구현하는게 최선으로 판단하고 있는데
간단한 방법이 있을 거 같아서..
다른 방식으로 프리펩을 생성하는 동시에 정보를 주입하여 생성하는 방법이 있을까요?
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
아래는 혹시라도 설명이 부실할까봐 위에서 서술한 방식으로
예전에 만들었던 총알을 맞은 적 위에 데미지 로그 만들기 예시라도 가져와봤어요..
// Bullet Script
if (collision.gameObject.tag == "Enemy")
{
Enemy enemy = collision.GetComponent<Enemy>();
GameManager.instance.damageManager.recentDamage = finalDamage;
GameManager.instance.damageManager.recentEnemy = enemy; // 적 정보
GameManager.instance.damageManager.GetDamage(0);
}
// Damagelog Script
enemy = GameManager.instance.damageManager.recentEnemy;
myText.text = GameManager.instance.damageManager.recentDamage.ToString(); // 최종 데미지 표기
transform.position = new Vector2(enemy.transform.position.x, enemy.transform.position.y + 0.5f); // 몬스터 위치에 생성
게임룰과 드랍테이블이 어떤 형태인지 모르겠는데.. 몬스터에게 미리 드랍되는 아이템 목록을 id나 so, 뭐 간단하게는 퍼블릭 변수로 정해두고 죽을 때 확률로 생성하게 하면 매니저를 거치지 않아도 될 것 같아여 근데.. 어차피 죽은 몬스터들 데이터(킬 카운팅, 경험치 뭐 등등)를 사용할 일이 분명 생기기 땜에 지금 형태도 문제는 없을 것 같음
(주의) 뉴비의 답변입니다
드랍테이블쪽 코드도 올려보려다가 난잡하고 길어질까봐.. 단순하게 몬스터가 죽을때 1~10의 난수와 A라는 프리펩을 항상 생성하는데 A라는 프리펩에 생성된 1~10의 정보를 쉽게 받는 방법이 있는지 궁금했어요 킬카운팅, 경험치 내용은 생각못했는데 혹시라도 다른 방법으로 수정하더라도 매니저는 둬야겠네요 답변 정말 감사합니당
몬스터 스크립트에서 확률계산하는 로직을 매니저로 분리하는게 좋아보임
몬스터는 몬스터 자신에 대한 로직만 작성하고, 죽으면 DeadEvent같은 이벤트만 호출해줌 매니저에서는 몬스터 이벤트에 드랍데이블 확률 계산하는 로직까지 작성된 함수 등록해서 프리펩 생성하게하면 될듯
오.. 감사합니다 지금은 죽은 몬스터 ID감지하려고 모든 몬스터에 switch문이 들어간 스크립트를 넣어놨는데 말씀하신대로 매니저에서 전부 정리해버리는게 가독성이랑 최적화 면에서도 좋아보이네요