해결된 질문
작성
·
74
0
안녕하세요. 선생님의 2D 플렛포머 게임 강의 3 - 1과 관련하여 질문이 있어서 남깁니다.
StageData.cs 코드를 작성 후 Project의 + 를 클릭하면 Stage라는 버튼이 떠야되는데 밑에와 같은 문구가 뜨면서 활성화가 되지 않는 현상이 일어납니다. 이런 경우 어떻게 해결해야되는지 알 수 있을가요?
CreateAssetMenu attribute on StageData will be ignored as StageData is not derived from ScriptableObject. UnityEditor.AttributeHelper:ExtractCreateAssetMenuItems ()
답변 1
0
using UnityEngine;
[CreateAssetMenu(fileName = "NewStageData", menuName = "Stage")]
//[CreateAssetMenu]
public class StageData : MonoBehaviour
{
[Header("Camera Limit")]
[SerializeField]
private float cameraLimitMinX;
[SerializeField]
private float cameraLimitMaxX;
[Header("Player Limit")]
[SerializeField]
private float playerLimitMinX;
[SerializeField]
private float playerLimitMaxX;
[Header("Map Limit")]
[SerializeField]
private float mapLimitMinY;
// 외부에서 변수 데이터에 접근하기 위한 프로퍼티 Get
public float CameraLimitMinx => cameraLimitMinX;
public float CameraLimitMaxX => cameraLimitMaxX;
public float PlayerLimitMinX => playerLimitMinX;
public float PlayerLimitMaxX => playerLimitMaxX;
public float MapLimitMinY => mapLimitMinY;
}
코드는 위와 같이 작성하였는데 코드 문제 때문에 그런건가요?
public class StageData : MonoBehaviour
요 부분에서 상속받는 부모 클래스를 MonoBehaviour -> ScriptableObject로 변경해야 합니다.
유니티에서 대표적으로 상속받는 MonoBehaviour, ScriptableObject 두 클래스 중
MonoBehaviour를 사용하면 게임오브젝트에 컴포넌트로 등록해서 사용할 수 있고,
ScriptableObject를 사용하면 Project View에 Asset의 형태로 저장할 수 있습니다.