오늘 학습 키워드

인벤토리 만들기

오늘 학습 한 내용을 나만의 언어로 정리하기

인벤토리 만들기

  • UI 는 그냥 보이는대로 완성

스탠다드 반 강의 (주제 : 최적화 실습)

인코딩 설정

  • 옵션 > C# > 코드 스타일 > .editconfig 파일 생성
  • .editconfig 안에 들어가서 맨 밑에 아래 추가
[*]
charset = utf-8;

FPS 보기

void Update()
{
	// unscaledDeltaTime : timeScale에 영향받지 않는 실제 시간
	deltaTimeFloat += (Time.unscaledDeltaTime - deltaTimeFloat) * 0.1f;
	m = deltaTimeFloat * 1000.0f;
	fps = 1.0f / deltaTimeFloat;
	
	fpsText.text = fps.ToString();
}

VSync

  • Project Settings > Quality > VSync Count
  • VSync
    • V Blank : 찢김 현상. 중간 중간 빈 프레임이 까맣게 표시되는데 이게 V Blank
    • V Sync : V Blank를 없애주는 현상. 만약에 V Blank가 보이면 미리 그 다음 프레임을 가져옴
  • VSync Count
    • Don’t Sync
      • 권장하지 않음.
    • Every V Blank : 모든 V Blank를 만났을 때 늘 VSync 작동
    • Every Second V Blank : 두 번 V Blank를 만났을 때 VSync 작동
      • 성능을 낮출 때 사용함.
// 코드로 제어하기
 
void Start()
{
	QualitySettings.vSyncCount = 0; // Don't Sync;
	QualitySettings.vSyncCount = 1; // Every V Blank;
	QualitySettings.vSyncCount = 2; // Every Second V Blank;
	// VSync 를 먼저 설정하고 타겟 프레임을 설정해야 함
	Application.targetFrameRate = 60f; // 기본값이 60이긴 함
}
  • 에디터를 너무 믿지 마시고, 빌드해서 테스트를 해보시라.

이미지 로드하기

using UnityEngine.Networking;
 
public class ImageLoad : MonoBehaviour
{
	public string imageUrl = "";
	public RawImage img;
	public Texture2D texture;
	
	public void BtnClick()
	{
		StartCoroutine(DonwloadImage());
	}
 
	
	IEnumerator DownloadImage()
	{
		// 이거 하고 안하고가 차이가 큼
		// img.texture == null 보다 Destory가 메모리상으로 더 이점이 큼
		if (img.texture != null) Destroy(img.texture); 
	
		using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(imageUrl))
		{
			yield return uwr.SendWebRequest();
			
			if (uwr.result == UnityWebRequest.Result.ConnectionError ||
				uwr.result == UnityWebRequest.Result.ProtocolError)
			{
				Debug.LogError("이미지 로드 실패");
			}
			else 
			{
				texture = DownloadHandlerTexture.GetContent(uwr);
				img.texture = texture;
			}
		}
	}
}
  • 성능 프로파일러를 보기

LOD

  • 부모 오브젝트에 LOD Group 컴포넌트를 넣음
  • 카메라 옮겨가면서 LOD 0, LOD 1, LOD 2 마다 렌더링 넣어주면 됨
  • Fade Mode
    • None : LOD 넘어갈 때 한번에 바뀜. WebGL이나 모바일에서 사용
    • Cross Fade : 자연스럽게 넘어감 (투명도 블렌딩). GPU 좀 먹음. 윈도우 게임에서 사용
    • Speed Tree : 다른거랑 결합해서 써야됨

Occlusion

  • 맵을 그룹화 하셈
  • 그리고 Occluder static / Occludee static 설정
  • 꼭 씬 저장하고 베이크 하시길
  • 베이크 하고 visualization 누르면 테스트 가능함

텍스쳐

  • 텍스쳐 눌러서 Default 안에 max size를 줄이셈
  • 코드상에서도 가능함. (권장하진 않음)