int 형과 float형 에서 사용할 수 있다
기본적으로 val 1~ val 2사이의 랜덤한 값을 추출할 때 사용한다.
int A = Random.Range(0, 10);
float F = Random.Range(0, 10.0f);
중요한 점
1. int값 = val 1 포함, val 2 미포함
-> 0포함, 10미포함, 0~10사이의 랜덤한 int 값
공부를 하던 중에,
GetComponent<SpriteRenderer>().color =
new Color(100 / 255f,
100 / 255f,
255 / 255f,
255 / 255f);
이런 코드를 봤다. 그러고 설명에는
이라고만 되어있었다.
뭔뜻인가 싶어 인터넷 검색!
찾아보니
color | color32 |
---|---|
빨강/초록/파랑/알파(투명도) | 빨강/초록/파랑/알파(투명도) |
0~1까지의 float값으로 색상을 나타냄 | 0~255까지의 int값으로 색상을 나타냄 |
4개의 float값을 사용하여 하나의 색상을 표현, 16바이트 크기의 메모리를 차지 | 4개의 8비트 정수(byte)값을 사용하여 하나의 색상을 표현, 4바이트 크기의 메모리를 차지 |
주 사용처 : 머티리얼(Material)과 같은 컴포넌트와 상호작용할 때 사용 | 주 사용처 : 2D 그래픽과 GUI 요소와 관련된 작업 |
게임 전체를 조율하는 오브젝트!
주로 점수 / 다시 시작 / 3번 째 다시 시작에 부스터 / 광고보기 등 의 작업을 처리
설계도(클래스)를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체, 인스턴스는 객체에 포함된다.
이미 만들어진 게임 오브젝트를 필요할 때마다 실시간으로 만든다는 의미
public GameObject Rain;
void Start()
{
InvokeRepeating("makeRain", 0, 0.5f);
}
void Update()
{
}
void makeRain()
{
Instantiate(Rain);
}
이런식으로 public으로 게임오브젝트를 열고, 그 안에 prefab을 넣는다
재사용을 더 효율적으로 하기위해 사용한다
복붙(duplicate)을 이용해서 할수있다만... 오브젝트가 10000개가 넘어가면 그게 가능할까...
이런식으로 prefab화 된 오브젝트는 파란색 육면체로 변한다.
-> prefab화 한다는 것은, 오브젝트를 Asset으로 만든다는 의미이기도 하다
Destroy, 말 그대로 파괴한다는 의미이다.
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Ground")
{
Destroy(gameObject);
}
}
위 코드처럼 서로 다른 두 오브젝트가 서로 충돌(collision)했을때, 원하는 오브젝트를 Destroy(제거)하도록 사용할 수 있다.
응용법은 무궁무진!
invoke함수는 말 그대로 딜레이를 주는 함수이다.
두 인자값을 받는데 하나는 method이고 다른 하나는 딜레이 시간이다.
-> 해당 method를 Time초 만큼의 딜레이를 준다
void Start()
{
Invoke("makeRain", 0);
}
invokeRepeat함수는 invoke + 반복이 추가된 함수이다.
세 인자값을 받는데, 첫 두 인자값은 invoke와 동일하고 세번째 인자값은 몇초마다 repeat을 할지 하면 된다.
-> 해당 method를 Time초 만큼의 딜레이 후, repeatRate초마다 반복해라
void Start()
{
InvokeRepeating("makeRain", 0, 0.05f);
}
어디서도 부를 수 있는 '하나'로 만들어주는 것
public static GamaManager I;
void Awake() //게임오브젝트가 실행될때 제일 먼저 1회 실행되는 함수
{
I = this;
}
위의 코드처럼, GameManager는 public+static으로 선언이 되어 다른스크립트나 다른 함수에서 GameManager안의 내용들을 불러와 사용할 수 있다.
예를들어, 커피숍이 있는데, 쿠폰은 딱 1장만 발행하고 카운터에 놔둬서 커피를 사는 모든손님이 한 쿠폰에만 도장을 찍는 원리이다.
조금 특별한 구문이다.
선언된 I가 this라니..
찾아보니,
I라는 변수에 현재 객체(인스턴스)를 할당하는 것을 의미합니다. 이렇게 함으로써 I 변수는 해당 클래스의 유일한 인스턴스를 참조하게 됩니다
라고 한다.
솔직히 뭔뜻인지 이해가 안된다..
즉, I 변수를 할당하고 this를 사용하게 되면, 싱글톤이 되는 원리이다.
this는
현재 인스턴스(객체)를 가리키는 특수한 키워드. 즉, 객체가 자기 자신을 참조하는 용도로 사용함.
//GameManager = 대통령
//I = 비서
public class GameManager : MonoBehaviour
{
public static GameManager I; // 비서 변수
void Awake()
{
I = this; // 비서는 자기 자신(게임 매니저/ 대통령)이에요!
}
// ... (다른 멤버 변수와 함수 정의)
}
위 코드 그대로, I라는 비서가 대통령 역할을 맡게 되는거다!
그리고 다른 사람이 대통령 역할을 못하도록 유일한 대통령을 비서가 맡게되는거다!
다시 돌아와서
객체가 자기자신을 가리키고 싶을 때 사용한다.
즉 이 상황에서
해당클래스 (ex GameManager)의 유일한 인스턴스(객체)를 변수 I에 할당하는것을 의미한다.
글 잘 봤습니다.