일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 파이썬
- 티스토리챌린지
- 전쟁-전투
- 4기
- 크래프톤정글
- 연결리스트
- anonymous page
- 크래프톤정글4기
- project3
- 알고리즘수업-너비우선탐색2
- User Stack
- pintos
- Unity
- C
- 크래프톤 정글 4기
- KRAFTON JUNGLE
- 유니티
- TiL
- BFS
- 백준
- 핀토스
- c#
- 오블완
- kraftonjungle
- 다익스트라
- 알고리즘
- 크래프톤 정글
- 이벤트 함수 실행 순서
- 추상클래스와인터페이스
- 네트워크
- Today
- Total
목록전체 글 (165)
말감로그
C#과 C++의 차이" C++은 절자지향과 객체지향을 모두 지원하는 하이브리드 언어이며, 성능과 하드웨어 제어가 강점입니다.반면, C#은 강한 객체지향 언어로, 자동 메모리 관리와 편리한 개발 환경을 제공하여 생산성이 높습니다.또한 C++은 네이티브 코드로 실행되지만, C#은 .NET 환경에서 동작하는 관리 코드입니다. "네이티브 코드랑 관리 코드가 무엇?네이티브 코드는 OS에서 직접 실행되는 코드이고, 관리 코드는 가상 머신(.NET CLR)에서 실행되어 추가적인 기능(GC,보안)이 제공됩니다. 네이티브 코드 vs 관리 코드 비교 네이티브 코드 (Native Code) 관리 코드 (Managed Code) 실행 방식OS에서 직접 실행VM(CLR, JVM 등)에서 실행성능빠름 (CPU에서 바로 실행)..
네트워크 동기화를 위해 필요한 정보 1. 위치와 회전-> 캐릭터의 정확한 상태를 서버와 다른 클라이언트에게 전달하기 위해- 클라이언트 A가 움직이면 , 클라이언트 B에게도 동일한 위치로 보여야 함.클라이언트 A → 서버: "내 위치는 (10, 5), 회전은 90도야!"서버 → 클라이언트 B: "클라이언트 A의 위치는 (10, 5), 회전은 90도야!"클라이언트 B는 이를 받아 화면에 반영함.2. 속도와 가속도-> 예측 보정과 부드러운 동기화를 위해- 네트워크에서는 패킷이 항상 즉시 도착하지 않음 (네트워크 지연, 패킷 손실 등)- 속도와 가속도를 보내면 서버와 클라이언트가 패킷이 도착하기 전에 캐릭터의 움직임을 예측(보간,외삽)할 수 있음클라이언트 A → 서버: "내 속도는 (2, 0)이고, 가속도는 (..
오브젝트 풀링빈번하게 사용하는 객체 및 오브젝트에 대하여 매번 새로 생성하고 삭제하는 것이 아닌 미리 생성한 오브젝트를 재사용하는 기법이다. 유니티에서 오브젝트를 생성하거나 삭제할 때 Instantiate()와 Destroy() 함수를 사용하는데, 새로 할당하고 삭제하는 과정에서 많은 시간과 메모리를 잡아먹는다. (가비지 컬렉터가 자주 발생 , 메모리 단편화 발생) 예제 코드 (1) Bullet 스크립트using UnityEngine;public class Bullet : MonoBehaviour{ private float speed = 10f; public void Init(Vector3 direction) { GetComponent().velocity = direction..
DOTween은 Unity에서 트윈(Tween) 애니메이션을 쉽게 적용할 수 있도록 도와주는 강력한 애니메이션 라이브러리로 기존의 Lerp, Coroutine을 사용하는 방식보다 더 직관적이고 성능 최적화된 애니메이션 처리를 제공한다. DOTween 설치하기https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 DOTween (HOTween v2) | 애니메이션 도구 | Unity Asset StoreUse the DOTween (HOTween v2) tool from Demigiant on your next project. Find this & more animation tools on the Unity Asset S..

렌더링 최적화Clipping 화면에 보이지 않는 부분을 잘라내는 방식으로, 카메라 시야 외부에 있는 물체는 Clipping을 통해 잘라내어 렌더링 하지 않게 만든다. Occlusion Culling가려진 객체들을 렌더링하지 않도록 하는 기법으로, 한 객체가 다른 객체를 가릴 때 보이지 않는 객체를 렌더링하지 않는다. Fruston Culling카메라 시야 범위 내에 있는 객체들만 렌더링 하는 기법. *절두체(Frustum)는 평면으로 표현되는 부분을 뜻한다. 즉, 시야에 보이는 영역을 표현한 입체를 뜻한다. 메모리 최적화 1. 가비지 컬렉터의 퍼포먼스 스파크 현상가비지 컬렉터는 더 이상 참조되지 않는 객체를 찾아서 자원을 회수하는 역할을 한다. 이 과정에서 cpu 리소스를 많이 소모하고 일시적으로 성능저..
이벤트 주도적 프로그래밍을 통해 성능 향상을 얻을 수 있다!이벤트: 행동들 간에 중요한 관계를 맺고, 이러한 연결이나 결합을 이벤트라고 부르는데, 각각의 개별적인 연결은 하나의 이벤트가 된다. 이벤트 주도적 프로그래밍: 이벤트 주도적 프로그래밍은 게임 속 대부분의 사건들이 이벤트의 예라는 것을 알고서 일반적인 개념으로 이해하는 것으로부터 시작된다.즉, 이벤트의 개념은 정해진 시간에 일어나는 것뿐만 아니라 특정 시간에 발생하는 특정 이벤트를 포함하는 것이다. Update와 이벤트: 게임 월드는 이벤트와 응답으로 조직된 온전한 시스템이라고 할 수 있다.이런 식의 월드에서 Update 함수가 매 프레임 동작을 진행하는 방식에 의존하는 대신 이벤트를 사용하는 것이 성능을 향상시키는 데에 어떤 도움을 주는지 의문..
이번 장은 유니티 스크립트를 능수능란하게 다루려면 씬과 오브젝트, 오브젝트 간의 통신이 어떻게 일어나는지에 대한 구조를 이해하는 것이 중요하다! 가 포인트이다. 어떻게 오브젝트 간에 통신이 이뤄지고 오브젝트를 만들고 이것이 옮겨질 때 데이터를 유지하도록 만들어주는 정적멤버와 싱글턴 등의 대해서도 알아보자.게임 오브젝트기본적인 단위나 씬 안의 개체 등 여러 가지 의미를 가진다.컴포넌트는 기본적으로 MonoBehaviour에서 파생한 클래스로서 씬 안의 게임 오브젝트에 붙어 동작을 변화시킬 수 있다. 컴포넌트 상호작용 - GetComponent데이터 형식을 알고 있는 특정한 컴포넌트 하나에 직접 접근할 때 사용.게임오브젝트에 붙여진 컴포넌트 중 일치하는 첫번째 컴포넌트에 접근하도록 해준다.Transform ..

컴퓨터 과학자인 에츠허르 데이크스트라는 "프로그램 테스트를 통해 버그의 존재를 증명할 수는 있지만, 버그가 없음을 증명할 수는 없다" 라고 말했다.디버깅은 스크립트를 작성할 때 중요한 부분이고, 디버깅 없이 오류를 추적하고 고치는 방법은 없다.Debug.Log를 이용한 디버깅 : 개발자 지정 메시지유니티에서 가장 고전적이고 잘 알려진 디버깅 기법은 콘솔에 프로그램 흐름과 오브젝트 속성을 보여주기 위해 진단 메시지를 출력하는 Debug.Log 함수를 이용하는 방법일 것이다.벡터와 컬러 오브젝트를 포함한 모든 유니티 오브젝트에는 ToString 함수가 있어 내부 멤버(X,Y,Z와 같은)를 사람이 읽을 수 있는 형태의 문자열로 출력할 수 있다. 디버깅 기법으로서 Debug.Log의 한계는 바로 코드 간결성과 ..

유니티를 공부하고 활용하면서, 초급 기법이 아닌 고급 기법을 적용시키고 싶다는 생각에 책을 구매하게 되었다.그리고 유튜브나 구글링을 하며 찾을 수 있지만 제대로된 책 한 권을 구매한 후 읽는 것도 나쁘지 않을 것같다는 생각이 든 것두 있다. 1장은 챕터명 그대로 C# 복습하기로 변수, 함수, 조건문, 클래스와 상속, 다형성 등에 대한 기본적인 내용을 다룬다.그 중 내가 헷갈리거나 정확히 알지 못했던 다형성, C# 프로퍼티에 대해서 짚고 넘어갈 것이다.다형성다형성은 개체 지향 프로그래밍의 중요한 특징으로, 동일한 인터페이스나 기본 클래스를 공유하는 객체들이 서로 다른 동작을 할 수 있게 하는 능력을 말한다.기본 클래스는 가상 메서드를 정의 및 구현할 수 있으며, 파생 클래스는 이러한 가상 메서드를 재정의할..