본문 바로가기
728x90

[Unity]13

[Unity] 키보드, 마우스 입력 처리 받기 유니티에서는 Input 클래스를 통해 입력을 받을 수 있다. Input은 유니티가 제공하는 입력을 총괄하는 클래스이다. 입력은 크게 3가지 상태로 처리되는데 Down, Stay, Up 이다. Down은 눌렀을 때, Stay는 눌리고 있는 중일 때, Up은 뗐을 때를 의미한다. [ 단순 입력 처리 ] 게임에서 그 어떤 입력이라도 받는다면 Input.anyKeyDown이 True가 된다. 어떠한 게임이 로딩이 모두 완료되어 "Press Any Key" 또는 "아무 키나 입력" 같은 화면이 나왔을 때 유저가 어떤 키를 누르더라도 다음 화면으로 넘기고 싶다면 Input.anyKeyDown이 True일 때를 체크하면 된다. 만약 아무 키나 누르고 있는 상태를 체크하고 싶다면 Input.anyKey가 True인지 .. [Unity]/기능 2023. 1. 5.
[유니티] 게임 오브젝트의 생명 주기 유니티에서 가장 기본이 되는 단위는 게임 오브젝트이다. 이 오브젝트는 일정한 생명주기를 가지는데 게임 오브젝트가 생성되고 파괴될 때까지의 주기와 그에 맞춰 실행되는 함수를 알아본다. 게임 오브젝트의 생명주기는 기본적으로 "탄생 -> 활성화 -> 시작 -> 고정 업데이트 -> 업데이트 -> 늦은 업데이트 -> 비활성화 -> 파괴" 순으로 순환한다. 또한 각 오브젝트는 자신의 현재 상태에 맞춰 특정 함수가 동작된다. [ 생성 (Awake) ] 게임오브젝트가 생성될 때 최초 1회 Awake 함수가 호출된다. 이 함수는 객체의 삶의 시작을 알리는 함수로 오브젝트 내에서는 어떤 함수도 이보다 빨리 실행될 수는 없다. 오브젝트의 생명주기 동안 1회만 호출된다. [ 활성화 (OnEnable) ] 메모리 풀링을 사용하.. [Unity]/기능 2023. 1. 4.
[Unity] 중복 시드 없는 랜덤 함수 구현 완벽한 랜덤 함수를 만들기 위해서는 Random의 시드가 항상 변경되어야 한다. 이에 현실 시간을 가져와 시드를 변경하면 절대 중복 시드가 발생하지 않는다. 위와 같이 사용하면 된다. 대신 DateTime 을 사용하기 위해서는 Using System; 선언해야 하는데 이 때 System 안에도 UnityEngine 안에도 Random이 존재하기 때문에 네임스페이스 오류가 발생한다. 따라서 Random에 사용할 네임 스페이스를 명시적으로 표시한다. [Unity]/기능 2022. 1. 15.
[Unity] 이벤트 기반 프로그래밍 프로젝트의 기반이 되는 시스템을 설계해보았다 기존에는 단순히 Update내에서 특정 변수를 지속적으로 검사하는 등의 행위를 통해 이벤트를 검출하였다 이렇다보니 Update 함수의 내부가 복잡해지고 매 프레임마다 특정 변수들을 검사해야 했다. 또한 새로운 상태나 기능이 추가될 때 기존의 코드와 꼬이며 스파게티 코드가 되는 경우가 비일비재했다. 이벤트 기반의 설계를 하니 이러한 문제점들이 사라지게 되었다. 아직 처음 이벤트 기반 프로그래밍을 하였기 때문에 기존 설계의 습관들이 남아있으나 유지보수 측면에서 매우 훌륭하였다. 먼저 이벤트들을 관리하는 클래스와 이벤트들을선언한다 이 이벤트 매니저는 이벤트들을 관리하며 특정 이벤트가 발생하였을 때 해당 이벤트를 가지고 있는 객체들에게 이벤트가 발생하였음을 알려준다... [Unity]/기능 2022. 1. 15.
[Unity] 유니티에서 Json파일 파싱하여 사용하기 json파일 파싱하기 File 클래스를 사용하기 위해서는 using System.IO를 넣어야 함 저장하기 위한 파일은 반드시 시리얼라이즈라고 명시해야 한다 [Unity]/기능 2022. 1. 15.
728x90