728x90
반응형
1. Resources 폴더 사용 시
Load, Instantiate를 사용하게 되는데 GameObject의 경우야 Destroy를 하면 되지만
Texture 같은 녀석들을 Load 해서 사용할 경우
예로
RawImage.texture = Resources.Load<Texture>("경로");
이럴 때는 Destroy가 아니라
RawImage.texture = null;
요런 식으로 끝내는 경우가 있는데 이렇게 되면 로드된 리소스는 계속 로드되어 있는 상태이므로 추가로
-> Resources.UnloadUnusedAssets()를 사용해서 사용되지 않는 리소스들을 언로드 시키도록 하자
* 작업하면서 많은 texture 등을 로드한 뒤 추후 언로드 할 경우에도 사용하긴 했지만 주로 씬 전환 시 사용하였음
2. Singleton 사용 시
평상시에 보통
static Managers instance;
public static Managers Instance { get { return instance; } set { instance = value; } }
private void Awake()
{
Init();
}
public void Init()
{
if (instance == null)
{
GameObject go = gameObject 또는 GameObject.Find("") 등;
if (go == null)
{
go = new GameObject { name = "Manager" };
go.AddComponent<Managers>();
}
DontDestroyOnLoad(go);
instance = go.GetComponent<Managers>();
}
else
Destroy(gameObject);
}
대략 이런 느낌으로 템플릿을 두고 사용을 하는데 씬 작업을 하다 보면 DontDestroyOnLoad를 사용하지 않고 한 씬에서만 static을 쓸 경우도 있는데 이럴 때는 꼭
private void OnDestroy()
{
instance = null;
}
요런 식으로 객체가 없어지고 난 뒤 살아있는 instance를 비워주는 습관이 필요
* OnDestroy를 항상 같이 붙여주는 습관을 만들면 좋을 듯
반응형
'Unity > Tips' 카테고리의 다른 글
Unity 확장 메서드 사용 (0) | 2022.01.19 |
---|---|
Unity delegate(대리자)와 Action 간단하지만 명확하게 + 예제 (0) | 2022.01.02 |
OnApplicationFocus, OnApplicationPause (0) | 2021.12.15 |
Unity PackageCache 등의 package 오류 (특히 Unity버전 변경 시) (0) | 2021.12.07 |
Unity Script 한글 깨짐 현상 (0) | 2021.12.06 |