[Unity] UI 관련 Tip
·
Game Engine/Unity
UI 스크립트에서 로직이나 데이터를 저장하는건 좋지 않습니다. - UI 코드가 많아진다 - UI 에 기능이 종속된다. - UI 는 언제든 파괴될 수 있다. UI 비활성화 Instantiate / Destroy 에 취약한 Unity 에서 최적화에 도움이 됩니다. 비활성화가 임시로 된건지 UI 를 닫기위해 비활성화 시킨건지 모호 예를 들어 팝업이 뜰때 아래에 있는 메뉴창을 임시로 비활성화 시켜둬야 하는 경우UI 파괴 Unity 가 Instantiate / Destroy 에 약하다고는 하지만 현대 기기 스펙이 그렇게 안좋지 않습니다. 모바일이라는 가정하에도 UI 정도 만들고 파괴하는건 큰 무리는 없어서 관리가 편하다면 진행해도 괜찮습니다. 다만 규모는 고려해야합니다.
[Unity] Headbob
·
Game Engine/Game Project
private void Update() { StateMachine.HandleInput(); StateMachine.Update(); if (StateMachine.MovementInput.magnitude > 0) { Motion.HeadbobUp(); // 움직임이 있을때 HeadbobUp } else { Motion.HeadbobDown(); // 없을 때 원래 상태로 서서히 감소하면서원래 상태 복구 } Motion.WeaponShake(); }
[Unity] Nan을 조심하자
·
Game Engine/Game Project
private void CalculateAccuracy(){ if (ShotCount == 0) { shotAccuracy = 0; } else { shotAccuracy = (float)HitCount / (float)ShotCount * 100f; } if (HitCount == 0) { headShotAccuracy = 0; } else { headShotAccuracy = (float)HeadHitCount / (float)HitCount * 100f; }} 0으로 나누면 UI에 Nan으로 뜨니 0으로 나누는 걸 조심할 것
[Unity] Cinemachine으로 FPS Headbob 구현하기
·
Game Engine/Game Project
이번 FPS 프로젝트에서 카메라를 이용한 연출을 많이 하기 떄문에 어쩔 수 없이 Cinemachine으로 카메라를 변경하였다.아쉽게도 저번에 구현했던 Headbob이 무용지물이 되었는데.. 그래서 Cinemachine으로 Headbob 구현하는 방법을 정리하고자 한다. 🔫 Headbob이란?사람이 움직일때 시야가 흔들리듯 카메라가 흔들리는 효과이다.지금 프로젝트에서는 Headbob을 걸을 때(STP)마다 흔들리도록 하였다. ⚙️ 준비물Cinemachine으로 적용된 FPS 카메라가 있으면 좋을 것 같다. 이 부분은 따로 정리하지 않고 Headbob만 정리할 예정이다. 1. 먼저 적용하고 싶은 VirtualCam을 선택한다. 필자는 NonAdsVitaulcam(일반조준)과 AdsVirtualcam(정조..
[Unity] Cinemachine
·
Game Engine/Unity
Unity Cinemachine Impulse 완벽 정리1. Cinemachine Impulse란?Cinemachine Impulse는Unity 카메라에 "진동(Shake)" 효과를 추가하는 시스템입니다.폭발, 총격, 충격 등 카메라를 흔들어 몰입감을 높이는 데 사용합니다.코드 한 줄로 자연스러운 카메라 흔들림을 만들 수 있습니다.
[Unity] 리팩토링 작업
·
Game Engine/Game Project
using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerMotion : MonoBehaviour{ private Player player; [field: SerializeField] public Transform ArmTransform { get; private set; } [field: SerializeField] public GameObject HandPos { get; private set; } public Transform rootCam; [Range(0.0001f, 1f), SerializeField] private float amount = 0.00..
[Unity] Visual studio 다이어그램 보는법
·
Game Engine/Unity
도구 => 도구 및 기능 가져오기 개별 구성 요소 => 클래스 디자이너 체크 => 다운로드하는 동안 설치 옆에있는 수정을 누르면된다.종료후 visaul studio를 다시 실행하면프로젝트에 스크립트가 저장된 Assmebly Csharp에서 클래스 다이어그램 보기를 누르면 스크립트의 상속모습이나 상속 받지않는 스크립트(오른쪽) 모습을 볼 수 있다.
[Unity] 덜컹 거리는 움직임
·
Game Engine/Game Project
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.InputSystem;public class PlayerAttackState : PlayerBaseState{ private bool hasShot; // 총 발사 여부 public PlayerAttackState(PlayerStateMachine stateMachine) : base(stateMachine) { } public override void Enter() { base.Enter(); hasShot = false; StartAnimation(stateMachi..
[Unity] HeadBob 구현
·
Game Engine/Game Project
🔍 Headbob이란?사람이 움직일 때 시야가 흔들리듯이 이동시에 카메라가 흔들리는 효과 Player에 하위의 카메라를 담은 빈오브젝트 카메라 루트에다 스크립트를 붙여주었습니다.using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Rendering;public class HeadBob : MonoBehaviour{ // Start is called before the first frame update [Range(0.001f, 0.01f)] public float Amount = 0.002f; [Range(1f, 30f)] public float Frequency..
[Unity] JsonUtility NewtonSoft JSON 차이
·
Game Engine/Game Project
기능JsonUtilityNewtonsoft.Json속도빠름느림 (상대적)배열 지원제한적 (Wrapper 필요)강력커스텀 컨버터불가가능Unity 내장OX (패키지 설치 필요)