inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템

다운캐스팅 에러?

395

Vanellope i

작성한 질문수 13

0

안녕하세요

궁금한게 있습니다.

강의에서 Quest ScriptableObject를 Instantiate()로 복제를 하는데

상속받은 Scriptableobejct에 다운캐스팅을 하면 null이 되는데 왜그러는지 모르겠습니다.

 

예를들어

A 라는 scriptableobject가 있고

B : A 라는 상속받은 scriptableobject가 있을떄

A a = new A(); 를 생성하고

a.num = 10;을 한 상태에서

B b = Instantiate(a) as B;

b.Id = 2;

이렇게하면 b는 null이 됩니다.

제가 원하는건 b.num = 10; 이고 b.id = 2;인 데이터가 생성되는것인데

a는 null이 아닌데 다운캐스팅만 하면 null이 됩니다 ㅜㅜ

 

unity

답변 1

0

Developer G

안녕하세요.

뭔가 착각을 하신듯합니다. B가 아닌 A를 생성하셨으니 B로 Casting이 안되는 것입니다. 상속 관계라고해서 무조건 Casting이 되는게 아닙니다. 실제 상속 관계에 있는 하위 객체를 생성하셔야 위로 올라갔다, 아래로 내려오는 Down Casting이 가능합니다. 원하시는대로 작동하려면 다음과 같이 코드를 작성하시면 됩니다.

A a = ScriptableObject.CreateInstance<B>() as A;
a.num = 10;
B b = Instantiate(a) as B;
b.id = 2;

감사합니다.

0

Vanellope i

아하 감사합니다 잘못 이해하고있었네요 ㄷㄷ

Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.

0

31

2

Quest System의 확장성에 대한 질문

0

109

1

공부 방향에 대해 궁금한 점이 있습니다.

0

147

2

End()와 Complete() 함수를 따로 구현한 의도

0

171

2

Target의 value에 Object 자료형 관련 질문입니다!

0

153

2

TaskGroupState에 대하여 질문이 있습니다

0

115

2

Elite와 Normal Germ의 IsTarget()질문입니다.

0

102

2

퀘스트 시스템을 확장하면서 생긴 의문점 입니다.

0

169

2

퀘스트 클리어해도 동일 퀘스트가 노출됩니다

1

133

3

퀘스트 누적 클리어 횟수에 대해 여쭤보고싶습니다.

0

89

1

프로퍼티 사용 질문입니다.

0

123

1

Task 에서 Object 타입 사용

0

124

2

파일 저장방식, 퀘스트 실패에 관하여 여쭤보고싶습니다.

0

222

1

Destroy() 지연 파괴에 관하여

0

143

1

Action & Delegate

0

183

2

강의에서 리워드 관련 언급은 없으셔서 질문드립니다.

0

282

1

궁금한게있습니다

0

298

1

스크립터블 오브젝트 Instantiate?

0

443

1

원하는 타이밍에 퀘스트를 등록하고 싶다면 어떻게 해야할까요

0

344

1

Quest Cancel() 메소드

0

269

2

Task의 IsEqual

0

232

1

실전예제 UI 자료

0

200

1

스크립터블 오브젝트

1

333

1

Task 예시

1

173

1