유니티,Unity,C#(10)
-
C++, C# 면접 질문 모음집
C++ new / delete 의 내부 동작• new: 메모리 할당 연산자로, 힙(heap) 메모리에서 객체를 동적으로 생성하며, malloc 함수를 호출하여 메모리를 할당하고, 생성자를 호출하여 객체를 초기화합니다.• delete: 동적으로 할당된 메모리를 해제하는 연산자로, free 함수를 호출하여 메모리를 해제하고, 소멸자를 호출하여 객체를 정리합니다. 가상 함수란 무엇이고 어떻게 동작하는가? • 가상 함수(Virtual Function): 부모 클래스에서 선언되고 자식 클래스에서 재정의(override)되는 함수입니다. 다형성을 지원하여 객체의 실제 타입에 따라 적절한 함수가 호출되도록 합니다.• 동작 방식: 가상 함수 테이블(vtable)을 사용하여 런타임에 올바른 함수가 호출되도록 합니다. 각..
2024.06.12 -
유니티 UniTask 정리
먼저 UniTask란? 기존에 있던 Coroutine의 단점을 극복하고자 나온 라이브러리이다. Coroutine하고 UniTask는 다음과 같이 정리해볼수 있다. 실행 방식 코루틴: Unity 가 주기적으로 실행 UniTask: 실행 주기 독립적이며, 즉시 실행 성능 코루틴: 매 프레임마다 실행되어 오버헤드 발생 UniTask: 실행 주기 제한 없어 효율적 동시성 코루틴: 단일 스레드에서 실행되어서 경쟁 상태 발생 가능 UniTask: 병렬 실행을 위한 도구들을 제공 에러 처리 코루틴: try-catch로 처리, 복잡할 수 있음 UniTask: ContinueWith 및 예외 처리 함수로 간편 사용 용이성 코루틴: 익숙하고 접근성 좋음 UniTask: 함수형 스타일로 약간의 학습 비용 필요 코루틴은 먼저..
2024.01.31 -
유니티 빌드본(PC) 강제 종료 막기(Application.wantsToQuit)
PC를 목표로 빌드한 게임은 ALT+F4와 같은 시스템으로 인한 종료는 Application.Quit과 같이 즉시 종료된다. 하지만 개인 프로젝트를 진행 중에 강제 종료키로 인한 강제 종료를 한번 막아보고 싶어졌다. 물론 예상치 못한 상황(무한 로딩, 종료 버튼 작동 안됨 등의 문제로 인한 끄지 못하는 상황을 대비해서는 있어야 하는건 맞으나.. 짜피 작업관리자에서 강제 종료는 막지못함으로 한번 해보기로 했다.) 강제 종료키(ALT+F4)를 입력하면 모달창이 뜨면서 종료, 취소를 통해서 통제를 할수 있도록 만들어 보았다. 모달창은 기존에 만들어둔것을 바탕으로 구현해보았다. 취소를 누르면 종료가 되지 않고 확인을 누르니까 즉시 종료가 되어버린다.(녹화본에서는 즉시 종료가 되니까 녹화도 종료되어버렸다.) 여기..
2023.12.05 -
유로 Assets DamageNumbersPro 리뷰
먼저 DamageNumbersPro는 https://assetstore.unity.com/packages/2d/gui/damage-numbers-pro-186447 Damage Numbers Pro | 2D GUI | Unity Asset Store Elevate your workflow with the Damage Numbers Pro asset from Ekincan Tas. Find this & more GUI on the Unity Asset Store. assetstore.unity.com 데미지 표시를 쉽게 해주는 에셋이다. (그나저나 내가 살때는 비쌋던거 같은데.. 왜 가격이 내려간거같지..?) 당연히 DEMO를 통해 직접 해볼수도 있고 예제도 당연히 제공되고 있다. https://ekinc..
2023.10.29 -
오브젝트 풀링(원하는 스폰지역을 직접 만들어서 넣어주고 랜덤으로 소환)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MonsterSpawner : MonoBehaviour { public Transform[] spawnPoints; // 스폰 위치 배열 public GameObject[] monsterPrefabs; // 몬스터 프리팹 배열 public float spawnInterval = 3f; // 몬스터 스폰 간격 public float initialSpawnDelay = 2f; // 초기 스폰 지연 시간 private List monsterPool; // 몬스터 오브젝트 풀 private List availableSpawnPoints; // 스폰 ..
2023.06.04 -
유니티 json데이터 암호화하는법(AES암호화방식)
먼저 json이란? 직렬화 데이터로서 서버연동등과 같은 데이터교환에 유용하게 쓸수 있는 데이터 타입이다. 다만 아무래도 Json도 보안에는 취약한 편이다. 암호화등을 하지않는 이상 그냥 값변경이 가능하기 때문이다. 물론 민감한 정보같은건 서버에 저장하거나 DB, Addressable등을 이용해서 관리하긴 하지만 해당 예시에서는 없다고 가정하고 로컬에서 암호화를 시켜보았다. 그래서 이 해당 글은 그 데이터를 암호화하고 다시 복호화해서 불러오는 과정을 담아보았다. 완벽하지는 않아서 보고 참고정도만 해주시면 좋겠습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; using Newtonsoft.Json; using..
2023.05.20