본문 바로가기

게임개발16

[Effective C#] 2. const vs readonly 성능이 아주 중요하고, 상수의 값이 절대 바뀌지 않는 경우에만 const를 사용하고, 그 외에는 readonly를 사용한다. C#의 상수는 두 유형으로 나뉜다. const로 선언되는 상수는 compile-time 상수, readonly로 선언되는 함수는 runtime 상수이다. compile-time 상수는 컴파일 시에 그 값이 아예 literal로 대체된다. 따라서 compile-time 상수는 내장 숫자형, enum, 문자열, null만 사용 가능하며, 메서드 내부에서도 선언할 수 있다. runtime 상수는 컴파일 시에 해당 변수에 대한 참조 코드를 생성한다. runtime 상수는 구조체, 클래스에 대해서도 사용할 수 있지만, 메서드 내부에서 선언할 수 없다. 상술한 특별한 경우에만 const를 사.. 2023. 11. 7.
[Effective C#] 1. 지역 변수에 대한 var 사용 1. var C#의 var keyword는 compile time에 변수의 자료형을 추론하는 keyword이다. int a = 100; var b = 100; b에 대하여 type을 명시해 주지 않았지만, 컴파일러가 자동으로 RHS의 타입을 b에 할당한다. (단, var keyword를 사용하려면 변수를 선언할 때 초기화해야 한다.) 2. 지역변수에 var keyword를 사용하는 이유 사실 명시적으로 type을 표기하는 것이 지금까지 내가 해 오던 방식이었기에 처음에는 상당히 의아했다. 코드를 이해하기 너무 어려워지는 것 아닌가 하는 생각이 들었기 때문이다. 하지만, var type을 사용하면서도 가독성을 유지하거나 상승시킬 수 있다. 정확히 타입을 기술하는 대신 타입을 유추할 수 있는 변수명을 도입하.. 2023. 11. 6.
[Unity] Transform.SetParent 1. 프리팹을 Resources.Load()로 불러 온 다음에 바로 부모-자식 관계를 설정하려고 하면 에러가 난다. (error: Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption) GameObject prefab = Resources.Load("Prefabs/xxx") as GameObject; GameObject prefabInstance = PrefabUtility.InstantiatePrefab(prefab) as GameObject; prefabInstance.SetParent(parent.transform); 와 같이, 인스턴스화를 한 후에 SetParnet를 해 줘야.. 2023. 1. 19.
[Unity] 추적 카메라 *** 공부하다 알게 된 것들을 메모하는 페이지입니다. 오류가 있을 수 있습니다. *** using System.Collections; using System.Collections.Generic; using UnityEngine; public class FollowingCam : MonoBehaviour { public GameObject target; public Transform targetTransform; //추적 대상의 Transform private float _distance; //Camera와 target 사이의 거리 private float _cameraHeight; //Camera 높이 private float _smoothRate; //부드러운 Camera 회전 private Tran.. 2023. 1. 3.