자바랑 비슷해서 그냥 당연한건 안 적음
그리고 유니티 라이프사이클은 잘 알아두시는 게 좋을 것 같습니다
특히 어느함수에 무엇을 코딩해야하는지 모른다면 나중에 막막하실 것 같네요
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
초기화
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("플레이어 데이터를 해제하였습니다.");
}
}
'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 |