본문 바로가기

Unity

[Unity 유니티] 유니티에서 Json으로 데이터 관리하기 - 불러오기 / 읽기 (2) Json 파일 불러오기 / 읽기지난 포스팅에서 Json으로 데이터를 저장하는 방법을 알아보았다. 이번에는 저장된 Json 파일을 Unity에서 불러와 활용하는 방법을 소개해보려고 한다.1. Json 파일 불러오기 기초Unity에서 Json 파일을 불러오는 기본 방법은 파일을 읽은 후 JsonUtility.FromJson을 사용해 객체로 변환하는 것이다. 아래 코드로 Json 파일을 불러올 수 있다.using System.IO;using UnityEngine;[System.Serializable]public class PlayerData{ public string playerName; public int score;}public class JsonLoadExample : MonoBehaviour.. 더보기
[Unity 유니티] 유니티에서 Json으로 데이터 관리하기 - 저장 (1) 유니티와 Json게임을 개발하다 보면 데이터를 저장하고 불러와야 할 때가 많다. 유니티에서는 Json 형식으로 데이터를 쉽게 저장하고 불러올 수 있는 기능을 제공하므로 이를 잘 활용하면 관리하기가 수월해진다. Json은 데이터를 키-값 쌍으로 구조화해 가독성이 좋고, 쉽게 파싱할 수 있는 형식이다. 유니티에서는 JsonUtility 클래스를 통해 Json을 쉽게 다룰 수 있다.1. JsonUtility를 이용한 Json 변환Unity는 JsonUtility라는 유틸리티 클래스를 제공해 C# 객체를 Json 형식으로 변환할 수 있다.using UnityEngine;[System.Serializable]public class PlayerData{ public string playerName; pu.. 더보기
[Unity 유니티] 하드 코딩(Hard Coding)을 지양해야 되는 이유 코드를 작성할 때 우리는 종종 숫자나 문자열을 직접 코드에 넣는, 이른바 '하드코딩'을 하게 된다. 처음에는 하드코딩이 편리해 보일 수 있지만, 프로젝트가 커질수록 유지보수성에 문제를 일으킬 가능성이 크다. 하드코딩이 왜 좋지 않은지, 어떻게 하면 이를 피할 수 있는지 간단한 코드 예시와 함께 알아보자.하드코딩이란?하드코딩(Hard Coding)은 코드에서 변수나 값을 직접 코드에 고정하는 방식을 말한다. 즉, 실행 중에 바뀔 가능성이 있는 데이터가 아니라, 변경이 어렵도록 프로그램에 직접 값을 입력하는 방식을 가리킨다. 예를 들어, 텍스트로 보이는 "로그인 실패" 메시지를 하드코딩하면, 다른 언어로 번역하거나 변경할 때 번거로운 작업이 될 수 있다.하드코딩의 문제점유지보수의 어려움 : 하드코딩된 값이 .. 더보기
[Unity 유니티] 오브젝트 풀링 (Object Pooling) 오브젝트 풀링오브젝트 풀링(Object Pooling)은 재사용 가능한 오브젝트를 미리 생성해두고 필요한 순간에 꺼내 사용하는 디자인 패턴이다. 이 패턴은 오브젝트의 빈번한 생성과 제거를 방지하여 메모리와 CPU 자원을 절약하는 데 도움이 된다. 게임 개발에서는 자주 등장하는 적 캐릭터나 총알 같은 오브젝트에 이 패턴을 많이 활용한다.오브젝트 풀링을 쓰는 이유게임에서는 오브젝트를 생성하고 제거하는 작업이 자주 일어난다. 이 과정에서 CPU는 메모리 할당과 해제를 반복하게 되어 성능에 영향을 준다. 오브젝트 풀링을 사용하면 자주 사용하는 오브젝트를 미리 생성해 두고 필요할 때마다 가져다 쓰기 때문에 성능 저하를 줄이고, 특히 모바일 게임과 같은 환경에서 프레임 드랍을 방지하는 데 효과적이다. 오브젝트 풀링.. 더보기
[Unity 유니티] 싱글톤 패턴 (Singleton) 유니티에서 싱글톤 패턴 쉽게 이해하기: 게임 개발에서 왜 필요한가?게임 개발을 하다 보면 어떤 오브젝트는 게임 내에 단 하나만 존재해야 할 때가 있다. 예를 들어 게임의 전체 상태를 관리하는 게임 매니저, 지속적으로 재생되는 오디오 매니저 등이 그렇다. 이런 경우, 매번 새 인스턴스를 생성하는 대신 하나의 인스턴스를 전체 게임에서 공유할 수 있는 방법이 바로 싱글톤(Singleton) 패턴이다.유니티에서 싱글톤 패턴을 어떻게 구현할 수 있는지, 장단점은 무엇인지 알아보자.싱글톤 패턴이란?싱글톤 패턴은 프로젝트 내에서 특정 클래스의 인스턴스를 단 하나만 허용하고, 어디서든 그 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. 유니티에서는 게임을 관리하는 주요 객체를 하나만 두고 싶을 때 싱글톤을 사용한다.. 더보기
[Unity 유니티] 유니티 내에서 스크린샷 찍기 - Recorder 유니티 내에서 Recorder 기능을 제공하고 있습니다. 이를 이용해 스크린샷을 찍는 방법을 알아보겠습니다. 1. Window - Package Manager 에서 Recorder를 설치합니다. 2. 아래 스크립트를 작성한 뒤 Hierachy에 빈 게임 오브젝트를 만든 후 그 안에 넣어줍니다. namespace UnityEngine.Recorder.Examples { [Serializable] public class ScreenShotData { public string name; public int width; public int height; } public class CaptureScreenShot : MonoBehaviour { RecorderController m_RecorderControlle.. 더보기
[Unity 유니티] Coroutine 코루틴 yield return 최적화 private IEnumerator Example() { yield return new WaitForSeconds(1f); } 코루틴을 사용할 때 new WaitForSeconds()를 이용하면 실행될 때마다 가바지 값이 생긴다. 이를 막기 위해서는 미리 캐싱을 해두고 사용하면 된다. private IEnumerator Example() { WaitForSeconds wait = new WaitForSeconds(1f); yield return wait; } 하지만 작업을 하다보면 여러번 사용하는 경우가 생기고, 더 편하고 효율적인 작업을 위해서 코루틴 매니저를 만들면, 미리 캐싱된 값을 수정하면서 사용할 수 있다. using System.Collections; using Syste.. 더보기
[Unity 유니티] Update 를 Coroutine 으로 최적화 하기 유니티의 Update문은 매 프레임마다 실행된다. // Update 함수는 매 프레임마다 실행된다. 60프레임 환경이라면 1초에 60번 실행 private void Update() { // 실행할 코드 } 이때 매 프레임마다 꼭 실행할 필요가 없는 함수들, 예를 들어서 n초마다 체력이 닳는 독 시스템, 1초 간격의 타이머 등등 이럴 때, Coroutine을 이용해서 실행 간격을 줄이면 불필요한 호출이 줄어들기 때문에 성능이 더 올라간다. private float coroutineTime = 1f; // 실행 간격 private void Start() { StartCoroutine(CountTime()); } private IEnumerator CountTime() { while (true) { // 실행.. 더보기