enum은 열거형으로 지정된 상수 집합을 나타내는 것이다.
enum Direction { Forward = 0b_0000_0001, Backward = 0b_0000_0010, Right = 0b_0000_0100, Left = 0b_0000_1000, } void Start() { uint direction = 0b_0000_0000; if (Input.GetKeyDown(KeyCode.W)) direction |= (byte)Direction.Forward; else if (Input.GetKeyDown(KeyCode.S)) direction |= (byte)Direction.Backward; if (Input.GetKeyDown(KeyCode.D)) direction |= (byte)Direction.Right; else if (Input.GetKeyDown(KeyCode.A)) direction |= (byte)Direction.Left; } private void Move(Direction direction) { float x = 0.0f, z = 0.0f; switch (direction) { case Direction.Forward: z = 1.0f; break; case Direction.Backward: z -= 1.0f; break; case Direction.Right: x = 1.0f; break; case Direction.Left: x -= 1.0f; break; } print($"이동 방향 : {direction.ToString()}"); transform.Translate(x, 0.0f, z); print($"이동 위치 : {transform.position}"); }
오버로딩은 같은 이름의 함수가 있어도 대입되는 값에 따라 맞는 함수를 찾아가는 것을 말한다.
private void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) Move(1.0f); if (Input.GetKeyDown(KeyCode.Alpha2)) Move(new Vector2(1.0f, 1.0f)); if (Input.GetKeyDown(KeyCode.Alpha3)) Move(new Vector3(1.0f, 1.0f, 1.0f)); } private void Move(float x) { transform.Translate(x, 0, 0); } private void Move(Vector2 amount) { transform.Translate(amount.x, 0.0f, amount.y); } private void Move(Vector3 amount) { transform.Translate(amount); }
프로그램을 만들때 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 유지보수 -> 폐기 순서로 만든다.