[Unity] 버튼 클릭 이벤트가 실행되지 않는다?
·
공부/Unity
버튼 클릭이 되지 않는다면 여러가지를 확인해보아야 한다.우선 나는 스크립트를 사용하여 onClick 함수를 지정하고 있었다. 1. 올바른 오브젝트를 찾고 있는가?2. EventSystem이 존재하는가?3. 버튼이 여러번 클릭된 후 클릭된 상태로 멈춘다면?4. 버튼을 가리고 있는 오브젝트가 있는가? 1. 올바른 오브젝트를 찾고 있는가?GameObject.Find("Canvas").transform.Find("OpenBook").Find("btnYes").gameObject.GetComponent().onClick.AddListener(() => { Debug.Log("btnYes"); }); 스크립트는 위와 같았다. 버튼 오브젝트를 정상적으로 찾았지만 디버그..
[Unity] Player 효과음 주기 (Audio Source, Audio Clip)
·
공부/Unity
플레이어가 점프를 하거나 공격을 할 때 효과음을 주고 싶다면 코드에서 Audio Source와 Audio Clip을 조작하면 된다. 소리를 주고 싶은 GameObject에 Audio Source 컴포넌트를 추가해준다. 소리가 계속 나오게 할 거라면 Audio Resource에 바로 음악 파일을 넣어주면 되지만 우리는 점프할 때 효과음을 주고 싶으니 빈 칸으로 둔다.기본적으로 Play On Awake가 체크된 상태일 텐데 이렇게 하면 오브젝트가 생성되는 순간 효과음이 나오기 때문에 체크를 해제해준다. public class PlayerController : MonoBehaviour{ AudioSource _audioSource; AudioClip _audioClip; void Start(..
[Unity] WASD 키보드 입력과 Slider value (캐릭터 HP와 움직임)
·
공부/Unity
현재 캐릭터 이동을 WASD로 하고 있다. 캐릭터 HP를 표시하는 것도 Slider 컴포넌트를 이용하고 있다.이따금 캐릭터를 이동시키면 HP Slider의 value가 바뀌는 현상이 있다. 간단 해결법 => Slider Navigation을 None으로 변경한다.
2D 도트 픽셀 그리기 사이트
·
공부/Unity
https://www.piskelapp.com/ Piskel - Free online sprite editorPiskel is a free online editor for animated sprites & pixel art Create animations in your browser.www.piskelapp.com 가끔 필요한 간단한 이미지는 찾는 것보다 직접 도트를 찍는 게 더 효과적이다. 직접 찍자...
[Unity] Camera View와 Game View가 일치하지 않는 문제
·
공부/Unity
뭐라고 검색할 지도 몰라 카메라 뷰 게임뷰 다름, 메인 카메라 플레이어 등등... 많은 검색을 했고 대부분 사람의 경우 코드에서 Camera에 물리엔진을 적용시킨 것에서 원인을 찾았다. 나는 그게 아니었고... 바보 같은 행동을 저질렀다...!  1인칭 프로젝트를 진행 중이기에 Player 하위에 Camera가 들어있고 이게 Main Camera 역할을 하고 있는 상황이다. ⁉️⁉️⁉️⁉️ Player에도 Camera component가 들어있다. 이게 뭔!!!! 컴포넌트를 비활성화시켜주면 게임뷰와 카메라뷰가 일치하게 된다.
[Unity] Composite Collider 2D 적용 후 Play 눌렀을 때 화면이 위로 올라가는 현상
·
공부/Unity
제목 그대로, Composite Coliider 2D를 적용한 뒤 플레이를 눌렀을 때 게임 화면이 위로 올라가는 현상이 나온다면 Rigidbody 2D의 Body Type이 Dynamic인 것입니다. Static으로 변경하세요
[Unity] [Collab] Collab service is deprecated and has been replaced with PlasticSCM 에러
·
공부/Unity
Unity에서 새로운 프로젝트를 생성하자 이런 에러가 계-속 나온다. 매초마다... 내가 찾은 해결 방안을 써보겠다... 1️⃣ project -> Reimport All 2️⃣ Edit -> Project Settings -> Services -> Collaborate -> OFF
[Unity] 'Debug'는 모호한 참조입니다.
·
공부/Unity
가끔 Debug가 먹히지 않으며 오류를 뱉을 때가 있는데 오류 메시지에 이미 원인이 나와있다. using UnityEngine과 using System.Diagnostics를 함께 사용하기 때문에 나오는 오류다. using System.Diagnostics를 삭제해주자.
[Unity] 게임 화면이 파란색만 뜬다
·
공부/Unity
Main Camera의 시선을 보여줘야할 Game 부분이 파란 화면만 뜬다. 보통 Main 뿐만 아니라 다른 곳에도 Camera가 들어있어서 발생하는 오류다. 잘못 들어간 Camera 컴포넌트를 삭제해주면 된다. 내 경우, CameraController에서 호출하는 camera가 this의 형태였는데 이걸 Camera.main으로 하니 문제가 해결됐다.
[Unity] Object Pooling/Pool Manager는 왜 사용하는가?
·
공부/Unity
Object가 필요할 때마다 Instantiate를 사용해 생성하고, 다 쓰면 Destroy를 사용해 없애는 과정은 매우 비효율적이다. Object를 생성하고 없애는 일은 부하가 큰 작업이다. 성능이 저하된다는 이야기다. 이래서 사용하는 것이 Pool이다. Pooling할 Object를 공간에 넣어놓고, 필요하면 그 공간에서 Object를 꺼내다 사용한다. 사용이 끝나면 Object를 없애는 것이 아니라 다시 그 공간에 넣어둔다. 만약 똑같은 Object를 2번 이상 사용한다면 같은 Object를 하나 더 생성하게 된다. https://a6ly.dev/93 [Unity] Object Pooling (오브젝트 풀링) 오브젝트 풀링의 사용 이유 : 오브젝트의 생성과 파괴는 부하가 크고, 오브젝트의 파괴는 G..
[Unity] 2D 캐릭터 무한 점프 막기
·
공부/Unity
좌우 이동은 마무리한 캐릭터가 스페이스를 먹었을 때 점프하게 하는 코드다. 기존 이동 코드에 내용을 추가해주면 된다. 플레이어에는 Rigidbody 2D, BoxCollider 2D가 들어있고, 바닥에는 Box Collider 2D가 들어있다. 바닥 태그를 Ground로 설정해준 상태이다. bool _canJump; void Update() { Moving(); } void OnCollisionEnter2D(Collision2D collision) //바닥과 충돌 감지 { if (collision.gameObject.tag == "Ground") _canJump = true; } protected virtual void Moving() { if (Input.GetKeyDown(KeyCode.Space) ..
[Unity] GetKey / GetKeyDown / GetKeyUp
·
공부/Unity
· GetKey 키를 누르고 있을 때 true 반환 · GetKeyDown 키를 눌렀을 때 true 반환 · GetKeyUp 키를 눌렀다가 떼면 true 반환
[Unity] Tile로 만든 맵, 선이 생겨서 마음에 들지 않을 때
·
공부/Unity
사진 속 예시처럼 이어서 그린 Tile 맵 사이사이에 선이 생겨서 마음에 들지 않을때 제일 간단한 해결 방법이다. Project Settings에 들어간다. Quality -> Anti Aliasing을 Disabled로 변경해준다. 선이 전부 사라지지는 않았지만 대충 봐줄만 한 형태가 됐다.
[Unity] player가 갈 수 없는 영역 표시하기
·
공부/Unity
player의 이동 영역을 지정하고 싶은데 방법을 알지 못해서 강의에서 알려준 그대로 복습해봤다. 새로운 타일맵을 생성한다. 이름은 collision 비슷한 느낌이 나게 만들어주면 된다. 사용하지 않는 sprite로 player가 갈 수 없는 공간을 쭉 둘러준다. collision에 새로운 script인 "Collision" 파일을 생성하고 컴포넌트로 추가해준다. public class Collision : MonoBehaviour { public Tilemap _tilemap; void Start() { } void Update() { List blocked = new List(); foreach (Vector3Int pos in _tilemap.cellBounds.allPositionsWithin) ..
[Unity] 게임 실행 작은 화면으로 하기
·
공부/Unity
어떤 스크립트던 게임과 함께 실행되는 스크립트 상에 코드 한 줄만 넣어주면 된다. GameScene 등과 같이 기본적인 스크립트에 넣는 걸 추천 Screen.SetResolution(640, 480, false); 순서대로 가로, 세로, 전체화면유무를 명시해준다.