[C#] ref 와 out 매개변수 한정자
프로그래밍 공부/C# 프로그래밍2022. 8. 24. 01:14[C#] ref 와 out 매개변수 한정자

두개를 많이 사용해보지 않았더라도 유니티를 사용해보셨다면 out한정자는 꽤 많이 보셨을것이다. 아마 레이캐스트를 사용할때의 매개변수로 맞은 오브젝트를 전달받아 무언가를 처리할때 가장 많이 보셨을것 같다. 하지만 주변에 있음에도 정확한 사용법과 차이를 모르고 넘어가는 경우가 있어서 정리 하려고 한다. Swap 메소드 만들어보기(Call By Value) public static void Swap(int a, int b) { int temp = a; a = b; b = temp; } 간단하게 2개의 정수값을 바꿔주는 메소드를 만들었다. static void Main(string[] args) { int A = 10; int B = 20; Console.WriteLine($"A = {A}\nB = {B}");..

[Unity_C#] Switch문 & Switch 식
프로그래밍 공부/C# 프로그래밍2022. 8. 21. 02:55[Unity_C#] Switch문 & Switch 식

요즘 C# 책을 사서 공부중인데, 생각보다 내가 모르는 부분이 정말 많다는것을 느꼈다. 책을 통해 Switch에 대해 새로 알게된 부분을 정리해보려고 한다. Switch 문 스위치문은 여러가지의 경우의 수를 한번에 판단하기 위해 많이들 써보셨을거라고 생각한다. int a = 0; switch(a) { case 0: Console.Write("a는 0입니다."); break; case 1: Console.Write("a는 1입니다."); break; default: break; } a의 값에 따라서 case로 설정해둔 조건에 의해 코드가 실행된다. 조건식은 정수와 문자열 형식 두가지만 가능하다. 데이터형식 조건 C# 7.0부터는 switch문에 데이터 형식을 조건으로 쓸 수 있다고한다. 가장 최신 유니티버..

유니티 박스(장애물) 높이별 점프 구현해보기
게임 엔진/Unity2022. 8. 15. 01:51유니티 박스(장애물) 높이별 점프 구현해보기

여러가지 이유로 현타도 오고 벽도 느끼고 생각도 많아진 주말을 보냈다. 덕분에 공부할 시간을 날렸지만 마음을 다잡은 계기가 된것같다. 제대로 공부를 시작하기 전에 그냥 살짝 맛보기로라도 구현해보고 싶은 기능이 있어서 정말 구현만 해봤다. 이미 많은 분들이 알고 계시기도 하겠지만, 혹여나 모르는 분들이 계신다면 조금이라도 도움이 됐으면 좋겠다. 애니메이션 처리나 코드는 정말 막했으니 방법만 보고 자기방법으로 응용해서 해보시는게 좋을것같다. 레이캐스트 3개 만들기 이런식으로 높이가 다른 3개의 박스를 점프를 통해 넘어가는 기능을 구현하려고 한다. 판단을 위해 빈 오브젝트를 생성해서 레이캐스트를 쏠 위치를 잡아주었다. 스크립트상에서는 RayPos라는 트랜스폼 배열을 선언하고 아래부터 순서대로 넣어주었다. pr..

프로그래밍 공부/C# 프로그래밍2022. 8. 11. 22:29클래스와 구조체 / 배열과 리스트 / awake와 start의 차이

클래스와 구조체의 차이 클래스 1. 참조타입이다. 2. 그렇기 때문에 Heap에 생성된다. 3. 상속이 가능하다. 4. 기본 접근 제어자는 Private 이다. 구조체 1. 값타입이다. 2. 그렇기 때문에 Stack에 생성된다. 3. 내부에서 new 연산자를 자동으로 호출하기 때문에 사용자가 할당할 필요 없다. 4. 클래스의 상속이 불가능하다.(인터페이스는 가능하다). 5. 클래스의 상속이 안되기때문에 접근지정자 Protected가 불가능하다. 6. 기본 접근제어자는 Public 이다. 어떨때 무엇을 써야할까? 마소 도큐먼트에 들어가면 간단한 문서가 있다. - 일반적으로 프레임워크의 대부분을 클래스여야 한다. 아래와 같을때 구조체를 쓰면 좋다. - 형식의 인스턴스가 작고 일반적으로 수명이 짧거나 다른개체..

[유니티 공식 유튜브] IL2CPP란 무엇일까?
게임 엔진/Unity2022. 8. 9. 04:46[유니티 공식 유튜브] IL2CPP란 무엇일까?

빌드 설정의 Configuration - Scripting Backend를 본다면 Mono와 IL2CPP라는 항목을 볼 수 있다. 디폴트로는 Mono로 설정이 되어있는데 Mono는 무엇이며 IL2CPP는 무엇인지 공부해봤다. 유니티의 속사정 '유니티는 C#이기 때문에 느리다' 라고 하는 사람들도 많이 있다. 하지만 유니티는 엔진 내부는 C++로 만들어져 있고 유저에게 노출되는 API와 유저 스크립트만 C#이다. C++ 과 C# C++ 부터 객체지향, Class를 사용할 수 있고 메모리를 '직접' 관리해야 한다. New라는 키워드로 생성을 하고 Delete라는 키워드로 메모리 할당을 해제해줘야 메모리 누수가 발생하지 않는다. C#은 마이크로소프트사의 닷넷 프레임워크를 기반으로 돌아가는 언어인데, manag..

가비지 컬렉터(garbage collector)
프로그래밍 공부/C# 프로그래밍2022. 8. 8. 22:24가비지 컬렉터(garbage collector)

가비지 컬렉터 가비지란 무엇일까? - 가비지란 참조자가 없는 인스턴스를 말한다.(메모리 누수) 가비지 컬렉터란? - 가비지 컬렉터는 자동 메모리 관리자 역할을 한다. - 어플의 메모리 할당 및 해제를 관리한다. 가비지 컬렉터의 이점 1. C에서는 calloc,malloc - free C++에서는 New - Delete로 메모리를 직접 할당하고 해제를 해줘야 했는데 C#에서는 가비지 컬렉터가 있기때문에 개발자들은 메모리 관리 작업을 수행하기위해 코드를 작성할 필요가 없어졌다. 실수로 할당한 메모리를 해제하지 않아 메모리 누수를 걱정 할 필요가 없고 이미 비워진 객체에 메모리를 참조하는 등의 문제점을 해결 할 수 있다. 2. 관리되는 힙에 효율적으로 개체들을 할당한다. 3. 사용되지 않는 개체를 회수, 메모..

image