C#의 경우 제가 기존 전공 수업을 통해 배웠던 C++과 유사한 부분이 많아서 조금은 배우기 편했는데요. 기본적인 변수, 연산자, 조건문, 반복문, 등은 위의 골드메탈님 영상을 통해 차근차근 해보시면 금방 배우실 수 있으실 거에요!
저의 경우 앞서 전공과목 중 배운 C++에서 함수와 클래스를 깊게 다루지 않아 공부 했었던 것을 두고두고 보고 싶어서 이 게시글을 작성하는 것이니 참고해 주세요!
가장 먼저 유니티 내부에서 C# 스크립트 하나를 만들어 주세요.
1. 함수 (메소드)
함수는 두 가지 타입으로 나누어 볼 수 있습니다.
바로 리턴 값이 없는 void형과 리턴 값이 있는 int, float.... 형 등등 이 있는데요.
이 게시글에서는 void 형으로 다루어 보겠습니다.
아래의 예시 코드는 삼성 주식 게임을 다루었다고 생각해봅시다.
전역 변수로 주식의 현재가를 선언하고 Start 함수 내의 StockPriceRising 함수가 실행됩니다.
이후 void로 선언된 StockPriceRising 함수가 실행되고 현재가가 10,000원 오른 것을 확인 하실 수 있습니다.
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassNewBehaviourScript : MonoBehaviour
{
intSamsungStockPrice = 60000; //삼성 주식 가격을 초기 60,000원으로 설정, 전역 변수 (멤버 변수)로 선언.
voidStart (){
StockPriceRising(); // 함수를 실행
}
voidStockPriceRising(){
SamsungStockPrice+=10000; // 현재 삼성 주가 + 10,000원
Debug.Log("주식 가격이 10,000원 올랐습니다."+SamsungStockPrice); // 유니티 콘솔 창에 현재 주가 표시
}
}
이처럼 함수는 여러개의 함수를 만들어 코드를 간략화 시킬 수 있고 비슷한 로직은 계속해서 불러와 쓸 수 있다는 장점이 있습니다.
2. 클래스
publicclassNewBehaviourScript : MonoBehaviour
우선 unity내부에서 C# 스크립트를 생성하고 바로 볼 수 있는 것이 위와 같은 클래스입니다. 사실 저도 아직 클래스에 대한 개념 자체가 제대로 서지 않는데요. 보통은 클래스를 붕어빵 틀에 비유하고 거기서부터 나온 객체를 붕어빵에 비교하던데 혹여 C#과 같은 객체 지향 프로그래밍 언어에서 객체지향에 대해 궁금증이 생기신 분은 구글링을 통해 자세한 정보를 얻으실 수 있습니다!
class : 클래스를 만들 때 사용하는 키워드
unity에서는 하나의 클래스는 하나의 파일에 대응합니다. 이를 꼭 기억하도록 합시다.
위에서 저희는 삼성 주식 게임을 만들려고 NewBehaviourScript 라는 C# 스크립트를 unity에서 생성했었는데요, 하나의 파일은 하나의 클래스에 대응하기 때문에, 우리는 새로운 파일 하나를 더 만들 것 입니다. unity 내부에서 STOCK이라는 C#스크립트를 하나 더 생성해 주세요.
이번에는 주식 게임에 SK도 추가해 보겠습니다.
먼저 STOCK 파일에
publicclassSTOCK{
publicstringSTOCKname; // public 절대 까먹지 말기!
publicstringSTOCKtype;
publicintSTOCKprice;
}
이렇게 코드를 작성해 주세요.
여기서 우리는 public 을 통해 NewBehaviourScript 에서도변수를 사용할 수 있게 하여야 합니다.
그리고 다시 NewBehaviourScript로 돌아와 삼성 주식 게임 코드에서 아래와 같이 Start함수에 추가로 작성해 주세요.
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassNewBehaviourScript : MonoBehaviour
{
intSamsungStockPrice = 60000; //삼성 주식 가격을 초기 60,000원으로 설정, 전역 변수 (멤버 변수)로 선언.
voidStart (){
StockPriceRising(); // 함수를 실행
STOCKSKSTOCK = newSTOCK(); // 인스턴스화, 정의된 클래스를 실체화 하는 과정
SKSTOCK.STOCKname="SK";
SKSTOCK.STOCKprice=200000;
SKSTOCK.STOCKtype="KOSPI";
Debug.Log("주식의 이름은 "+SKSTOCK.STOCKname + " 주식의 종류는 "+SKSTOCK.STOCKtype+" 주식의 가격은 "+SKSTOCK.STOCKprice);
}
voidStockPriceRising(){
SamsungStockPrice+=10000; // 현재 삼성 주가 + 10,000원
Debug.Log("주식 가격이 10,000원 올랐습니다."+SamsungStockPrice); // 유니티 콘솔 창에 현재 주가 표시
}
}
여기서 중요한 과정은 정의된 클래스를 위의 코드 처럼 인스턴스화 시켜주는 것이 중요합니다.
이 코드를 unity 내부에서 실행 시켜보면
이와 같은 결과를 얻을 수 있습니다.
어찌보면 STOCK이라는 붕어빵 틀로 SKSTOCK이라는 붕어빵을 만들어냈다고 할 수 있겠네요.
자, 다음은 상속에 대해 알아보겠습니다.
이번에도 새로운 C#스크립트를 만들어 주세요. 이름은 STOCK2로 하겠습니다.
STOCK2에서 아래와 같이 코드를 작성해 보겠습니다.
publicclassSTOCK2 : STOCK
{
}
보시다 시피 클래스 선언 이외에는 아무것도 없는 모습을 보실 수 있는데요, 저희는 지금부터 STOCK 클래스를
STOCK2 클래스로 상속 시켜 줄 것입니다.
다시 NewBehaviourScrip 로 돌아와서
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassNewBehaviourScript : MonoBehaviour
{
intSamsungStockPrice = 60000; //삼성 주식 가격을 초기 60,000원으로 설정, 전역 변수 (멤버 변수)로 선언.