• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

Activator 질문있습니다

24.04.15 23:39 작성 조회수 54

0

안녕하세요, 루키스님

강의 항상 잘 보고있습니다. 항상 감사합니다.

 

다름이 아니라,

스킬 데이터를 Json 형식으로 저장한 뒤 Dictionary로 파싱하여 저장하고

각 스킬 이름에 해당하는 클래스의 인스턴스를 만들어 저장하는 방식을 사용한 적이 있고, 이번에도 같은 방식을 필요한 상황이 생겼는데(인스턴스를 직접 선언해 저장하는 방식은 노가다라고 생각해서 이렇게 했었습니다)

코드는 아래와 같습니다.

리플렉션으로 스킬 타입을 가져온 뒤, Activator로 인스턴스를 생성했습니다.

Type type = Type.GetType(skill.skillName);

Skill newSkill = (Skill)Activator.CreateInstance(type);

newSkill.skillData = skill;

skillDictionary.Add(newSkill.skillData.id, newSkill);

 

처음 해당 코드를 사용할 때에는 별 생각이 없었는데,

추가적으로 리플렉션에 대해 구글에 검색하다보니 굉장히 다양한 의견들이 있더군요.

성능에 안좋다, 테스트용이다, 빌드 후에는 리플렉션 관련 코드는 사용하지 말아야한다.. 등등

 

제가 Reflection과 Activator를 사용한 부분은 게임 실행 직후에만 Json으로부터 데이터를 파싱하여 해당 타입의 인스턴스를 만들어 저장하기만 하는데,
그렇더라도 성능에 영향을 미치는지 궁금합니다.

 

혹은 위와 같이 수많은 데이터를 인스턴스화하고, 초기화 하는 다른 좋은 방법이 있을까요?

답변 1

답변을 작성해보세요.

0

매 프레임마다 호출하는게 아니라면 전혀 상관없습니다.
전체 비중의 0.00001% 차지하는 것을 어떻게든 2배 빠르게 하려고 노력하는 것은
실질적으로 별다른 의미가 있지 않습니다.

GGolDDuKi님의 프로필

GGolDDuKi

질문자

2024.04.21

그렇군요! 답변 감사합니다!