전체 글(294)
-
[Unity] 오브젝트의 위치와 이동 (transform.position / transform.Translate / normalized)
오브젝트의 위치 읽어오기 public class Test : MonoBehaviour { void Start() { Vector3 pos; pos = transform.position; print(pos); } } 해당 오브젝트의 현재 위치를 읽어오려면 위의 코드를 사용하면 되며, x, y, z 특정 위치를 알고자 한다면 pos = transform.position.x의 형식으로 지정해 주면 된다. 오브젝트 위치 입력하기 transform은 프로퍼티 get, set을 쓰기 때문에 transform.position.x = 10; 은 오류가 발생한다. Vector3 값을 transform.position에 대입하면 된다. 아래와 같은 예시로 살펴볼 수 있다. public class Test : MonoBeh..
2023.08.14 -
[Unity] 변수를 보호하는 방법(캡슐화) - 접근 제한자 / 프로퍼티
접근 제한자 이용 public class Test : MonoBehaviour { public class Player { private int hp; public int GetHP() { return hp; } public void SetHP(int value) { hp = value; } } void Start() { Player player = new Player(); player.SetHP(50); int hp = player.GetHP(); print(hp); } } Player 클래스를 하나 만들고 hp라는 변수를 private으로 설정하였다. GetHP, SetHP로만 hp 변수를 변경하고 값을 받아올 수 있으며 직접적으로 hp 변수에 값을 대입할 수는 없다. 프로퍼티 사용 public cla..
2023.08.14 -
[Unity] Generic 문법 / GetComponent로 오브젝트 색깔 바꾸기
함수 오버로딩을 통해 int, float 등 형에 상관 없이 사용할 수 있다. 하지만 모든 함수에 오버로딩을 하기에는 불가능하기 때문에 Generic을 사용한다. public class TestGeneric { public T GenericMethod(T param) { return param; } } T는 임의의 타입이며 로 T 타입을 사용할 것임을 알려준다. (T param)의 T는 입력 파라미터 타입의 T이다. T를 이용한 함수 하나만 만들어두면 어떤 데이터 타입으로도 사용될 수 있다. public class Test : MonoBehaviour { public class TestClass { public int TestFunc(int param) { return param; } public flo..
2023.08.14 -
[Unity] Enum / 키보드 입력(GetKey, GetButton) / 마우스 입력(GetMouseButton, 마우스 이벤트)
Enum(열거형) 숫자로 되어 있는 값을 상수로 바꾸어 사용하는 타입. 숫자로 되어있을 경우 오류 발생이 쉽기 때문에 사용한다. public class Test : MonoBehaviour { public enum Season {Spring, Summer, Autumn, Winter}; void Start() { Season s = Season.Spring; if (s == Season.Spring) { print(s); } } } Season s 로 변수 선언이 가능하고, Season.Spring으로 값 받을 수 있다. 문자로 값을 불러왔지만 내부적으로는 숫자로 인덱스 되어있다. Input.GetKey 키보드 입력을 받는 GetKey에서 KeyCode가 enum의 열거형이다. void Update() ..
2023.08.11 -
[Unity] Time.deltaTime으로 깜빡이는 오브젝트 만들기
public class Test : MonoBehaviour { bool flag = true; void Update() { if (flag == true) { flag = false; } else { flag = true; } print(flag); } } update 함수가 0.03초마다 반복될 때마다 flag 변수의 true, false가 반복되어 바뀌면서 출력된다. public class Test : MonoBehaviour { float time = 0; void Update() { time += Time.deltaTime; if (time > 1) { print("time"); time = 0; } } } Time.deltaTime은 이전 프레임이 완료될 때까지 걸린 시간을 의미하며 그 시간을..
2023.08.11 -
[C#] 클래스의 소유와 참조 / 역참조와 상호 참조 / 자기 참조
소유와 참조 public class Test : MonoBehaviour { public class Father { public Child child; public int x; } public class Child { public int y; } void Start() { Father f = new Father(); Child c = new Child(); f.child = c; f.child.y = 20; c.y = 10; print(f.child.y); } } 위 코드의 클래스는 Father와 Child 두 개이다. Father 클래스는 Child 클래스의 인스턴스 child와 int x를 가지며, Child 클래스는 int y를 가진다. 변수 f와 c로 각각 해당 클래스의 메모리를 선언하였고 f.c..
2023.08.10