
오늘 학습 키워드
인벤토리 만들기
오늘 학습 한 내용을 나만의 언어로 정리하기
인벤토리 만들기
- 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 작동
- 성능을 낮출 때 사용함.
- Don’t Sync
// 코드로 제어하기
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를 줄이셈
- 코드상에서도 가능함. (권장하진 않음)