Unity

·Unity
Unity, C#의 내가 자주 사용하고 유용하다고 느낀 기능들을 정리해보았다.1. Debug.AssertDebug.Assert(조건, "메세지"); 로 이루어져 있다.앞의 조건이 False라면 오류 메세지를 표시하는 것이다.보통 예상 가능한 버그가 일어나는 것을 방지하기 위해 코드 앞에 써준다.코드 부분마다 일일이 Null체크를 할 필요 없이 앞에 Debug.Assert만 해줘도 유용하게 쓸 수 있다.그리고 또 좋은점이 Debug.Assert는 빌드 시 제외된다. 따라서 성능 면에서 좀 더 좋다.2. Conditional Attribute[Conditional("심볼값")] 으로 이루어져 있다.using System.Diagnostics; 을 써서 사용할 수 있다[Conditional(" ... ")]p..
기본적인 움직임을 모두 만들었으니 기본 공격과 기본 공격 애니메이션을 만들 차례이다.기본 공격은 총 세개의 콤보 형태로 만들 예정이다.만약 첫번째 공격이 끝나기 전에 한번 더 클릭하면 두번째 콤보로 이어지고 여기서 한번 더 클릭하면 마지막 콤보로 이어지는 식 먼저 플레이어의 공격을 관리하는 PlayerAttackController.cs를 만들어준다. AttackController의 역할은 Update에서 사거리 내의 가장 가까운 적을 찾고, 그것을 Target에 넣는것이다.  public TestEnemy CurrentTarget;public void SetTarget(){ int numColliders = Physics.OverlapSphereNonAlloc(transform.position, 1..
에셋들 적용도 끝났으니, 먼저 가장 중요한 플레이어에게 생명을 불어넣기 위한 작업을 진행하기로 했다. Idle, Walk, Sprint, Dodge(구르기) 총 네가지로 일단 기본적인 움직임을 구성할 예정이다. 플레이어의 움직임 구조는 FSM으로 짜기로 했다.  Input System을 다운받아 기본적인 인풋 액션들을 구성해줬다.  인풋 세팅을 클래스로 생성한 후, InputReader라는 스크립트를 새로 만들어 인풋 세팅을 상속받고 SO로 만들어 플레이어가 접근하기 편하게 설정해줬다. public class PlayerController : MonoBehaviour{ [SerializeField] private InputReader _inputReader; public InputReader ..
1학년 때 부터 만들고 싶었던 웅장하고 거창하고 간지나는 유사 AAA급 3D 액션 RPG 게임을 만들어보기로 했다.하지만 위같은 웅장한 액션 RPG게임을 만드려고 시도하다간 무조건 실패할 것 같아, 잡몹과 보스 몇개만 개발하고 전투 위주의 게임으로 완성해볼 예정이다. 사이버펑크, 아포칼립스 느낌의 분위기의 게임으로 만들 것 같다. 에셋들을 구비해놓고 개발을 시작하는 편이라 일단 에셋스토어부터 뒤져봤다.  보기부터 개쩌는 폐허 느낌의 거대한 미래도시 에셋이 반값 할인(프로젝트 시작할 당시에 할인하고 있었다.)을 하고 있어 바로 구매했다.  또한 유니티에서 무료로 제공하는 캐릭터 팩도 다운받고, 학교에서 구매해준 검 액션 애니메이션까지 다운받았다.이정도면 충분하다 싶어 프로젝트 시작.   내가 적용시키려는 ..
·Unity/졸업작품
|  졸업작품 프로젝트의 전투 시스템 설명 아군 펭귄과 적 펭귄이 싸울 때 데미지를 어떻게 주고받고, 또 그것에 따른 여러 이벤트를 어떻게 주고받는지 설명  간략하게 설명하자면, 펭귄 객체의 전투를 담당하는 컴포넌트로는 Health, EntityActionData, EntityAttackData 이렇게 세 종류가 있습니다.Health.cs 에서는 체력을 관리하고, 데미지를 입거나 기절, 넉백 등의 피해를 입는 로직을 실행합니다.EntityActionData.cs 에는 데미지를 입었을 때의 정보(데미지 입은 위치, 데미지의 타입 등)을 담습니다.EntityAttackData.cs 에서는 DamageCaster의 공격 로직들을 추상화하고, 펭귄의 공격 방식(근접인지, 원거리인지)에 따라 상속받아 그 공격 로..
·Unity/졸업작품
|  졸업작품 프로젝트의 UI 구조 설명 교내 졸업작품에서 화면에 띄우는 UI들을 편리하게 관리하기 위해 만든 UI 구조입니다.  간략하게 설명하자면,모든 화면에 띄우는 UI들이 상속받는 공통 부모 클래스 PopupUI가 있습니다.PopupUI는 CanvasGroup을 가지며 Canvasgroup의 알파값을 조정하여 키거나 끄는 ShowPanel 메소드와 HidePanel 메소드가 있습니다. 그리고 UI의 RectTransform을 일정값 움직이는 MovePanel 메소드가 있습니다. 이 PopupUI들을 씬의 Canvas에서 가져와 UIManager의 딕셔너리와 스택에서 관리합니다.UIManager의 메소드에 내가 띄우려는 UI의 이름(string값)을 입력하면 어디에서나 UI를 편하게 띄우고 없앨 수..
·Unity/졸업작품
C# Reflection의 Activator.CreateInstance 참고 자료 [C#] 리플렉션 - Activator.CreateInstance| Activator.CreateInstance 메소드란? 지정한 매개 변수와 가장 일치하는 생성자를 사용하여 지정한 유형의 인스턴스를 만듭니다. 출처 - Microsoft Activator.CreateInstance 메서드 (System) 지정한 매개 변수와wonseok1112.tistory.com |  졸업작품 프로젝트 FSM에 활용한 리플렉션 저의 교내 졸업작품 프로젝트 펭덤에서 사용하는 FSM 코드를 가져와봤습니다.먼저 State와 StateMachine 구조에 대해서 살펴보겠습니다. State 스크립트public class State{ prote..
·Unity
2학년 2학기 교내 엔진응용 수업시간에 배운 내용을 다루었습니다.    빈 게임 씬에 로우폴리 맵과 캐릭터 에셋을 넣고 빌드 후 실행해보았다.   맵 에셋과 이것저것을 넣고 실행하니 약 35메가정도 메모리가 늘어났다.로우폴리 에셋이라 이정도지 만약 용량이 큰 에셋이었으면 메모리를 훨씬 더 많이 차지하여 시작할 때 매우 느려질 수 있었다.  그렇다면 Hierachy에 직접 할당하지 않고 동적 할당을 했을 때의 메모리 상태는 어떨까? using UnityEngine;using UnityEngine.InputSystem;public class TestLoader : MonoBehaviour{ [SerializeField] private GameObject _levelArt; [SerializeFie..
입니다최원석
'Unity' 카테고리의 글 목록