반응형

[Unity] 109

[C#] List 값 복사하기(참조하지 않고, 값만 복사하는 방법)

List는 앞서 나온 게시물에서 나온 참조 형식입니다. https://geukggom.tistory.com/44 [유니티 C# 기초] #02 : 변수 - 값 형식 / 참조 형식 유니티 기초 글 링크 모음 : geukggom.tistory.com/1 [서론] 안녕하세요, 극꼼이입니다! 1에서 변수의 데이터타입과 형변환을 알아본데에 이어서 변수의 값형식과 참조 형식에 대해 알아보도록 하겠습 geukggom.tistory.com List aList = new List(); List bList = aList; bList.Add(100); Debug.Log(aList[0]); //bList의 변화가 aList에도 똑같이 영향을 줘서 100이 찍힘. 원본 리스트에는 영향을 주지 않고, 값만 복사하고 싶을 수 있는데..

[Unity]/[C#] 2021.05.24

[C# 기초] #02 : 변수 - 값 형식 / 참조 형식

유니티 기초 글 링크 모음 : geukggom.tistory.com/1 [Unity] 공부글 모음 1) 변수 - 데이터형식(Data Type)과 형변환 : geukggom.tistory.com/20 - 값 형식 / 참조 형식 : https://geukggom.tistory.com/44 - List값 복사하기 : https://geukggom.tistory.com/55 geukggom.tistory.com [서론] 안녕하세요, 극꼼이입니다! 1에서 변수의 데이터타입과 형변환을 알아본데에 이어서 변수의 값형식과 참조 형식에 대해 알아보도록 하겠습니다. [값 형식] 값 형식은 말 그대로 값을 집어넣는 데이터 타입을 말합니다. 값 형식의 데이터 타입의 예시로는 int, float, char, string, bo..

[Unity]/[C#] 2021.05.15

[C# 기초] #01 : 변수 - 데이터형식(Data Type)과 형변환

변수는 유니티와 C#에 있어서 핵심적인 개념입니다. 다양한 종류의 데이터를 다룰 때 필요하며, 일종의 데이터를 담는 상자라고 생각하시면 됩니다. 변수에 대해서는 데이터 타입과 그 형변환, 값 형식과 참조 형식, 사용범위(접근지정자)에 대해 다룰 것이며, 오늘은 데이터 타입과 형변환에 대해서만 포스팅하겠습니다. 변수는 위와 같이 데이터 형식과 변수 이름으로 선언합니다. 이때 변수의 이름은 아래와 같은 규칙을 가집니다. * 변수 이름의 규칙 1) 변수명은 숫자로 시작할 수 없습니다. 2) 영문과 숫자, 언더바(_)만 사용할 수 있습니다.(공백과 특수문자는 사용 불가능) 3) 유니티와 C#에 이미 있는 키워드는 사용할 수 없습니다. 4) 같은 클래스 내에서 이미 선언한 변수명을 중복 사용할 수 없습니다. 데이..

[Unity]/[C#] 2021.03.29

[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
반응형