본문 바로가기

GAME

[Unity]C#기초와 유니티LIFE CYCLE

728x90

자바랑 비슷해서 그냥 당연한건 안 적음

그리고 유니티 라이프사이클은 잘 알아두시는 게 좋을 것 같습니다 

특히 어느함수에 무엇을 코딩해야하는지 모른다면 나중에 막막하실 것 같네요 

 

1. C#기초 

- 변수

int :정수형

float : 숫자형 (맨 끝에 f를 붙여줘야함 )

string : 

bool : true/false 

// ex) bool

int level = 10;
int fullLvele = 99; 
int health = 100;
int mana = 100;

//다양한 연산자를 이용한 bool형 
bool isFullLevel = level == fullLevel; // true,false 이런식도 가능 
bool isEndTutorial = level > 10; 
bool isBadCondtion = health <= 50 & mana <=20; 

 

Debug.Log(""); // print문

 

- 그룹형 변수 

<배열> 

데이터형[] 배열이름 = {요소들}; => string[] heros = {"batman","superman","wonderwoman"};

데이터형[] 배열이름 = new 데이터형[배열크기]; => int herolevel = new int[3];

 

-> Debug.Log(hero[0]); // batman

-> herolevel[0] = 2;

 

<리스트>

List<데이터 형> 리스트이름 = new List<데이터형>();

함수

리스트이름.Add("넣을 데이터");

리스트이름.RemoveAt(index_num);

 

- 연산자

? A : B 

?가 true이면 A, false이면 B

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

/*
	isBadCondition 이 true이면,
    					condition = "나쁨"
 	isBadCondition 이 false이면,
    					condition = "좋음"                       
*/

 

- 반복문

foreach : for의 그룹형변수 탐색에 특화되어있음

foreach(string hero in heros){
	Debug.Log("히어로 목록 : "+ hero);
}

heros 배열을 끝까지 탐색하면서 하나하나를 hero에 대입

for(int i=0; i<heros.Length; i++){
	
    string hero = heros[i];
    Debug.Log("히어로 목록 : "+ hero);
    //Debug.Log("히어로 목록 : "+ heros[i]);
}

이거랑 같음

 

- 클래스

하나의 사물(오브젝트)와 대응하는 로직 

오브젝트 하나당 하나의 스크립트를 주어서 생각

메인 void Start()함수(메인함수 같은거임)안에 클래스를 인스턴스로 정의해서 사용

 

더보기

접근자

private : 외부 클래스에 비공개로 설정하는 접근자

public : 외부 클래스에 공개로 설정하는 접근자

 

<상속>

public class Player : Actor{

	public string move(){
    	return "플레이어가 움직인다."
    }

}

Player 클래스가 Actor 클래스를 상속받는다 

 

 

public class NewBehaviorScript : MonoBehavior
{

	
    void Start(){}
    


}

기본스크립트는 

MonoBehavoir라는 유니티 게임 오브젝트 클래스의 상속을 받음 

 

 

2. Life Cycle 

유튜브 - 골드메탈 [유니티 기초 - B5] 오브젝트 라이프사이클 그림

초기화

Awake() -> Start() 

활성화

OnEnabel()

물리/게임 로직

FixedUpdate() -> Update() -> LastUpdate() 

비활성화

OnDisable()

종료

OnDestory()

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    //1. 초기화 영역


    //(1)Awake함수 : 게임 오브젝트를 생성할 때 최초로 실행되는 함수(1회만 실행)
    private void Awake(){ 
        
        Debug.Log("플레이어 데이터가 준비되었습니다.");

    }


    //(2)Start 함수 : Update 시작 직전에 최초로 실행되는 함수 (1회만 실행)
    void Start() 
    {
        Debug.Log("사냥 장비를 챙겼습니다.");
        
    }


    //+활성화 함수 : 켜고 끌때마다 활성,비활성이 가능 (오브젝트의 스크립트를 켬) 
    void OnEnable(){
        Debug.Log("플레이어 로그인이 확인되었습니다.");
    }


    //2. Update:1초에 여러번 시행되는 함수 

    //(1)FixedUpdate : 유니티 엔진이 물리 연산을 하기 전에 실행되는 update함수 ,컴퓨터 사양과는 영향없이 고정적으로 호출됨
    // cpu가 많이 사용되므로 물리 연산과 관련된 것만 넣음 (주로 1초에 50회)
    void FixedUpdate(){
        Debug.Log("이동");
    }

    //(2)Update : 게임 로직 업데이트 물리 연산에 관련된 로직을 제외하고 나머지 계속해서 변화하는 로직을 사용
    // 환경에 따라 실행주기가 변할 수 있음 ? 주로 60프레임?
    void Update(){
        Debug.Log("몬스터 사냥!!");
    }

    //(3)LateUpdate : 모든 업데이트가 끝난 후 실행되는 함수
    // 캐릭터를 따라가는 카메라나 로직의 후처리를 담당
    void LateUpdate(){
        Debug.Log("경험치 획득.");
    }


    //+ 비활성화 함수 : 게임 오브젝트가 비활성화, 삭제될 때 실행되는 함수(오브젝트의 스크립트를 끔)
    void OnDisable(){
        Debug.Log("플레이어가 로그아웃 했습니다.");
    }


    //3. 종료

    //(1) OnDestroy : 게임 오브젝트 삭제 ,Awake와 반대되는 기능이라고 생각할 수 있음
    //게임 오브젝트(Hierarchy 계층에서 오브젝트 삭제)삭제가 되면 실행되는 함수
    void OnDestroy(){
        Debug.Log("플레이어 데이터를 해제하였습니다.");
    }

}

 

728x90

'GAME' 카테고리의 다른 글

[Unity]기초 3D게임 만들기-1  (4) 2020.07.30
[Unity]UI Setting  (0) 2020.07.17
[Unity]오브젝트 컨트롤  (0) 2020.07.17
[Unity]입력처리와 오브젝트 이동  (0) 2020.07.15
[Unity]유니티 기초  (0) 2020.07.10