[문제점]
Enemy Idle Class에서 Enemy 의 변수인 Data(EnemyData 스크립타블오브젝트)에 Collider변수를 저장한뒤
Enemy Chase Class에서 SO를 호출하니 null이 반환되는 건
[첫번쨰 대처]
1. Collider -> GameObject로 타입으로 수정한뒤 Collider의 정보가 필요할때 TryGetComponet를 이용해서 호출하였지만 되지 않았음
해당 대처를 한 이유 :
ScriptableObject에서 Collider와 같은 Unity 컴포넌트 타입은 일반적인 값이나 데이터처럼 직접 저장하거나 유지할 수 없습니다. ScriptableObject는 주로 데이터만 저장하기 위한 용도로 설계목적이기 때문
디버깅중 찾은 원인은 Enemy가 하나만 있는경우 상관이 없지만
Enemy가 여러명이 되면서 해당 Data에 접근해서 계속 Data를 바꾸게 로직을 작성함
즉, ScriptableObject는 참조형식(Class) 이기에 A Class에서 사용중이다가 B Class값을 변경하게되면 A Class에서 사용하던 데이터가 사라지기 때문이였다.

[해결방법]
Enemy Data(스크립타블오브젝트)에서는 Data 호출만하게 하고
Enemy의 Class로직을 담당하는곳에 따로 필요한 변수(Target)를 선언하여 사용하기로 함
'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글
| TIL : 2024-11-15(금) :: 유니티,C# 코드 작성시 최적화를 위해 지켜야 되는것 (0) | 2024.11.15 |
|---|---|
| TIL : 2024-11-14(목) :: ScriptableObject 는 불변 데이터를 사용하는것이 좋다. (0) | 2024.11.14 |
| TIL : 2024-11-11(월) :: MVC 패턴에 대한 간단 분석 (0) | 2024.11.11 |
| TIL : 2024-11-08(금) :: 디자인패턴 - 전략(strategy), 컴포지트(Composite), 퍼사드(Facade) 패턴 (0) | 2024.11.08 |
| TIL : 2024-11-07(목) :: 객체가 경사로를 이동할때 튀어오르는 버그 잡기(법선벡터와 투영벡터를 (0) | 2024.11.07 |
