카드게임 튜토리얼 같은거 찾아보면 죄다
SO에다가 카드이름 설명 카드이미지 수치정도만 박아두고
데미지 6 체력 6 주고 치고 박는 정도의 카드 구현 밖에없더라고
내가 원하는건
카드에 개별적으로 스크립트를 부여하고 예를들어 광역 체력회복같은게 있다고 치면
이 스크립트를 카드를 낼때 나오도록 구현하고싶은데
첨에 추상화해서 클래스안에 using박고 오버라이드로 개별구현할려했는데
SO나 인스펙터를 통해 배열안에 스크립트만 쑤셔넣는건 안되는거같아서 좀 고민중임
진짜 대충 하드코딩하면 구현은 될거같은데
좀 확장하기 편하고 보기좋은 방식을 찾고 싶은데
뭐라검색해야할지 모르겠더라고
어떤식으로 구현하는게 좋을까?
so에 이벤트 연결 될텐데
무조건 게임오브젝트 사용해야됨??
내가 이부분 많이 고민했는데, 먼저 단순 수치로 SO 저장 가능한 값들 (코스트, 대미지, 체력 등) / 비슷한 기능인데 자주 쓰이는 것들 (전함, 죽메 등) / 복잡하고 유니크한 효과들 이렇게 나누어서 앞의 2개는 SO, 3은 스크립트 확장으로 만드는 게 제일 나은 것 같음
그 3번은 어떤식으로 구현하는게 나을까??
카드 SO가 OnAffect라는 이름의 효과 SO의 리스트를 가지게 하고, 효과 SO는 필요에 따라서 상속해서 구현한 뒤에 SO 객체로 만들어서 참조시키는 느낌
카드 낼 때 카드 정보 받아와서 이름으로 switch case 아니면 if 뺑뺑이 돌리기
하드코딩할려면 이렇게 할려했는데 이렇게 해도됨??
SO나 인스펙터를 통해 배열안에 스크립트만 쑤셔넣으면 됨. 하드 코딩할 생각이면 SO안에 enum으로 기능들을 박아넣던가. 인갤 애들 중에 착각하는 애들이 너무 많은게 SO는 그냥 Serialize 가능한 class일 뿐임. 그냥 class로도 가능하다면 SO로도 가능함.
유니티 초보라그런데 스크립트만 쑤셔넣을려다가 실패해서 이글쓴건데 어떻게 쑤셔넣음? 게임오브젝트에 실어서넣는수밖에 없음?
SerializeReference라고 class 자체 선택할 수 있게 Serialize 해주는 어트리뷰트가 있는데 유니티 초보면 혼자 공부하기에 좀 어려울 수 있음. 한번 찾아보셈. 대안으로는 니가 원하는 기능들을 class로 만든 뒤에 SO에 변수로 다 만들어주고 enum으로 선택해서 기능 실행할 수 있게 만드셈(=하드 코딩)
private Heal heal = new Heal(); private Attack attack = new Attack(); switch (type) case Function.Heal: heal.Do(); 이런 식으로 하드 코딩. 매우 안좋은 방법이긴 하지만 되는 방향으로 가야지
ㄳㄳㄳ
위에꺼 트라이해보고 안되면 하드코딩해야겠네