본문 바로가기
Unity, APM TIL

07.10.2024 TIL (게임개발 종합반 2주차 노트)

by 아네린이 2024. 7. 10.

Unity 파일이 어디에 저장되고 있을까?

  • 로컬 디스크 -> 사용자 -> Unity 파일 존재 함

GameManager

게임의 전체적인 진행을 관리해 주는 곳 

 

Unity 용어

떨어지는 요소 -> 중력을 준다 = Rigidbody

Component 에서 Rigidbody

 

부딪힌다 -> 충돌을 준다 = Colider

Component에서 요소의 모양에 따라 Box Colider / Circle Colider
*주의: 부딪히는 모든 요소에 효과를 줘야 함 (네모랑 동그라미가 부딪히면 둘 다 효과 넣기)

 


C# 용어
박스를 다양한 위치에서 랜덤 생성 = Random

float x = Random.Range(-3.0f, 3.0f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector2(x, y);
  • float x/ float y -> x/y의 값에 넣다
  • Random -> 랜덤 값
  • Range -> x/y에 원하는 범위를 넣다
  • Transform의 Position 값의 x,y 값을 내가 지정한 범위내에서 랜덤하게 생성해줘

 

박스를 다양한 사이즈로 랜덤 생성 = Random

float x = Random.Range(-3.0f, 3.0f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector2(x, y);

float size = Random.Range(0.5f, 1.5f);
transform.localScale = new Vector2(size, size);
  • Transform의 localScale 값의 사이즈를 내가 지정한 범위내에서 랜덤하게 생성해줘

 

반복적으로 무언가를 실행시키는 함수 = MonoBehaviour

public class GameManager : MonoBehaviour
{
    public GameObject square;

    void Start()
    {
        InvokeRepeating("MakeSquare", 0f, 1f);
    }

    // Update is called once per frame
    void Update()
    {

    }
    
    void MakeSquare()
    {
        Instantiate(square);
    }
}

 

InvokeRepeating("MakeSquare", 0f, 1f);

  • MakeSquare을 호출해줘
  • 0초, 즉시 호출해줘
  • 1초마다 MakeSquare을 호출해줘

 

void MakeSquare()

{

Instantiate(square);

}

  • MakeSquare가 호출될 때마다 'square'객체를 인스턴스화 해서 새로운 객체를 생성해줘

 

시간이 흐르는 기능 = Time.deltaTime

public class GameManager : MonoBehaviour
{
    public GameObject square;

    float time = 0.0f;

    void Start()
    {
        InvokeRepeating("MakeSquare", 0f, 1f);
    }

    // Update is called once per frame
    void Update()
    {
        time += Time.deltaTime;
    }
    
    void MakeSquare()
    {
        Instantiate(square);
    }
}

 

  • 시간은 0초에서부터 더해질거야.

 

싱글톤이란?

  • 너는 딱 하나야! 라고 할 수 있게 세팅해두는 것
  • 그래야 다른데서 나를 부를 수 있음

 

Instance == null 이란?

  • null은 비어있다는 뜻
  • 변수는 데이터/값을 담아 놓는 박스
  • 이 변수(박스)가 비어 있을 때는 Instance == this를 해주겠다는 뜻
  • 박스가 널널~하다

 

충돌하는 로직 검출 OnCollisionEnter

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Player"))
    {
        GameManager.Instance.GameOver();
    }
}

 

  • 만약 "Player"랑 충돌하면 게임오버

 

Boolean = Bool값

  • 참/ 거짓 = true/ false

 

Scene을 다시 로드하는 기능 = Scenemanager

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

public class NewBehaviourScript : MonoBehaviour
{
    public void Retry()
    {
        SceneManager.LoadScene("MainScene");
    }
}

 

데이터를 보관하는 방법 :PlayerPrefs

 

 

 

 

오늘의 학습일지

오늘은 2주차를 끝냈다!

1주차보다는 확실히 조금 눈에 익었고, C# 용어도 중간중간 얼추 비슷하게 맞추고! Unity에서 기능 활용하는것도 조금씩 기억을 하고 있다.

여전히 튜터님의 행동을 복제하는 수준으로 따라하고 있긴 하지만 하다보면 익숙해지지 않을까?

 

나만 어려운걸까.. 다른 수강생들도 어려운걸까?

수포자였던 나.. 사실 개포자(개발 포기자)인거 아닐까?ㅠㅠㅠ

 

이제 바로 수강생들의 생각인걸까.. 공감의 영역이 커지고 있다..

 

확실히 UXUI 공부 어려웠던거와는 차원이 다르다.

뭔가 영역이 전혀 다르달까.. 경의로운 영역이다.

가능할지는 모르겠지만 일단 해보자. 못먹어도 Go다.

 

Unity를 공부하며 마음을 먹기로 다짐했다!

1. 다 외우려고 하지말자! 나는 컴퓨터가 아니다! 인간이다!

2. 하다보면 익숙해진다! 꾸준히 하자!

3. 하나의 언어를 공부한다는 마음으로 꾸준히 하다보면 언젠간 되리라!

4. 포기하지 말자. 지금 포기하면 죽도 밥도 안된다. 죽이던 밥이던 리조또던 뭐라도 만들어보자.

 

내일은 3주차! 화이팅이다!