어제부터 코딩 공부 시작한 휴학생인데...
class와 type, static의 정의를 잘 모르겠습니다.
클래스가 타입이 될 수 있나요?
C#기반으로 유니티를 공부하고 있는데 MusicPlayer.cs라는 파일의 코드를 보시면
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MusicPlayer : MonoBehaviour {
static MusicPlayer instance = null;
void Start () {
if(instance != null) {
Destroy(gameObject);
} else {
instance = this;
GameObject.DontDestroyOnLoad(gameObject);
}
}
}
인데...
게임 내에서 첫번째 씬의 음악(게임 오브젝트)에 들어가는 스크립트파일이고
게임을 플레이하고 다시 첫번째 씬으로 돌아왔을 때 같은 음악이 나오는걸 방지하려는것이 목적입니다
뭘 알려주셔야 할 지 답답해하실 것 같아 추려서 여쭤보자면
static MusicPlayer instance = null; 요 구문이랑..
instance = this; 요놈이 어떤 의미를 갖는지...
지금 위 코드에서 MusicPlayer가 위 스크립트 전체의 클래스이면서 동시에 타입의 형태로 instance라는 static변수를 선언하고 null이라는 값을 넣은 것 같은데
제가 아는 타입이라고 하면 int float string... 이랑 유니티에서 지원해주는 gameObject?같은게 전부라...
null도 무슨 의미인지 모르겠고 지금보니 거의 다 물어보는거같은데 ㅈㅅ... 저도 뭐라 풀어 말해야할지 잘 모르겠어요... 횡설수설
코딩 너무 어려워요 ㅠㅠ
싱글턴이구, static으로 인스턴스 1개만 만들어서 두고두고 접근하는 방식이에여
null은 아무것도 안가르킨다 라는의미고
그냥 형식상 처음에 null값으로 초기화하는거죠. instance = this로 초기화해주는거고
1번 초기화하고나면 , 다시 초기화 안되도록 instance != null 일때만 instance =this가 일어나네요.
GameObject.DontDestroyOnLoad(gameObject); 이 코드를 통해서 씬이 이동되도 계속 인스턴스가 유지되요
그렇게해서 전체적인 게임 흐름에 항상존재하는 인스턴스가 생기는거죠
싱글턴이라구.. 객체를 메모리상에 한 개만 두고 전역으로 접근하는 방식인데 자세한건 검색 ㄱㄱ - dc App
자세히 공부하고 싶으시면 c#의 싱글턴을 공부하세요
첫번째 댓글을 이해 몬하겠어요... 짧은 영어실력에 영어강의로 들어가며 하는지라 안 배운 개념인지 지나친 개념인지...
싱글턴에 대한 개념은 제가 검색해볼게요 감사합니다. 그런데 instance = this에서 this가 가리키는게 뭔가요?
this는 객체 자기자신의 포인터에요
이미 문법적으로 예약된 단어임 c# 클래스공부하시면 자세히배워요
아 정말 감사합니다 드디어 이해가 됐어요 ㅠㅠㅠ 감격