Unity/정보 썸네일형 리스트형 [Unity 유니티] 유니티 클래스(Class) / 구조체(Struct) 차이점 유니티에서 프로그래밍을 하다 보면 클래스(Class)와 구조체(Struct) 중 어떤 것을 사용할지 고민하게 된다.이 둘은 비슷해 보이지만 중요한 차이점이 있다.클래스와 구조체의 주요 차이점값 타입 vs 참조 타입구조체는 값 타입이다. 데이터를 직접 복사하여 사용하며, 메모리 스택에 저장된다.클래스는 참조 타입이다. 데이터의 주소를 참조하며, 메모리 힙에 저장된다.상속구조체는 상속을 지원하지 않는다.클래스는 상속이 가능하다.기본 생성자구조체는 기본 생성자를 제공하지 않으며, 매개변수가 없는 생성자를 직접 정의할 수 없다.클래스는 기본 생성자가 자동으로 생성된다.사용 목적구조체는 간단한 데이터 저장이나 계산에 적합하다.클래스는 복잡한 데이터 구조나 객체 지향 프로그래밍에 적합하다.코드 예시- 클래스usin.. 더보기 [Unity 유니티] 소프트코딩(Soft Coding)이란? 소프트코딩이란 무엇인가?소프트코딩(Softcoding)은 소스코드에 하드코딩된 값을 제거하고, 외부 파일, 데이터베이스 또는 설정 파일을 통해 값을 관리하는 방법이다. 이를 통해 유연성과 유지보수성을 높일 수 있다. 간단히 말해, 코드를 수정하지 않고도 동작을 변경할 수 있도록 만드는 것이다.쉽게 말해, 코드에 직접 값을 넣기보다 변수나 상수를 이용해 유지보수를 쉽게 하는 것이다.소프트코딩의 주요 장점유연성프로그램 실행 중에도 외부 데이터를 통해 동작을 변경할 수 있어 다양한 상황에 적응하기 쉽다.확장성새로운 요구사항이 생겼을 때 코드 수정 없이 설정만 추가하거나 수정하여 기능을 확장할 수 있다.재사용성특정 로직을 소프트코딩으로 구현하면 다양한 프로젝트나 상황에서 재사용하기 용이하다.// 하드코딩int .. 더보기 [Unity 유니티] 람다식 AddListener for문 안됨 - 클로저 (Closure) 문제 AddListener는 Unity에서 UI 버튼이나 기타 이벤트가 발생할 때 특정 함수를 호출하기 위해 주로 사용하는 기능이다. 하지만 AddListener를 반복문, 특히 for문과 함께 사용할 때는 주의해야 한다. 잘못 사용할 경우 의도치 않은 결과를 초래할 수 있기 때문이다.문제점: 클로저(Closure)와 캡처링(Capturing)의 혼란for문을 통해 AddListener를 반복해서 호출할 때, 각 반복마다 AddListener가 현재의 루프 변수를 '캡처'하는데, 이로 인해 예상치 못한 버그가 발생할 수 있다. 이는 C#의 람다식이 클로저를 통해 외부 변수를 캡처하는 방식 때문이다.예를 들어, 아래와 같은 코드가 있다고 가정하자void Start(){ for (int i = 0; i D.. 더보기 [Unity 유니티] 유니티에서 Json으로 데이터 관리하기 - AES 암호화 / 복호화 (3) Json 데이터 암호화 / 복호화Json 파일로 데이터를 저장하는 것은 간편하지만, 파일이 그대로 노출되면 데이터가 쉽게 읽힐 수 있다. 민감한 데이터는 암호화하여 저장하는 것이 좋다. 이번 포스팅에서는 Unity에서 Json 파일을 암호화하여 저장하고 불러오는 방법을 소개한다.1. AES 암호화 설정하기Unity에서는 System.Security.Cryptography 네임스페이스를 이용해 AES 암호화를 쉽게 구현할 수 있다. 아래 예시는 Json 데이터를 AES 방식으로 암호화해 파일에 저장하는 코드다.using System;using System.IO;using System.Security.Cryptography;using System.Text;using UnityEngine;[System.Ser.. 더보기 [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는 메모리 할당과 해제를 반복하게 되어 성능에 영향을 준다. 오브젝트 풀링을 사용하면 자주 사용하는 오브젝트를 미리 생성해 두고 필요할 때마다 가져다 쓰기 때문에 성능 저하를 줄이고, 특히 모바일 게임과 같은 환경에서 프레임 드랍을 방지하는 데 효과적이다. 오브젝트 풀링.. 더보기 이전 1 2 다음