유니티(87)
-
[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 -
[C#] 구조체(Struct)와 생성자, this 키워드
구조체는 클래스와 마찬가지로 변수와 함수로 이루어져 있다. 데이터 중심 기반 구조체 (C 언어) public class TestScript : MonoBehaviour { public struct StructPos { public int x; public int y; public int z; } // Start is called before the first frame update void Start() { StructPos pos; pos.x = 10; pos.y = 20; pos.z = 30; print("x : " + pos.x + " y : " + pos.y + " z : " + pos.z); } } 객체 기반 구조체 (C# 언어) -내용은 모르는 채로 함수만 쓸 수 있는 경우 public cla..
2023.08.08 -
[C#] 함수의 오버로딩(Overloading)
오버로딩(Overloading) - 같은 함수 이름으로 데이터 형에 따라 다른 동작을 하게 만드는 방법 (정수형 입력 값은 정수형 출력, 실수형 출력 값은 실수형 출력) int Add(int a, int b) { return a + b; } float Add(float a, float b) { return a + b; } int와 float형 두 함수는 각각 다음과 같이 사용할 수 있다. int number1 = Add(3, 5); float number2 = Add(1.3f, 4.0f); iRandom = Random.Range(1, 10); fRandom = Random.Range(1.0f, 10.0f); 함수 오버로딩에 의하여 Random.Range 함수는 정수 값을 입력하면 정수 출력값이 나오고,..
2023.08.07 -
[Unity] 유니티 함수의 종류 (제작 함수, 이벤트 함수, 제공 함수)
제작 함수 필요한 기능을 직접 제작하여 사용하는 함수 이벤트 함수 Start 함수와 같이 자동적으로 실행되는 함수, 특정 지점에 실행되는 함수 제공 함수 print, Debug.Log 함수 같이 유니티에서 이미 만들어져서 제공하는 함수. 호출해서 사용할 수 있음. 클래스 최상단에 namespace라 부르는 using.unityengine; 부분이 Random.Range 등의 제공 함수를 사용할 수 있게 해 준다. namespace는 클래스를 관리하는 공간이다. Random.Range : Random 클래스의 Range 함수를 사용 int value = Random.Range(1, 10); namespace는 다음과 같이 임의로 작성할 수 있다. namespace Utility { public class ..
2023.08.07 -
[C#] 함수의 종류 (입출력이 없는 함수, 입력만 있는 함수, 출력만 있는 함수, 입출력이 있는 함수)
입출력이 없는 함수 void TestFunc() { ... } void는 출력이 없음을 뜻하고 함수명 뒤의 괄호가 비었다는 것은 입력이 없다는 것을 뜻한다. 입력만 있는 함수 함수 안의 변수는 분리되어 있기 때문에 입력이 따로 필요한 경우가 있다. void MyPrint(int a) { ... } 출력은 없으며 int 형의 a 매개변수를 입력받는 함수이다. void Start() { MyPrint(10); } 함수를 호출해서 쓰는 경우 위와 같은 형식으로 쓸 수 있다. (10은 인자(argument)) 출력만 있는 함수 int MyNumber() { int num = 10; retrun num + 2; } 함수 앞에 출력하고 싶은 Type을 적는다. 함수 종료 시 return 키워드로 출력값을 내보낸다...
2023.08.07