유니티 7

[멋쟁이사자처럼 유니티 TIL] UI 슬라이더, 체력바 구현 (+ 델리게이트(delegate), 이벤트)

슬라이더 ● 생성 방법Hierarchy 에서 마우스 오른쪽 클릭  → UI → Slider 를 클릭  ● 구성 요소 슬라이더를 생성하면 자식 개체 여러 개가 함께 생성된다. - Background : 슬라이더를 비활성화 시켰을 때의 이미지. 슬라이더의 배경. - Fill Area : 슬라이더를 활성화 시켰을 때의 이미지. Background를 채우는 이미지. - Handle Slide Area : 슬라이더의 손잡이. 슬라이더를 마우스로 직접 작동시킬 때 필요한 버튼.  ● 구현 예시 이동 속도를 조절하는 바를 만들어보자 ① Slider를 생성한다. 이때 자동으로 Canvas도 함께 생성된다. ② 원하는 위치로 앵커를 설정한다. 본인의 경우 하단 가운데에 위치하도록 center의 bottom으로 지정하였다..

유니티 2024.06.11

[유니티 이론] 중요한 기능!! Deltatime 정의 및 사용법

세상에는 롤, 아크, 에펙스를 최고 사양으로 돌려도 잘 돌아가는 컴퓨터가 있으며, 메이플도 안되는 개쓰뤠기(본인이 이에 포함된다면 죄송합니다) 컴이 있다. 여기 60fps와 10fps 컴이 있다고 가정하자. (각각 1초에 60,10 프레임 씩) 만약 이 두 컴퓨터로 카트라이더를 한다면 항상 60fps 쪽이 승리할 것 이다. 만약 1프레임에 1m를 간다고 가정하면, 각각 1초에 60m, 10m를 가는 것이다. 당연히 10fps 컴은 쭈구리가 되는 것이다. 이러한 불리한 상황을 방지하기 위해 쓰는 것이 deltaTime 이다. | deltaTime 이란? Time.deltaTime: 전 프레임이 완료되기까지 걸린 시간 이를 이동거리에 곱하면 된다. 이동거리 * Time.deltaTime 을 예시에 적용하면,..

유니티 2024.01.23

[유니티 기초] 버튼 입력 방식으로 물체 이동하기 - GetButton, Transform

저번 강의에 글에 이어 이번에는 버튼 입력 방식을 알아보자 | 버튼 방식 Edit ▶Project Settings ▶InputManager 에 들어가면 유니티에서 기본적으로 설정되어 있는 버튼들을 볼 수 있다. 이런 버튼들을 사용할 수 있게끔 하는 함수가 GetButton 이다. GetButton: Input 버튼 입력을 받으면 true 반환 if (Input.GetButton("Jump")) Debug.Log("점프 모으는 중..."); if (Input.GetButtonUp("Jump")) Debug.Log("슈퍼 점프!!!"); if (Input.GetButton("Fire1")) Debug.Log("불을 쏘았습니다."); 내가 원하는 입력을 InputManager에 지정하고 싶을 경우, Axies..

유니티 2024.01.23

[유니티 기초] Input 으로 키보드, 마우스 입력 기능 넣기

Input: 게임 내의 입력을 관리하는 클래스 Input은 클래스이다. 그러므로 점을 이용하여 Input의 함수를 부를 수 있다 ex) Input.함수 함수를 알아보자 | 입력 방식 유니티의 입력 방식은 총 3가지 Down: 누름 Stay: 누른 상태 Up: 뗌 예를 들어, 엔터 키를 눌러 들어가면 Down 적용. 엔터 키를 계속 누르고 있으면 Stay 적용. 손을 떼 엔터 키가 나오면 Up 적용. | 키보드 입력 anyKeyDown: 아무 키 입력을 최초로 받을 시 true 값 반환 anyKey: 아무 키 입력을 받을 시 true 값 반환 void Update(){ if (Input.anyKeyDown) Debug.Log("아무 키를 눌렀습니다."); if (Input.anyKey) Debug.Log(..

유니티 2024.01.21

[유니티 기초] 오브젝트 라이프 사이클

유니티의 기본적인 오브젝트 라이프 사이클 초기화→물리연산→게임로직→해체 1. 초기화 Awake(): 게임 오브젝트 생성시 최초 실행 Start(): 업데이트 시작 직전, 최초 실행 2. 물리 연산 FixedUpdate(): 물리 연산을 하기 전에 실행되는 업데이트 함수. 1초에 50분 꾸준히 호출 => CPU 부하 많음 주로 이동 기능에 사용 3. 게임 로직 Update(): 게임 로직 업데이트. 환경에 따라 실행 주기 바뀜 주로 주기적으로 변하는 로직을 넣을 때 사용 LateUpdate(): 모든 업데이트가 끝난 뒤 마지막으로 실행. 주로 캐릭터를 따라가는 카메라나 후처리 등에 사용 4. 해체 OnDestroy(): 게임 오브젝트가 삭제될 때 실행. 활성화와 비활성화 1. 활성화 OnEnable(): ..

유니티 2024.01.21

[유니티] 레벨 만들기 - Snap Increment

Cube를 이어붙여 땅을 만들려 했는데, 직접 붙이려니 딱 맞는지도 모르겠고 여간 노가다가 아니다 그래서 영상을 보니 edit에 들어가 snap setting에서 무언가를 설정하면 쉽게 가능하였다 그러나 내 화면에는 snap setting이 보이지 않았다 아마도 Unity 2022 이전 버전에만 있었나보다 그리하여 이와 똑같은 기능을 가진 Snap Increment 의 위치와 사용방법을 알아보았다 | 위치 Scene의 상하좌우 중 한 곳에 달라붙어 있는 버튼들 중 좌표그림 2개와 선들이 좍좍 그어져 있는 버튼이 있다 여기서 가장 오른쪽에 있는 선 좍좍 버튼이 Snap Increment 버튼이다 | 사용법 이 버튼을 누르면 Move, Rotate, Scale이 뜬다 Move: 객체를 이동시킬 거리 조정 R..

유니티 2024.01.09

[C#, 유니티] 게임 개발 - [SerializeField]와 [System.Serializable] 차이점

Unity에서 많이 쓰던데 왜 쓰는 걸까? 요약 어트리부트(Attribute) 기능 SerializeField private로 선언된 변수를 인스펙터에 노출시킴 System.Serializable MonoBehaviour 이외의 클래스 멤버들을 인스펙터에 노출시킴 ↓↓ 자세한 내용이 알고 싶으면 내려가기↓↓ 1. SerializeField 유니티에서 SerializeField는 private 필드의 직렬화를 위해 이용된다. 직렬화란? 객체가 메모리에 보존되지 않아도 저장이나 전송을 할 수 있게 만드는 것. 원래는 public을 이용하여 직렬화가 가능하도록 하며 인스펙터에서 특정 변수의 값을 변경할 수 있게 한다. 그러나 필요에 의해 private 필드를 써야할 경우, [SerializeField]를 작성..

유니티 2024.01.06