
아직 시험이 다 끝나지는 않았지만 쉬운 1과목만 남겨두어 이번 주말 중에 1번은 유니티 공부를 하자고 생각하였습니다.
그래서 C# 프로그래밍 기초에 대해 찾아보다가 골드메탈님의 [유니티 입문 강좌 B4] 인 C#프로그래밍 기초가 있어서 한 번 들어보고 정리해보았습니다.
1. 변수의 종류
- int : 정수형 데이터
- float : 소수형 데이터
- string : 문자열 데이터
- bool : 논리형 데이터(True or False)
사용예시
Debug.Log("Hello Unity!"); //Hellow Unity 출력하기
int level = 5;
float strength = 15.5f;
string playerName = "다프";
bool isFullLevel = false;
Debug.Log("용사의 이름은?");
Debug.Log(playerName); //다프를 출력
Debug.Log("용사의 레벨은?");
Debug.Log(level); //5를 출력
Debug.Log("용사의 힘은?");
Debug.Log(strength); //15.5를 출력
Debug.Log("용사는 만렙인가?");
Debug.Log(isFullLevel); //false를 출력
변수는 선언 -> 초기화 -> 호출로 이루어진다. 이때 선언과 초기화는 동시에 하기도하고 따로 하기도한다.
(위의 예시는 동시에 진행한 경우이다)
2. 배열
string[] monsters = {"슬라임", "사막뱀", "악마"};
Debug.Log("맵에 존재하는 몬스터");
Debug.Log(monsters[0]);
Debug.Log(monsters[1]);
Debug.Log(monsters[2]);
위는 monsters라는 이름으로 string(문자열형) 배열을 만든 것이고, { }를 이용해 배열 안에 몬스터의 이름을 넣어두었다.
그리고 monsters[]배열의 인덱스를 사용하여 안에 들어있는 몬스터의 이름을 출력하였다.
이때, 배열의 시작은 0부터이다.
int[] monsterLevel = new int[3];
monsterLevel[0] = 1;
monsterLevel[1] = 6;
monsterLevel[2] = 20;
Debug.Log(monsterLevel[0]) //1을 출력
Debug.Log(monsterLevel[1]) //6을 출력
Debug.Log(monsterLevel[2]) //20을 출력
이번에는 monsterLevel이라는 이름으로 int형 배열을 만들고 3이라는 크기를 지정해주었다.
그리고 이후에 각 인덱스를 이용해여 몬스터의 레벨을 지정해주었다.
3. List
: 기능이 추가된 가변형 그룹 변수
<>안에 원하는 데이터 타입을 작성해야한다. 아래는 string을 적어 string형 리스트로 만들어주었다.
따로 길이를 지정하지않아도 리스트안에 들어있는 요소만큼의 길이를 자동으로 만들어낸다.
List<string> items = new Lest<string>();
items.Add("생명물약30");
items.Add("마나물약30");
Debug.Log("가지고 있는 아이템");
Debug.Log(items[0]); //생명물약30을 출력
Debug.Log(items[1]); //마나물약30을 출력
List<string> items = new Lest<string>();
items.Add("생명물약30");
items.Add("마나물약30");
Debug.Log("가지고 있는 아이템");
Debug.Log(items[0]); //생명물약30을 출력
Debug.Log(items[1]); //마나물약30을 출력
items.RemoveAt(0); //0번째 인덱스에 해당하는 요소를 삭제 -> "생명물약30"을 삭제
이때 RemoveAt()이라는 기능을 통해 0번째 인덱스를 삭제하였다. 그러면 items리스트의 요소들은 한 칸씩 땡겨져서 items[0]은 마나물약30이 된다. 그렇다면 Debug.Log(items[0]);은 마나물약30이 출력되는데 Debug.Log(items[1]);은 아무런 요소가 없기때문에 Argument Out of Range라는 오류를 출력한다.
4. 연산자
연산자는 사칙연산(+, -, *, /) 모두가 작동한다.
그리고 나머지 연산자라는 것이 있는데 %를 사용하고, 특정 숫자로 나누고 남은 나머지 숫자를 표현하기 위해 사용한다.
3%13의 경우 몫이4이고 나머지가 1이므로 1을 나타낸다.
=은 대입 연산자이고, 같음을 비교할 때에는 ==를 사용한다.
부등호
>, >=, <, <= 사용가능
논리 연산자
&& : 그리고
|| : 또는
삼항연산자
? A : B : Ture일 때 A를 출력, False이면 B를 출력
string condition = isBadCondition ? "나쁨" : "좋음" ;
5. 키워드
프로그래밍 언어를 구성하는 특별한 단어들
int float string bool new List 등 위에서 배운 역할이 있는 단어들은 모두 키워드이고 코드에서 작성 시 다른 색으로 표시됩니다.
6. 조건문
if문
if(condition == "나쁨") {
Debug.Log("플레이어 상태가 나쁘니 아이템을 사용하세요.");
}
else {
Debug.Log("플레이어 상태가 좋습니다.");
}
if(isBadCondition && items[0] == "생명물약30") {
items.RemoveAt(0);
health += 30;
Debug.Log("생명포션30을 사용하였습니다.");
}
else if (isBadCondition && items[0] == "마나물약30") {
items.RemoveAt(0);
mana += 30;
Debug.Log("마나포션30을 사용하였습니다.)
}
switch, case문
switch(monster[1]) {
case "슬라임":
case "사막뱀":
Debug.Log("소형 몬스터가 출현!");
break;
case "악마":
Debug.Log("중형 몬스터가 출현!");
break;
case "골렘":
Debug.Log("대형 몬스터가 출현!");
break;
default:
Debug.Log("??? 몬스터가 출현!");
break;
}
7. 반복문
switch, case문
while (조건) {
처리문
}
사용예시
while(health > 0) {
health--;
if(health > 0)
Debug.Log(독 데미지를 입었습니다. " + health);
else {
Debug.Log("사망하였습니다.");
breka;
}
}
for문
for(int count=0; count<10; count++) {
health++;
Debug.Log("붕대로 치료 중... " + health);
}
foreach문
: for의 그룹형변수 탐색 특화된 반복문
foreach(string monster in monsters) {
Debug.Log("이 지역에 있는 몬스터 : " + monster);
}
8. 함수(메소드)
반환할 데이터 타입 함수명 (받을 매개변수 타입) { }
int Heal(int health) {
health += 10;
Debug.Log("힐을 받았습니다. " + health);
return health;
}
전역변수 : 함수 바깥에 선언된 변수
9. Class
public class Actor {
public int id;
public string name;
public string tilte;
public string weapon;
public float strength;
public int level;
public string Talk(){
return "대화를 걸었습니다.";
}
public string hasweapon(){
retrun weapon;
}
public void LevelUp() {
level = level + 1;
}
}
Actor player = new Actor(); //이 클래스를 하나의 변수로 만듦
player.id = 0;
player.name = "나법사";
player.title = "현명한";
(중략)
Debug.Log(player.Talk());
Debug.Log(player.HasWeapon());
player.LevelUp();
Debug.Log(player.name + "의 레벨은 " + player.level + " 입니다.");
인스턴스(화) : 정의된 클래스를 변수 초기화로 실체화

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!