반응형
1. using directive
파일 상단에 namespace를 불러오는데 사용된다.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
2. using statement
using문을 사용하면 Resource를 사용한 후에 자동으로 정리 및 해제 되므로 메모리 낭비를 방지할 수 있다. using문이 끝나고 해당 객체를 벗어날 때 Dispose 메서드가 호출된다.
using(resource_type resource_variable = resource_initialization)
{
resource를 사용하는 코드
}
이 코드가 어떻게 자동으로 Dispose메서드가 호출될까?
이는 using문 내부적으로 try-finally 구조로 변환되어 동작하기 때문이다. 아래와 같이 위의 코드는 컴파일러에 의해 다음과 같이 변환된다.
MyResource resource = new MyResource();
try
{
// 리소스를 사용합니다.
}
finally
{
// 리소스를 정리합니다.
if (resource != null)
{
resource.Dispose();
}
}
전체 코드 예시를 통해 더 자세히 알아보자
public class MyResource : IDisposable
{
public void Dispose()
{
// 리소스 해제 코드
Console.WriteLine("Resource has been disposed.");
}
}
class Program
{
static void Main()
{
using (MyResource resource = new MyResource())
{
// 리소스를 사용합니다.
Console.WriteLine("Using resource.");
}
// using 블록을 벗어나면 자동으로 Dispose가 호출됩니다.
}
}
그럼 결과가 아래와 같이 나온다.
Using resource.
Resource has been disposed.
파일을 읽어오는 예시코드
파일을 읽거나 쓰는 작업을 위해 FileStream객체를 사용하는 경우 using문을 사용하여 fileStream을 정의하면 이를 사용한 후 using문에서 벗어나면 자동으로 닫히므로 별도로 파일을 닫아주는 코드를 작성할 필요가 없다.
이를 통해 코드가 간소화되고 파일을 안전하게 처리할 수 있다.
static readonly string FILEPATH = Application.persistentDataPath + "/Save.txt";
using (FileStream file = File.Open(FILEPATH, FileMode.Open))
{
// data는 파일의 크기만큼의 공간을 가지고 있다.
byte[] data = new byte[file.Length]; // file.Length는 파일의 크기
file.Read(data, 0, data.Length);
// data 배열을 UTF-8 인코딩을 사용하여 문자열로 변환
string text = Encoding.UTF8.GetString(data);
Console.WriteLine(text);
}
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - AsyncOperation을 사용해서 Scene 전환하면서 로딩화면 나오게 하는 법 (0) | 2023.06.18 |
---|---|
Unity - 버튼 활성/비활성 시키기(interactable) (0) | 2023.06.18 |
Unity - 게임 binary파일로 저장하고 로드하는 법(BinaryFormatter, using문) (0) | 2023.06.17 |
Unity - 게임 json파일로 저장하고 로드하는 법 (JsonUtility.ToJson, JsonUtility.FromJson) (0) | 2023.06.17 |
Unity - ScrollView 원하는 만큼 Scroll 내리는 법( anchoredPosition) (0) | 2023.06.16 |
댓글