반응형

[Unity]/[Unity] 38

[Unity] StopCoroutine의 올바른 사용 방법

안녕하세요, 극꼼이입니다. 오늘은 StopCoroutine 사용법을 알아볼건데요, StopCoroutine은 잘못된 사용법을 이용하게 되면 코루틴이 제대로 정지되지 않는 현상이 발생하기 때문에 제대로 된 사용법을 숙지해야 합니다. StopCoroutine 사용법에는 String, Coroutine 2가지가 있습니다. 1. String StopCoroutine 에서 String 방법을 쓸 때 중요한 부분은 StartCoroutine 에서도 String으로 코루틴 이름을 입력해야 한다는 점입니다. 위와 같이 입력한 후, 스페이스바를 누르면 StopCoroutine이 제대로 작동하는 것을 확인할 수 있습니다. String 으로 StopCoroutine을 사용할 경우, 아래와 같이 여러개의 코루틴을 돌리더라도 ..

[Unity]/[Unity] 2021.06.25

[Unity] IPointerUpHandler, IPointerDownHandler가 작동하지 않을 때

여느때처럼 게임개발을 하던 중 이상한 현상을 발견했는데요, IPointerUpHandler가 어떨땐 정상적으로 기능을 하고, 어떨땐 기능을 하지 않는 것이었습니다. IPointerUpHandler : void OnPointerUp 함수를 사용할 수 있게 해줌 - 버튼을 클릭/터치하는 순간 실행 IPointerDownHandler : void OnPointerDown 함수를 사용할 수 있게 해줌 - 버튼을 클릭/터치를 떼는 순간 실행 이런 저런 구글링을 해본 결과, 두 코드는 짝지어서 함께 써야 정상적으로 작동한다고 합니다. 이 방법으로 해결되지 않을 경우, 1. 카메라에 PhysicsRaycaster가 있는지 2. 해당 오브젝트에 raycast target이 on 으로 되어 있는지 3. 해당 오브젝트에 ..

[Unity]/[Unity] 2021.06.24

[Unity] 유니티 저장 파일명 변경 방법(Project Settings)

[서문] 이전 게시글에서 파일을 저장하는 각 루트와 차이점에 대해 알아봤는데요, geukggom.tistory.com/9 [Unity 문법] 유니티 저장 경로(dataPath, streamingAssetsPath, persistentDataPath 경로와 차이점) [서문] 게임을 만드는 도중, 세이브/로드가 잘 안 먹히는 현상때문에 골머리를 앓았는데요, 실시간으로 인게임에서 데이터를 불러오고 저장하는게 잘 안 되는 현상이었습니다. (에디터 밖으로 geukggom.tistory.com Application.persistentDataPath 를 처음에 설정하지 않고 그대로 사용할 경우, C:\Users\[user name]\AppData\LocalLow\DefaultCompany\[game name] 위와 ..

[Unity]/[Unity] 2021.03.02

[Unity] 유니티 저장 경로(dataPath, streamingAssetsPath, persistentDataPath 경로와 차이점)

[서문] 게임을 만드는 도중, 세이브/로드가 잘 안 먹히는 현상때문에 골머리를 앓았는데요, 실시간으로 인게임에서 데이터를 불러오고 저장하는게 잘 안 되는 현상이었습니다. (에디터 밖으로 나갔다가 들어와야 잘 먹힘) 알아본 결과 파일을 저장하는 경로는 여러개가 있고, 저는 학원에서 배운 Application.dataPath + "Resources/..."를 계속 써왔는데 Resources파일에 저장하는 리소스들은 빌드 시 패키지에 포함되는 영역이지, 읽고 쓰는 파일을 저장하는 용도로 사용하지 않는다고 합니다. 에디터 상에서는 잠시 에디터를 벗어났다가 돌아오면 저장/로드가 되지만, 빌드를 한 후에는 따로 저장할 수 없다 합니다. 아래 본문에서 여러 저장 경로와 쓰임새에 대해 알아보겠습니다. [본문] 1) A..

[Unity]/[Unity] 2021.03.01

[Unity] Spine : 스파인 레이어(Order In Layer) 변경 코드

[서문] 스파인의 레이어는 Inspector창에서는 SkeletonAnimation컴포넌트의 'Order In Layer'라는 이름으로 되어있지만, 코드로 바꾸려 하면 다른 컴포넌트를 사용해서 바꾸게 됩니다. 자꾸 까먹어서 적어두는 스파인 레이어 변경 방법! [본문] 스파인을 하이랄키창에 끌어와서 SkeletonAnimation을 선택하면 아래 그림의 컴포넌트가 붙은 오브젝트가 생깁니다. 여기서 레이어가 SkeletonAnimation에 있기에 코드도 그렇게 바꿔야 한다고 여겨질 수 있지만, 레이어를 바꾸는 코드는 아래와 같습니다. transform.GetComponent().sortingOrder = 1; //스파인 오브젝트에 스크립트 붙여주기

[Unity]/[Unity] 2021.02.24

[Unity] RigidBody : 캐릭터 충돌 시 떨림 현상

[서문] 캐릭터가 Collider에 충돌했을 때 생기는 떨림 현상은 캐릭터를 transform.position으로 움직였을 경우 생깁니다. 이는 물리 계산 과정에서 생기는 현상으로, 캐릭터를 RigidBody를 사용해 움직이게 되면 해결됩니다. [본문] transform.position = Vector3.MoveTowards(transform.position, transform.position + forPos.normalized, Time.deltaTime * PlayerSpeed); 위의 코드가 원래 캐릭터를 움직였을 때 사용한 코드입니다. Vector3 forPos는 플레이어의 이동방향이 되겠습니다. myRigid.MovePosition(transform.position + forPos.normali..

[Unity]/[Unity] 2021.02.23

[Unity] RigidBody : Collider를 만들었는데 벽을 통과할 때

[서문] 벽에 Collider를 넣었음에도 가끔 플레이어가 벽을 통과하는 버그가 발생하곤 합니다. 물체의 가속도가 일정량 이상으로 올라가면 생기는 버그로, 원인과 해결 방법에 대해 알아보겠습니다. [본문] 1) 원인 : 2cm의 Collider가 있을 때, 1프레임 당 1cm 움직이는 물체에는 잘 적용되지만, 1프레임 당 3cm움직이는 물체는 오브젝트의 현재 위치 + 3cm = Collider의 뒷쪽 이 되면서 충돌처리가 잘 되지 않는 것입니다. 2) 해결 방법 : Interpolate의 옵션을 Extrapolate로 하면 충돌을 1프레임 더 앞서 예측하기 때문에 벽을 통과하는 현상이 나아집니다. 위의 방법에도 버그 현상이 나아지지 않는다면, Collision Detection의 옵션을 Continuou..

[Unity]/[Unity] 2021.02.22

[Unity] PlayerPrefs : 간단한 데이터 저장

[서문] PlayerPrefs : Key값과 Value값을 저장, 조회, 삭제할 수 있는 간단한 데이터 저장 방법. - 저장 가능한 데이터 타입 : int, float, string [본문] 1) 저장/수정 방법 : Set 키워드 사용 PlayerPrefs.SetInt("key0",10); PlayerPrefs.SetFloat("key1",10.5); PlayerPrefs.SetString("key2","stringWhat"); 2) 조회 방법 : Has 키워드 사용 PlayerPrefs.HasKey("key0"); //존재하면 true, 존재하지 않으면 false 3) 사용 방법 : Get 키워드 사용 PlayerPrefs.GetInt("key0"); //10 출력 PlayerPrefs.GetFloat..

[Unity]/[Unity] 2021.02.20
반응형