분류 전체보기331 c#_49 델리게이트 , 델리게이트 체인 Delegate 델리게이트는 함수를 대신해서 호출해주는 대리자입니다. 직접 함수를 호출하는 것이 아닌 함수 호출시 매개변수로 함수를 참조하여 호출합니다. 좀 더 쉽게 보자면 함수를 담아둘 수 있는 변수라고도 볼 수 있겠네요.아래의 예제를 통해서 살펴보시죠.위 예제에서 보듯 델리게이트는 함수를 다른 함수로 전달할 수 있습니다. 이 델리게이트에 함수를 대입함으로써 함수의 주소가 델리게이트에 할당이 되고 델리게이트를 매개변수로 넘겨 함수를 대리호출하게 됩니다.단 주의해야 할 점은 델리게이트의 매개 변수 타입과 갯수 그리고 반환 형식이 전달하고자하는 함수와 동일해야 합니다. 이 델리게이트는 다양하게 활용할 수 있지만 흔히 콜백 함수로써 활용됩니다. 어떤 이벤트가 발생했을 때 그 이벤트와 연관된 함수들을 등록해두고 .. 2022. 2. 14. c#_48 일반화 Generalization <T> 자료구조를 배우셨다면 아마 List, Dictionary 등 라는 것을 접해보셨을 겁니다. 자료구조를 활용할 순 있지만 가 무엇인지 모르고 쓰는 경우도 있으리라 생각이 듭니다. 저 역시 그런 경우였구요. 그래서 이 제너릭에 대해서 알아보고자 합니다. 보통 클래스를 만들게 되면 클래스에 포함된 모든 데이터들의 타입을 정해주게 됩니다. 아래 예제처럼 말이죠. 하지만 클래스의 역할에 따라선 일부 데이터들의 타입이 여러가지가 필요한 경우들이 있습니다. 예를 들어 정수형 타입 int를 매개 변수를 받아 더하는 함수가 포함된 클래스가 있다면 int 타입 외에는 처리를 할 수가 없습니다. 그렇다고 같은 역할을 하는 클래스를 하나 더 만드는 것도 낭비입니다. 그래서 필요한 것이 바로 입니다. 제너릭를 통.. 2022. 2. 11. c#_47 ?. ?? Null 조건 연산자 먼저 ?. 연산자에 대해 알아보도록 하겠습니다. ?. 연산자는 해당 객체가 Null이면 Null을 반환하고 아니면 값을 반환합니다. 이 연산자를 활용하면 if문을 사용해서 null체크를 하지 않고도 간단하게 null체크를 할 수가 있습니다. 더불어 에러 발생도 예방할 수 있습니다.위 예제에서 보듯 해당 객체가 비어있다면 null을 반환하고, 아니면 해당 객체의 속성 값을 반환하거나 함수를 호출합니다. ?.의 경우 리턴을 받게되는 변수가 Null타입을 가질 수 있는 리턴 변수여야 합니다. 그렇지 않다면 활용할 수 가 없습니다. 그래서 ?? 연산자와 함께 활용합니다. if문을 통해서 tc가 null인지 아닌지 체크할 필요없이 ?.연산자를 통해 해당 객체를 판별하고 ??와 함께 활용하여 판별 결과.. 2022. 2. 8. c#_46 삼항 연산자 삼항 연산자에 대해 알아보도록 하겠습니다. 말그대로 세 개의 항으로 이루어진 연산자 입니다. 이 삼항 연산자를 활용하면 if~else문의 비교적 긴 코드를 짧게 줄일수가 있습니다. 예를들어 위 예제와 같은 코드가 있다면 이를 아래의 코드처럼 줄일수가 있습니다.a > b 부분은 조건식이 되고 만약 이 조건이 참이라면 ? 뒤의 항 중 왼쪽항을 반환, 아니라면 오른쪽항을 반환하게 됩니다. 당연하게도 위의 결과는 false가 출력이 될겁니다. 굉장히 쉽죠? ㅎ 하지만 코드엔 정답이 없으니 본인 취향이나 프로젝트 성향에 따라 맞춰서 활용하시면 될 것 같네요. 결과는 똑같으니깐요^^ 2022. 1. 26. 리팩터링이란?? Refactoring 리팩토링? 사실 코딩을 하면서 리팩토링이란 용어를 잘 들어보진 못했다. 코딩지식이 얕다보니 모르는 것들이 너무 많습니다. ㅜㅜ 그나마 최근에 와서야 리팩토링, 리팩토링 하길래 간략하게나마 알아본 게 전부입니다. 구글 신 검색 결과 "리팩터링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. ... 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다." 라고 하네요. 그러니까 이미 작성한 코드와 코드의 구조들을 더욱 효율적으로 만드는 것이라고 할 수 있겠네요. 그래서 이 리팩터링을 해야하는 이유는 다음과 같습니다. 결과 지향적으로 코드를 작성하게되면 구조가 망가지게 되.. 2022. 1. 21. 프로그래밍 동기와 비동기 동기와 비동기에 대해선 프로그래밍을 배워본 사람이라면 그 개념을 잘 모르더라도 한번쯤은 들어봤을 단어일 것입니다. 저 역시도 계속 들어왔던 단어지만 그 개념은 아예 모르고 있었으니 말이죠. 그래서 동기와 비동기에 대해 정리해 보았습니다. 자 먼저 동기와 비동기는 프로그램에서 데이터를 받는 방식입니다. 쉽게는 데이터를 동시에 처리하느냐 아니냐에 따라서 나뉩니다. 동기 : synchronous 동기는 데이터를 동시에 처리한다고 했지만 그보단 데이터를 순차적으로 처리한다고 보는게 맞을것 같습니다. 만약에 서버에 데이터를 요청하면 그 데이터가 올 때까지 다른 작업은 수행하지 않는 것이죠. 데이터가 서버로부터 온다면 그 다음 작업들을 처리하게 됩니다. 개념은 아주 쉽죠?? 장점의 경우 설계도 쉽고 직관적이지만 요.. 2022. 1. 12. c#_as 연산자 as연산자의 경우 is연산자와 마찬가지로 형식과 연관된 연산자입니다. 다만 is연산자와 다른 점은 is연산자의 경우 type비교 결과에 따라 bool형식의 true, false를 반환합니다. 하지만 as연산자의 경우 형식 변환, 캐스팅에 활용됩니다. 왼쪽항의 객체에 오른쪽항의 타입을 비교하여 캐스팅 결과를 반환합니다. 만약 오른쪽 항의 캐스팅 결과가 성공하면 타입을 반환하고 실패하면 null을 반환합니다. 다만 as 연산자는 위 그림처럼 값형식이 아닌 참조형식만 캐스팅이 가능합니다. 그 점은 참고해주세요! 보통 캐스팅(형변환)에 활용합니다. p1의 경우 부모 클래스로 Child클래스를 포함하고 있지 않습니다. 당연하게도 형변환이 되지않습니다. 하지만 c2의 경우 Parent클래스를 상속받았기에 as연산자.. 2022. 1. 12. c#_is 연산자 is연산자에 대해 알아보도록 하겠습니다. is 연산자는 왼쪽항의 객체가 오른쪽항의 타입과 같은 타입인지를 비교해서 bool형식의 true, false를 반환합니다. 위 이미지에서 보듯 a객체를 is 연산자를 활용해 int형 타입인지 아닌지 판단 후 true, false를 반환하게 됩니다. 물론 기존처럼 이런 방법을 써도 무방하지만 그냥 딱 봐도 굉장히 편리하게 쓰이겠죠?? 2022. 1. 10. 비주얼 스튜디오의 프로젝와 솔루션?? Visual Studio Project & Solution?? 솔루션과 프로젝트에 대해서 알아보도록 하겠습니다. 비주얼 스튜디오를 통해 프로젝트를 생성하게 되면 솔루션이란 녀석 역시 생성이 됩니다. 솔루션은 프로젝트를 구성함에 있어 필요한 컨테이너입니다. 이는 빌드정보나 비주얼 스튜디오의 설정 값 등 특 기타 파일들과 함께 하나 이상의 관련된 프로젝트들로 구성이 됩니다. 쉽게 말하자면 프로젝트 묶음이라고도 표현할 수 있을듯합니다. 물론 이 외에도 여러 기능을 내포하고 있지만 대표적으론 프로젝트들을 관리하기 위한 컨테이너입니다. 이 솔루션을 통해 관련있는 프로젝트들로 묶어 관리할수도 있겠죠. 프로젝트는 하나의 exe 실행파일을 생성하기 위해 포함된 모든 파일들의 묶음입니다. 소스 코드, 아이콘, 이미지, 데이터 파일 등이 포함될 수 있습니다. 2022. 1. 5. Unity Camera 유니티 카메라 Projection의 Perspective와 Orthographic 차이점 일반적으로 게임을 개발할때 2D게임을 만들건지 아니면 3D게임을 만들건지 선택을 합니다. 이에따라 카메라가 화면을 그리는 방식을 정하게 되는데 이때 선택하는 것이 카메라의 Projection입니다. 화면을 그리는 방식은 두 가지로Perspective와 Orthographic 두 가지입니다. Perspective의 경우 보통 3D게임에 사용되고 반대로 Orthographic 은 2D게임에 사용됩니다. 물론 게임에 따라선 반대로 활용할수도 있겠죠. 먼저 Perspective는 3D의 공간감, 원근감을 표현합니다. 그래서 가까이 있는 물체는 크게 보이고 멀어질수록 작게 보입니다. z축, 깊이감이 있다보니 3D 게임에 적합합니다. 우리가 세상을 보는 방식과 비슷하죠. Orthographic은 원근법이 적용되지 .. 2022. 1. 4. Unity 유니티_3 유니티 에디터 알아보기 프로젝트를 시작하게 되면 가장 먼저 볼 수 있는 창들입니다. 각 창들에 대해서 먼저 간단히 알아보도록 하겠습니다. 차후 포스팅에서 각 창들에 대한 디테일한 점들을 알아보도록 하죠. Editor 유니티 프로젝트를 열게 되면 가장 먼저 볼 수 있는 모습입니다. 그와 함께 현재 저장되어있는 씬이 열립니다. Scene 먼저 Scene 씬뷰입니다. 씬뷰는 작업 공간이라고 생각하셔도 될 것 같습니다. 이 곳에서 카메라와 라이트를 비롯한 현재 씬에 있는 모든 오브젝트들을 볼 수가 있습니다. 더불어 위치나 회전, 크기 등도 변경할 수 있습니다. Game Game 게임 뷰는 현재 프로젝트의 씬에 존재하는 카메라가 찍고 있는 뷰입니다. 실제 게임 플레이를 하게 되면 보게되는 화면입니다. 이 게임뷰를 통해 실제 게임상의 최.. 2022. 1. 4. Unity_2 유니티 새로운 프로젝트를 생성해보자 지난 포스팅에서 유니티 허브와 유니티 권장 버젼을 설치했습니다. 이제 유니티를 설치했으니 새로운 프로젝트를 생성해야겠죠? 일단 유니티 허브를 먼저 실행합니다. 그 후 프로젝트 탭에서 새로 생성 버튼을 눌러줍시다. 2D 프로젝트냐 아니면 3D 프로젝트냐에 따라서 템플릿을 선택하신 후 프로젝트 이름을 설정하시고 프로젝트가 저장될 위치를 지정하신 후 생성 버튼을 눌러주면 됩니다. 템플릿 메뉴에 2D와 3D외에 다양한 템플릿 메뉴들이 있는데 메뉴들에 따라 유니티 에디터의 초기 셋팅이 달라집니다. 물론 직접 셋팅을 해도 무방합니다. 짜자잔~ 유니티 에디터가 열렸습니다. 컴퓨터 성능에 따라 시간이 꽤 걸릴수도 있으니 에디터가 열리는 동안 조금 기다려주시면 됩니다. 여기에서 원하는 프로젝트의 작업을 하나씩 해나가면 .. 2021. 11. 24. 이전 1 ··· 19 20 21 22 23 24 25 ··· 28 다음 반응형