유니티 Input system 특정 입력 무시하는 방법
·
Unity/2D
유니티에서 Input system을 사용하다보면, 특정 입력을 받고 싶지 않을 때가 있다. 예를 들면 옵션 창이 활성화 중이라면 게임은 일시정지가 되어야하기 때문에 플레이어의 이동, 상호작용 등의 모든 키 입력은 무시해야한다. 이럴 때 actions["이벤트 명"].Disable을 사용하면 특정 키 입력을 무시할 수 있어 위와 같은 문제를 해결 할 수 있다. 위 처럼 InputSystem에 등록된 Action 이벤트들은 세팅해놓은 입력장치의 입력에 따라 호출되는데 이를 ations.Disable()을 통해 Input 값을 받지 않게 할 수 있다.  _playerInput.actions은 딕셔너리 형태이기 때문에 [] 안에 key값으로 해당 이벤트 이름을 넣어 Disable(), Enable()을 통해 입..
유니티 버튼 클릭 이미지 변경하는 방법
·
Unity
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonImageChanger : MonoBehaviour, IPointerDownHandler, IPointerUpHandler{ private Button _button; //버튼 private Image _buttonImage; //버튼 이미지 [SerializeField] private Sprite normalImage; // 기본 이미지 [SerializeField] private Sprite pressedImage; // 눌림 이미지 private void Awake() { _butt..
유니티 2D 콜라이더 합치기
·
Unity/2D
문제 발생 타일맵으로 바닥 타일을 제작하던 도중,Tilemap Colider를 사용하니 쓸데없이 많은 콜라이더가 생성되었다.콜라이더가 많을경우 물리업데이트 필요한 모양수가 많아짐으로, 계산량이 늘어나서 성능 저하가 생길 수 있다. 따라서 방법을 찾던도중 Composite Colider2D를 알게 되어 적용하여 문제를 해결하였다. 해결 방법 사용하고있는 Tilemap Colider 2D 컴포넌트의 Used By Composite 설정을 체크해줘야한다.큰 차이는 없지만 Max Tile Change Count도 1000개까지는 필요없을 것 같아서 100개로 줄여주었다.  이후 Tilemap2D Colider의 부모 오브젝트에 Composite Colider 2D 컴포넌트를 추가해주면자동으로 Rigidbody ..
유니티 2D RuleTile 규칙 유의사항
·
Unity/2D
문제 발생룰타일로 규칙을 설정하고, 언덕을 만들던 도중,언덕 사이에 있는 블럭이 계속 엉뚱한걸로 배치되었다.   해결 방안 유니티에서 규칙이 애매할경우, Default Sprite로 자동으로 배치해주는 것 같다.따라서 위 사진처럼 Default Sprite를 원하는 타일로 변경하여 해결하였다. 참고자료: 유니티 Docshttps://docs.unity3d.com/Packages/com.unity.2d.tilemap.extras@1.6/manual/RuleTile.html
유니티 모바일 프레임
·
Unity
유니티에서는 모바일 프레임이 60이 안나오면 30으로 고정시킨다고한다.따라서 60으로 바꾸고 싶다면 따로 설정을 해줘야한다. https://docs.unity3d.com/ScriptReference/Application-targetFrameRate.html Unity - Scripting API: Application.targetFrameRateAn integer. The default value of Application.targetFrameRate is -1. In the default case, Unity uses the platform's default target frame rate. Otherwise, targetFrameRate is a positive integer representing ..
[유니티] InputSystem이 동작안하는 오류
·
Unity
문제원인 위처럼 OnAttack이라는 함수를 이용해, 마우스 왼쪽버튼을 누르면 "공격버튼 눌림"이라는 메세지를 띄우려고 했으나,동작하지 않았다. 해결방안 Input System Package -> Supported Devices에 마우스를 추가하지 않아서 생긴 오류였다.
[유니티] You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.
·
Unity
문제원인Project -> Player -> OtherSetting -> Configuration -> Active Input Handling을 InputManager로 했었는데.시뮬레이션 상으로는 Both로 세팅해야하나보다. 해결방안 setting을 Both로 변경하여 오류를 해결하였다.
파괴하는 도중에 오브젝트 생성 오류
·
Unity/2D
문제원인싱글톤패턴을 사용하기위해 싱글톤 제네릭 클래스를 상속받은 형태로 코드를 구성할경우,해당 클래스의 instance가 존재하지않으면 오브젝트를 새로 생성하게된다.   위 처럼 파괴되는 시점에 singleton 클래스를 상속받은 클래스의 instance를 참조하게되면,파괴되는 도중에 해당 클래스가 다시 생성되는 경우가 발생하게된다. 즉, 게임이 종료되어 오브젝트들이 정리되는 와중에 파괴했던 오브젝트가 다시 참조되어 생성된다는 의미이다. 해결방안 _applicationIsQuitting 이라는 flag를 만들어, 지금 게임이 종료되고 있는 시점인지 감지하여,게임이 종료중이라면, instance를 참조하더라도 해당 오브젝트를 생성하지 않도록 return하는 코드를 추가해주면 된다.