분류 전체보기 21

[Unity C#] 람다식(Lambda Expression) 기초 개념

람다식을 배우기 전에 먼저 익명 메소드에 대해 알아보자.  익명 메소드익명 메소드란 C# 2.0버전에서 나온 개념으로 이름이 없는 메소드로 일회성 메소드에 사용한다. 어떨 때 사용할까?  델리게이트에 전달되는 메소드가 일회성으로 필요할 때 사용한다.  익명 메소드 정의델리게이트 변수 = delegate(매개변수 목록) { // 실핼 할 코드 }; 익명 메소드는 위와 같이 정의 한다. 아래에서 기본적인 델리게이트 코드에서 익명 메소드를 사용한 코드로 변환을 해보자. using System.Collections;using System.Collections.Generic;using UnityEngine;public clas..

[Unity C#] Delegate (대리자), Delegate Chain 기본 개념

Delegate(델리게이트)델리게이트란 함수의 주소 값을 가지고 있어 해당 함수를 대신 호출할 수 있다. (함수에 대한 참조)델리게이트는 콜백을 해준다. (콜백 : 함수를 먼저 참조하고 나중에 호출한다) 함수를 미리 참조해놓고 나중에 원할 때 호출할 수 있다. (코드가 의존적이지 않고 유연하다)또한 여러 개의 함수를 한 번에 실행하는 체인 기능(델리게이트 체인), 어떠한 상황에 대한 이벤트를 발생(델리게이트 이벤트)할 수 있다.왜 사용할까? 그냥 바로 해당 함수를 실행해도 되지 않을까? 델리게이트는 타입이다. 타입은 매개변수나 반환 형식으로 사용할 수 있다. 즉 특정 함수를 매개변수로 받아오거나 반환 타입으로 사용하고 싶을 때 사용한다.예를 들어 A클래스에서 B클래스에 있는 함수를 사용하고 싶을 때 델리..

[Unity C#] Lerp 함수

Lerp 함수Lerp함수는 선형 보간법을 사용한다.선형 보간법 : 직선에 두 점이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적(비례적)으로 계산하는 방법참고 자료 : https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95_%EB%B3%B4%EA%B0%84%EB%B2%95 선형 보간법 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 선형 보간법(線型補間法, linear interpolation)은 끝점의 값이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법이ko.wikipedia.org 그래서 이걸 유니티에서 어떤 방식으로 사용할까? 유니티에서 Lerp함수를 이용할 때는 자연스..

[Unity C#] Time.deltaTime

Time.deltaTimeTime.deltaTime는 시간 개념으로 각 프레임을 렌더링하는데 걸리는 시간을 계산하는 Unity 함수이다. 즉 프레임이 바뀔 때마다의 시간 간격을 측정한 것이 Time.deltaTime이고 자료형은 float형이다. 왜 사용할까? 개인의 컴퓨터의 스펙은 다 다르다. 예를 들어 어떤 컴퓨터는 1초에 100프레임의 속도를 가질수도 있고, 다른 컴퓨터는 1초에 200프레임의 속도를 가질 수 있다.두 개의 컴퓨터를 사용한다고치고 Time.deltaTime을 사용하지 않고 1프레임마다 y축 방향으로 1f씩 증가하는 코드를 작성해 큐브에 할당해 보자.    using System.Collections;using System.Collections.Generic;using UnityEng..

[Unity C#] 객체 지향 _ 상속(추상 클래스, 인터페이스, 다중 상속)

이전에 포스팅 중 나왔던 상속에 대해서 좀 더 자세하게 알아보자. 상속다시 한 번 상속에 대해 간단하게 정리하고 추가적인 부분을 살펴보자. 상속이란 프로그래밍에서 부모 클래스의 기능을 자식 클래스(파생 클래스)가 물려받아서 쓰는 것이다. 부모 클래스의 멤버(변수, 함수)를 자식 클래스에서 사용이 가능하다. 또한 virtual, override 키워드를 통해 부모 클래스에 메서드에서 기능을 추가하거나 변환하여 사용이 가능하다. 또한 부모 클래스에 virtual 메서드가 있어도 자식 클래스에서 필요하지 않으면 사용하지 않아도 된다. public class Animal { public virtual void Shout() { } } public class Tiger : Ani..

[Unity C#] 객체 지향 _ 다형성

다형성다형성이란 객체가 다양한 형태를 가질 수 있음을 의미한다. 하나의 객체 혹은 메서드가 여러 가지 타입을 가질 수 있다. 상속받아서 만들어진 파생 클래스를 통해 다형성을 보여줄 수 있다. 즉 부모 클래스에서 파생된 자식 클래스가 여러 개 또는 다양한 형태로 만들어 질 수 있다는 것이 다형성이다. 이것만 봐서는 무슨 말인지 잘 모르겠다. 단계적으로 차근차근 살펴보자.  클래스 상속상속이란 부모 클래스를 토대로 자식 클래스를 만드는 것이다. 부모 클래스를 상속 받은 자식 클래스는 부모 클래스의 멤버(변수, 함수)를 사용 가능하다.상속 받는 자식 클래스를 파생 클래스 또는 서브 클래스라고도 칭한다.상속 하는 부모 클래스를 기반 클래스(Base Class) 또는 수퍼 클래스(Super Class)라 칭한다...

[Unity C#] 객체 지향 _ 캡슐화(접근 제한자, 프로퍼티)

캡슐화관련있는 데이터와 메소드로 객체를 만들고(하나의 단위로 묶는다), 객체 밖에서 알아야 할 필요가 없는 내부 멤버를 숨기는 것이다. 캡슐화의 가장 큰 장점은 정보 은닉에 있다. 외부에서 객체의 속성과 기능을 변경하지 못하게 하고, 데이터가 변경되더라도 다른 객체에 영향을 주지 않아 독립성을 확보할 수 있다. 결론적으로 캡슐화의 목적은 멤버를 하나의 단위로 묶어서 코드를 읽기 쉽고 수정하기 편리하게 만드는 것과 멤버를 보호함으로써 다른 사람에 의해 코드가 수정되거나 훼손되지 않게 막기 위해서이다.     접근 제한자(Access Modifier)접근 제한자는 멤버의 공개 설정 범위를 결정하는 역할을 한다. 간단하게 자주 사용하는 public, protected, private에 대해 알아보자 publi..

[Unity C#] 객체 지향 (클래스, 추상화)

객체지향이란OOP(Object Oriented Programming)으로 불리며 모든 것을 객체로 표현하는 프로그래밍이다. 그러면 객체란 무엇일까? 객체는 세상에 존재하는 모든 것, 예를 들어 사람, 자동차, 컴퓨터, 책 이런 모든 것을 객체로 표현할 수 있다. 예시로 든 사람은 사람의 속성(키, 몸무게, 나이 등 데이터), 사람의 기능(걷기, 밥먹기, 잠자기 등 행위)으로 나눌 수 있다. 이런 식으로 객체를 속성과 기능으로 구분하고 코드로 표현하는 것을 객체 지향이라고 한다.    클래스객체를 만들기 위한 청사진(설계도)이다. 객체가 어떤 속성을 가지고 있으며 어떤 기능을 하는지 설명해준다. 예시로 자동차 설계도를 본다면 자동차가 어떤 속성과 기능을 가져야 하는지 결정한다. 속성으로는 색상, 사이즈 등..

[Unity C#] C# 2.0 제네릭(Generic) 기초

제네릭이란C# 2.0부터 지원하는 제네릭은 일반화(Generalization)이라고 부른다. 일반화는 특수한 개념에서 공통된 개념을 찾아 묶는 것을 칭한다. 예를 들면 토끼, 고양이, 사자는 모두 동물이라는 공통된 개념으로 묶을 수 있다. 이런 일반화를 프로그래밍 상에서 제네릭( 일반화를 이용하는 프로그래밍 기법 )이라고 부른다. 앞선 컬렉션 포스팅에서 컬렉션의 단점( 박싱, 언박싱으로 인한 좋지 못한 성능 )을 보완하기 위해 등장하였다.  제네릭은 메서드(함수)나 클래스를 작성할 때 데이터 형식(Type)을 지정하지 않고, 실제 사용하는 시점에서 데이터 형식을 지정할 수 있도록 하는 기능이다. 그래서 재사용성이 높고, 컴파일 시점에서 타입 체크를 하기 때문에 안정적이다. 또한 코드의 가독성과 유지 보수..