[개발일지] 10. scriptableobject 를 상속받는 클래스의 장점

2024. 7. 24. 14:45·유니티 프로젝트/케이크게임

[공부 내용]

ScriptableObject를 상속받는 클래스가 MonoBehaviour를 상속받는 클래스보다 좋은 점은 여러 가지가 있습니다. 이 두 클래스는 Unity에서 각각의 역할이 다르며, 사용 용도에 따라 그 장점이 두드러집니다.

  1. 메모리 효율성:
    • ScriptableObject는 메모리 효율성이 뛰어납니다. MonoBehaviour는 씬 내의 각 게임 오브젝트에 부착되어야 하므로, 게임 오브젝트가 많아질수록 메모리 사용량이 늘어납니다. 반면, ScriptableObject는 에셋으로 저장되어 필요할 때 참조할 수 있으므로 메모리를 절약할 수 있습니다.
  2. 데이터 관리:
    • ScriptableObject는 데이터 중심의 설계에 유리합니다. 예를 들어, 게임 내에서 사용되는 여러 설정값, 아이템 데이터, 스킬 데이터 등을 관리할 때 유용합니다. 이러한 데이터는 ScriptableObject를 사용해 에셋으로 저장하고, 이를 여러 게임 오브젝트에서 참조하도록 하면 관리가 용이합니다.
  3. 다중 사용:
    • 하나의 ScriptableObject 인스턴스를 여러 게임 오브젝트가 공유할 수 있습니다. 반면에 MonoBehaviour는 각 게임 오브젝트마다 독립적으로 존재해야 합니다. 따라서 공통 데이터를 공유하는 경우 ScriptableObject를 사용하면 중복을 피할 수 있습니다.
  4. 씬 간 데이터 유지:
    • ScriptableObject는 씬을 전환하더라도 데이터가 유지됩니다. 반면 MonoBehaviour는 게임 오브젝트에 종속적이므로 씬 전환 시 삭제됩니다. 따라서 글로벌한 데이터나 설정값을 유지하는 데 ScriptableObject가 적합합니다.
  5. 에디터 활용:
    • ScriptableObject는 에디터 스크립팅에서 활용도가 높습니다. 커스텀 에디터를 작성하여 ScriptableObject를 쉽게 수정하고 관리할 수 있으며, 이를 통해 개발 편의성을 높일 수 있습니다.

예시

using UnityEngine;

[CreateAssetMenu(fileName = "NewItem", menuName = "Inventory/Item")]
public class Item : ScriptableObject
{
    public string itemName;
    public Sprite icon;
    public int itemID;
}

 

위의 예제에서는 Item이라는 ScriptableObject를 정의하고, 이를 통해 아이템 데이터를 관리할 수 있습니다.

이와 반대로, MonoBehaviour는 주로 게임 오브젝트의 행동을 정의하고, 씬 내에서의 상호작용을 담당하는 데 적합합니다.

따라서, 데이터 저장과 관리, 메모리 효율성, 다중 참조, 씬 간 데이터 유지 등의 이유로 ScriptableObject가 특정 상황에서는 MonoBehaviour보다 더 나은 선택이 될 수 있습니다.

 


 

[참고자료]

https://wergia.tistory.com/189

 

[Unity3D] Scriptable Object - 스크립터블 오브젝트(Scriptable Object) 기본 사용법

Scriptable Object - 스크립터블 오브젝트(Scriptable Object) 기본 사용법 작성 기준 버전 :: 2019.1 ~ 2019.2 [이 포스트의 내용은 유튜브 영상으로도 시청하실 수 있습니다] 스크립터블 오브젝트(Scriptable Object

wergia.tistory.com

https://docs.unity3d.com/kr/2022.3/Manual/class-ScriptableObject.html

 

ScriptableObject - Unity 매뉴얼

ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject의 주요 사용 사례 중 하나는 값의 사본이 생성되는 것을 방지하

docs.unity3d.com

 


 

 

이건 SerializeField 를 왜 사용하는지

https://www.ibatstudio.com/%EC%9C%A0%EB%8B%88%ED%8B%B0-serializefield-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80/

 

유니티 SerializeField 란 무엇이고 왜 사용하는가?

게임의 상태를 저장하고 로드하기 위해 지루한 코드를 작성하는 데 지치셨나요? 그럼 유니티 SerializeField 를 사용하면 편리합니다! [SerializeField]를 사용하면 스크립트에서 비공개 필드를직렬화해

www.ibatstudio.com

 

'유니티 프로젝트/케이크게임' 카테고리의 다른 글
  • [개발일지] 12. 농작물 자라는 로직 변경
  • [개발일지] 11. 중간 정리
  • [개발일지] 9. 농장 크기 업그레이드
  • [개발일지] 8. 씨앗 선택창 심기 버튼 연동 & 씨앗 구매하기 로직 추가
dubu0721
dubu0721
dubu0721 님의 블로그 입니다.
  • dubu0721
    dubu0721 님의 블로그
    dubu0721
  • 전체
    오늘
    어제
    • 분류 전체보기 (343) N
      • 프로그래밍언어론 정리 (5)
      • 컴퓨터네트워크 정리 (5)
      • 알고리즘&자료구조 공부 (64)
        • it 취업을 위한 알고리즘 문제풀이 입문 강의 (60)
        • 학교 알고리즘 수업 (3)
        • 실전프로젝트I (0)
      • 백준 문제 (196) N
        • 이분탐색 (7)
        • 투포인트 (10)
        • 그래프 (7)
        • 그리디 (24)
        • DP (25)
        • BFS (18) N
        • MST (7)
        • KMP (4)
        • Dijkstra (3)
        • Disjoints Set (4)
        • Bellman-Ford (2)
        • 시뮬레이션 (3)
        • 백트래킹 (15)
        • 위상정렬 (5)
        • 자료구조 (25)
        • 기하학 (1)
        • 정렬 (11)
        • 구현 (8)
        • 재귀 (8)
        • 수학 (8)
      • 유니티 공부 (11)
        • 레트로의 유니티 게임 프로그래밍 에센스 (11)
        • 유니티 스터디 자료 (0)
        • C# 공부 (0)
      • 유니티 프로젝트 (48)
        • 케이크게임 (13)
        • 점토게임 (35)
      • 언리얼 공부 (10)
        • 이득우의 언리얼 프로그래밍 (10)
      • 진로 (1)
      • 논문 읽기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    해시
    유니티 프로젝트
    이득우
    큐
    투포인터
    오블완
    백트래킹
    유니티
    재귀
    그래프
    백준
    이분탐색
    티스토리챌린지
    dp
    자료구조
    정렬
    그리디
    수학
    스택
    골드메탈
    바킹독
    유니티 공부 정리
    언리얼
    C#
    시뮬레이션
    레트로의 유니티 프로그래밍
    BFS
    우선순위큐
    이벤트 트리거
    맵
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dubu0721
[개발일지] 10. scriptableobject 를 상속받는 클래스의 장점
상단으로

티스토리툴바