c#(35)
-
[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 -
[Unity] 유니티 GameObject 클래스 정리
GameObject 클래스 : 유니티에서 사용되는 물체의 클래스 관리 MonoBehaviour 클래스 : 스크립트에 사용되는 클래스 관리, gameObject 변수를 통해 게임 오브젝트 관리 Unity 스크립팅 API https://docs.unity3d.com/kr/2022.1/ScriptReference/index.html Unity 스크립팅 API docs.unity3d.com UnityEngine이라는 namespace를 사용하는 것을 알 수 있고, 사용할 수 있는 변수들이 표시되어 있다. 생성자로 새로운 게임 오브젝트를 만들어낼 수 있다. 게임 오브젝트 생성 public class Test : MonoBehaviour { void Start() { GameObject obj1 = new Game..
2023.08.10 -
[C#] 배열, 리스트와 유니티 예제
배열은 클래스이며, 레퍼런스로 동작하기 때문에 선언만 해서는 안되고 new를 이용해 메모리를 만들어야 한다. int[] nums = new int[5]; string[] strs = new string[3]; nums, strs는 레퍼런스 변수이다. 배열 선언 int[] nums = new int[5]; nums[0] = 1; nums[1] = 2; int[] nums = new int[]{1,2,3,4,5}; int[] nums = new int[5]{1,2,3,4,5}; int[] nums = {1,2,3,4,5}; 배열의 실제 데이터는 힙 메모리 영역에 생긴다. nums 레퍼런스 변수는 스택 메모리 영역에 생긴다. 배열 접근 print(nums[0]); for(int i=0; i
2023.08.10 -
[C#] 클래스(Class) / 구조체와 클래스의 차이 / 스택 메모리와 힙 메모리 / 상속(inheritance)
구조체와 클래스는 비슷하지만 메모리 구조가 다르다. 클래스는 객체를 관리하기 위해 사용된다. 레퍼런스 변수가 있으며 실제 데이터는 레퍼런스가 가리키는 형식이다. 클래스의 실제 데이터는 힙 영역에 있다. (**함수 안의 값 형식 메모리는 스택에 존재 / 함수 밖의 값 형식 메모리는 힙에 존재) public class TestScript : MonoBehaviour { public class ClassPos { public int x; public int y; public int z; public void Show() { print(x + " " + y + " " + z); } void Start() { ClassPos cPos; cPos.x = 1; cPos.Show(); } } } 구조체와 다르게 위와 ..
2023.08.09 -
[Unity] 유니티 Vector3 / 위치와 스케일 변경하기
값 3개를 가지는 곳에 사용한다. 대표적으로는 transfrom의 position, scale이 있다. 쓰는 방법은 다음과 같다. Vector3 기본 선언 Vector3 vec1; vec1.x = 1; vec1.y = 2; vec1.z = 3; print(vex1); Vector3에 기본 생성자 사용 Vector3 vec1 = new Vector3(); vec1.x = 1; vec1.y = 2; vec1.z = 3; print(vec1); 매개변수가 있는 생성자로 선언하고 초기화하여 사용 Vector3 vec1 = new Vector3(1,2,3); 예제를 보면, public class TestScript : MonoBehaviour { void Start() { Vector3 vec1; vec1.x =..
2023.08.08