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
'IT이야기 > unity,c#' 카테고리의 다른 글
unity 2019버전 모바일 화면 회전 설정 (0) | 2020.06.15 |
---|---|
unity] 오브젝트 피격제어 예제! (0) | 2020.04.03 |
unity] 목표물 방향으로 바라보면서 따라가기 followTarget, LootAt Target (0) | 2020.02.07 |
유니티] 오브잭트 랜덤 배치 예제 (0) | 2020.02.06 |
unity] 가로 세로 변경하기 (0) | 2019.11.15 |