스파르타내일배움캠프TIL 60

유니티에서 3D 최적화를 위한 랜더링 파이프라인 개선 방법

3D 그래픽을 최적화하는 과정은 랜더링 파이프라인을 단순화하는 것에서 시작됩니다. 불필요한 연산을 줄이고 효율적인 랜더링을 수행하는 것이 핵심입니다.1. 문제 진단: 프로파일링최적화를 하기 전, 먼저 현재 성능의 병목 현상이 어디서 발생하는지를 분석해야 합니다. Unity의 Profiler와 Frame Debugger를 활용하여 CPU와 GPU의 부하를 확인하고, 최적화가 필요한 부분을 파악합니다.2. 덜 그리기 (Draw Call 줄이기)랜더링 성능을 높이기 위해 가장 중요한 것은 불필요한 오브젝트를 그리지 않는 것입니다.2.1 카메라 절두체 줄이기카메라의 절두체(Fustum) 크기를 조정하여 너무 멀리 있는 오브젝트를 렌더링하지 않도록 설정합니다.너무 짧게 설정하면 화면에서 갑자기 오브젝트가 사라지는..

Unity AI Navigation

AI Naviagtion이란우선 사전적 의미로는 AI( Artificial Intelligence )의 "인공지능"과 Naviagtion의 명사인 "배나 다른 차량의) 항해[운항/조종](술)"이 합쳐진 단어로 인공지능이 스스로 조종하여 이동한다는 의미를 가지고 있다. 주로 게임에서 캐릭터나 NPC가 스스로 이동하도록  사용하는 기능입니다. AI Naviagtion 주요 기능Navigation Mesh(네비게이션 메쉬)AI가 이동할 수 있는 역영을 나타내는 매쉬이다.아래 이미지와 같이 Layer처럼 이동할 수 있는 영역과 없는 영역을 정의하고, 이를 기반으로 경로를 계산  Pathfinding(경로 탐색)AI가 목표 위치까지 이동할 때 최적의 경로를 찾는 알고리즘이다.주로 A* 알고리즘이 사용되며, 지정된..

Unity Input System (Send Messges / Invok Unity Events 차이점)

Unity에서 플레이어를 움직이게 하는 방식은 여러가지가 있는데 그 중 하나의 방법이 Input System을 활용하여 움직이는 것이다. Input System은 사용자가 기기, 터치, 제스처를 사용하여 게임이나 앱을 제어할 수 있도록 도와주는 패키지이다. Input System에서는 입력 이벤트의 처리 방법이 4가지가 있다. 방식설명Send Messages특정 함수"OnJump()" 등를 자동으로 호출Broadcast Messages부모-자식 관계의 모든 오브젝트에서 함수 호출Invoke Unity Events"UnityEvent"를 이용한 이벤트 방식으로 호출Invoke C# EventsC# 델리게이트 이벤트를 호출 이중에 가장 많이 사용하는 "Send Messages",  "Invoke Unity ..

Unity 2D 팀 프로젝트 - 마지막 날

Untiy 2D 팀 프로젝트 궁수의 전설 래퍼런스 작품 만들기 -  마지막 날팀 프로젝트 후기오늘 팀프로젝트가 끝났다. 참으로 길다면 길었고 짧았다면 너무나 짧았던 시간이였다. 꼭 프로젝트가 끝나니 고쳐야 할 부분이 왜 이렇게 잘 보이는지..... 다른 팀들은 어찌 그렇게 잘만들 수 있는건지...... 나도 잘만들고 싶다 대략 5일동안 팀 프로젝트를 하고 나니 느낀점은 모든 팀의 기능은 비슷한데 누가 디자인을 잘하나 구조를 잘 구성하나 그 차이였던갔다. 다음 프로젝트 때는 좀더 탄탄하게 만들고 게임이라고 부를 수 있는 게임을 만드는 것이 목표 이다 작품 시연 영상

Unity 2D 팀 프로젝트 - 4

Untiy 2D 팀 프로젝트 궁수의 전설 래퍼런스 작품 만들기 -  4 오늘로 팀 프로젝트 5일차가 진행 되었다. 스킬 구현이 어느 정도 다 끝나 사운드 작업을 추가적으로 하였다. 먼저 소리를 내줄 SoundSource를 프리팹으로 만들어 주어 다른 소리와 중복으로 발생할 수 있게 만들어 주자using UnityEngine;public class SoundSource : MonoBehaviour{ private AudioSource _audioSource; public void Play(AudioClip clip, float soundEffectVolume, float soundEffectPitchVariance) { if (_audioSource == null) ..

Unity 2D 팀 프로젝트 - 3

Untiy 2D 팀 프로젝트 궁수의 전설 래퍼런스 작품 만들기 -  3오늘로 팀 프로젝트가 4일차가 진행 되었다. 오늘은 액티브 스킬로 대쉬 기능을 한번 추가해보았다.  우선 대쉬에 필요한 변수들을 먼저 선언해 주[Header("Dash")]private Rigidbody2D rb;private bool isDashing;//대쉬 거리는 playerStat에 있음private float dashDuration = 0.2f; // 돌진 지속 시간private float dashCooldownTime = 3f; // 대시 기본 쿨타임private float dashCooldownTimer = 0f; // 쿨타임 타이머public bool isDashReady = true; // 쿨타임이 끝났는지 체크 코루..

카테고리 없음 2025.02.26

Unity 2D 팀 프로젝트 - 2

Untiy 2D 팀 프로젝트 궁수의 전설 래퍼런스 작품 만들기 -  2오늘로 팀 프로젝트가 3일차가 진행이 되었다.  오늘 오전에 화살이 벽에 닿았을 때 튕기는 기능을 구현을 하려고 했지만 알고리즘을 짜는 것에 생각보다 시간이 많이 흘러 가버렸다. 알고리즘을 짤때 여러 가지 자료를 찾았는데 처음 찾은 내용은 출발지점의 각도와 벽에 부딪혔을때 각도가 같다는 사실을 이용하여 atan2를 사용해 출발 지점 각도를 구하고 180도에 구한 각도를 빼서 반사각을 구하는 방식이 있었다. 두번째 방법으로는 유니티 자체의 기능인 Vector2.Reflect를 사용하여 백터값을 사용하여 반사기능을 구현하는 방식이다.. 그래서 각도를 구하는 방식보다 백터를 이용하는 방식이 좀더 코딩하는데 좋을 것 같아 두번째 방식으로 화살..

Unity 2D 팀 프로젝트 - 1

Untiy 2D 팀 프로젝트 궁수의 전설 래퍼런스 작품 만들기 오늘로 팀프로젝트 2일차 시차 1일차때는 조원들과 프로젝트 계획과 약속을 정하고 끝이 나서 작품 제작은 2일차 부터 시작이 되었다. 이 프로젝트에서 내가 담당한 파트모든 투사체 관리스킬 담당이 두가지를 메인으로 담당을 하게 되었다. 그래서 오늘 궁수의 전설에서 맵이 클리어 되었을 때 스킬을 선택하는 기능을 구연해 보았다. 먼저 스킬의 종류를 플레이어 스탯효과, 투사체 스탯효과, 액티브 스킬, 패시브 스킬로 나누어 작성하였다.스킬 리스트를 만들기 위해 ScriptableObject를 사용하여 Skill Data를 만들어 주었다.using System.Collections;using System.Collections.Generic;using Un..

Programmers 코딩테스트

세로읽기 문제 설명문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요. 제한사항my_string은 영소문자로 이루어져 있습니다.1 ≤ m ≤ my_string의 길이 ≤ 1,000m은 my_string 길이의 약수로만 주어집니다.1 ≤ c ≤ m입출력 예my_stringmcresult"ihrhbakrfpndopljhygc42"happy" "programmers"11"programmers".2열에 적힌 글자를 세로로 읽으면 happy이므로 "happy"를 return 합니다. using System;public class Solution..

Unity 비주얼 스튜디오로 디버깅 하기

우리가 유니티로 개발을 하다보면 버그가 빈번히 발생하는데 그 버그를 직접 손으로 찾기는 쉽지 않다.그래서 디버깅을 사용하면 보다 쉽게 버그를 찾을 수 있다. 사용방법으로 사용하고 있는 유니티 프로젝트에서 비주얼스튜디오를 이용해 스크립트를 열어줍니다   F9를 눌러 오류가 난 부분을 Breakpoint로 설정 해줍니다. 만약 설정을 잘 못 하셨으면 다시 F9를 누르시면 해제가 됩니다. Breakpoint로 멈출 부분을 설정해주 셨으면 [Unity에 연결]을 눌러 디버깅을 실행 해주시고 유니티에서 Play 버튼을 눌러 프로젝트를 실행 해주시면 유니티 프로젝트가 디버깅이 실행이 된 것입니다. 다시 비주얼 스튜디오로 돌아오시면 Breakpoint인해 코드 작동이 잠시 멈춰있고 밑에 코드에 어떤 데이터 값들이 들..