본문 바로가기

IT이야기/unity,c#

C# unity게임만들기 기초 문법(수정예정)

해당 내용을 초보자들도 쉽게 볼 수 있도록

 

추가 수정할 예정임.

 

//1.변수
int  level = 5;
float  strength = 15.5f; //소수점을 쓸땐 뒤에 f를 붙인다 
string platyerName = "나검사";
bool isFullLevel = true;


선언 -> 초기화 -> 호출 

//2. 그룹형 변수

string[] monsters = {"슬라임","사막뱀","악마"}; //배열
int[] monsterLevel = new int[3];
monsterLevel[0] = 1;
monsterLevel[1] = 2;
monsterLevel[2] = 3;

Debug.Log(monsters[0]);


List items = new List();

items.Add("포션10");
items.Add("포션2 20");

Debug.Log(items[0]);
Debug.Log(items[1]);

items.RemoveAt(0);

//3. 연산자

int exp = 1500;

exp = 1500 +320;
exp = exp -10;
level = exp /300;
strength = level * 3.1f;

int nextExp = 300 - (exp % 300);

string title = "전설의";

Debug.Log(title + " " + playerName );

int fullLevel = 99;
isFullLevel = level == fullLevel;

3항연산자

? A:B: true일떄 A, false일떄 b출력

bool isisBadCondition == health <= 50 || mana <=20;

string condition = isBadCondition ? "나쁨" : "좋음";


//4. 키워드:프로그래밍 언어를 구성하는 특별한 단어
int float string bool new List 등

변수명 or 변수값으로 사용 불가

//5. 조건문

if(condition == "나쁨") {
   debug.log("그냥 흔한 조건문임");
}

health += 30; health에 30을 추가 = health = health +30과 같음

switch(monster[1]){
   case "슬라임":
   case "사막뱀":
   debug.log("소형");     
   break;
   case "악마":
   debug.log("소형");     
    break;
   case "골렘":
   debug.log("소형");     
   break;
  default:  //모든 case에 해당 안된다면 실행함 
    debug.log("??? 몬스터 출현");     
   break;
}


//6. 반복문

while(health > 0){
    health--; 
   debug.log ("독댐" )
 
}

foreach(string monster in monsters){
   debug.log("몬스터 " + monster);
}

//7. 함수(메소드) 

int Heal(int currentHealth)
{   
    health += 10;
    debug.log("힐을 받았습니다." + currentHealth);
   return currentHealth);
}

함수쓰는법

health = Heal(health); //매개변수

void:바노한 데이터가 없는 함수 타입
void heal(){
   health +=10;
   debug.log("힐받음"+health);
}


for(int index=0; index< monsters.Lengtn; index++){  //몬스터라는 변수의 배열 수만큼 반복함
    Debug.Log("용사는 " + monsters[index]+"에게"+Battle(monsterLevel[index]));//함수에 값을 넣고 결과를 받음
}

string Battle(int monsterLevel){
   string result;
   if(level >= monsterLevel)
     result = "이김";
   else
     result = "짐";

  return result;



}

//8. 클레스 하나의 사물(오브젝트)와 대응하는 로직
Actor player = new Actor(); //클레스를 하나의 변수로 만듬 =인스턴스화:정의된 클래스를 변수 초기화로 실체화함
player 

actor 스크립트 생성후
public class actor{
private int id;  //private:외부 클래스에 비공개로 설정하는 접근자
             public int id;  //외부클래스에 공개로 설정하는 접근자( 클래스의 변수를 사용 가능)
맴버 함수도 동일하다.

string Talk(){

}

}

오브젝트 라이프 사이클

      활성화
초기화-> 물리 게->임로직 ->해체
                   프레임
  
void Awake(){
   기본 준비 함수
}
void OnEnable()
{
   게임 오브젝트가 활성화 되었을때 실행함
}

void Start(){
   실행할때 시작되는 함수
}

void FixedUpdate(){
  물리연산 영역. 주기적으로 cpu를 사용하여 반복함 초당 50회 호출
}


void Update(){
   60프레임으로 반복함 
}

void LateUpdate(){
   모든 업데이트 끝난 후 실행함.

}
void OnDisable(){
   오브잭트 비활성화시 실행
}
void OnDestory(){
    해제(오브젝트가 삭제될때 실행됨)
}




void Update()
{
     if(Input.anyKeyDown)
        Debug.Log("아무키나 눌럿을때");
if(Input.anyKey)
        Debug.Log("아무키나 누르고 있습니다.");
if(Input.GetKeyDown(KeyCode.Return)) //return = enter임 Escape = esc
        Debug.Log("엔터키 눌럿을때");
if(Input.GetKeyDown(KeyCode.LeftArrow)
        Debug.Log("왼쪽 눌럿을때");
if(Input.GetKeyup(KeyCode.RightArrow))
        Debug.Log("오른쪽 이동을 멈추었습니다");
GetMouseButtonDown(0)  // 0 왼쪽 1 오른쪽
GetMouseButton(0)
GetMouseButtonup(0)
}
//Horizontal은 inputManager에서 설정한 키 네임
Input.GetAxis("Horizontal") 수평 수직 버튼 입력을 받으면 float

1. MoveTowards
 Vector target = new Vector3(8,1.5f,0);
void Update(){
transform.position = Vector3.MoveTowards(transform.position,target,1f) ;//등속이동(현재위치,목표위치,속도)
}

2.SmoothDamp

Vector3 velo = Vector3.zero;  Vector3.up * 50;// y축으로 50 대각선으로 이동함.; 보통 zero씀

transform.position = Vector3.SmoothDamp(transform.position,target,ref velo, 1f) ;//등속이동(현재위치,목표위치,참조속도,속도)



3. Lerp(선형 보간)

transform.position = Vector3.Lerp(transform.position,target,0.05f) ;//(현재위치,목표위치,속도) 값을 적게줄수록 느리게 움직임

4. Slerp(구면 보간 호를 그리며 이동)

transform.position = Vector3.Slerp(transform.position,target,0.05f) ;//(현재위치,목표위치,속도) 값을 적게줄수록 느리게 움직임


5.Dleta Time
 Vector3 vec = new Vector3