[내일배움캠프 TIL] ScriptableObjects의 깊은 복사

KYJ의 Tech Velog·2023년 9월 21일
0

TIL

목록 보기
35/71
post-thumbnail

Today I Learned

오늘도 ScriptableObjects에 대한 마지막 이야기입니다.

Today I Done

문제

어제 말씀드렸듯이 ScriptableObjects로 만든 오브젝트를 수정하면 ScriptableObjects로 생성된 모든 오브젝트에 수정이 가해지게 된다고 말씀드렸습니다. 사실 이렇게 된 이유는 ScriptableObjects로 만든 오브젝트는 ScriptableObjects를 참조하고 있기 때문입니다. 다 같은 ScriptableObjects를 참조하고 있다면 수정이 같이 적용되는 것이 맞겠죠. 이것을 얕은 복사라고 합니다.

시도

저는 이를 해결하기 위해 ScriptableObjects의 깊은 복사 방법을 찾아보았습니다.

가장 먼저 찾은 방법은 ScriptableObjects를 instantiate해서 새 오브젝트에 담으면 깊은 복사를 할 수 있습니다.

var newData = Instantiate(item) as ItemData;

/* newData 신나게 사용*/

Destroy(newData);

하지만 계속 ScriptableObjects로 생성된 오브젝트를 사용하려고 이 과정을 반복하게 되면 비효율적일 것 같네요...

해결

그래서 다른 방법(Convert)도 찾아보았지만 결국 성공하지 못하고 이번 개인 프로젝트는 위의 방법으로 구현하였습니다.

알게된 것

깊은 복사의 중요성과 ScriptableObjects의 깊은 복사를 하는 방법은 설명드렸듯이 알게 되었습니다.

하지만 더 좋은 방법이 있을 수 있기 때문에 고민은 멈추지 않으려고 합니다.

시간이 나면 또 ScriptableObjects의 깊은 복사를 찾아보고자 합니다.


Tomorrow's Goal

  • 개인 프로젝트 마무리 & 제출
  • 코드 카타 Clear
  • 알고리즘 문제 풀이 공유

0개의 댓글