반응형
Notice
Recent Posts
Recent Comments
Link
안 쓰던 블로그
unity 스크립트로 이루어진 배열 만들기(Make an array of scripts) 본문
반응형
방금 알게 된 사실 기록
박스 객체 6개를 관리하는 BoxManager.cs가 있음
근데 각 박스마다 박스 매니저를 만들고 싶진 않고, GameManager에서 BoxManager 6개를 배열로 만들고 싶다
일반 C# 프로그램을 생각해서 짠다면 이렇게 됨
public class GameManager : MonoBehaviour
{
public BoxManager[] bm; //박스 매니저
void Start()
{
bm = new BoxManager[6]; //박스 6개로 초기화
for(int i = 0; i < 6; i++)
{
bm[i] = new BoxManager();
bm[i].me = i + 1;
}
}
}
하지만 유니티에서는 이러면 안 됨
아름다운 경고문 목록을 보게 될 것이다
왜이러나 찾아봤더니, BoxManager는 각 Box객체에 붙어야하기 때문에 MonoBehaviour를 상속 받고 있는데
MonoBehaviour 클래스를 상속한 클래스는 new연산자로 인스턴스화 할 수 없음
왜냐하면 new로 MonoBehaviour클래스를 오브젝트로 생성하면
게임 실행 시 이것저것 초기화하고 게임 오브젝트에 추가하는 과정을 전부 생까고 먼저 만들어버리기 때문에 제대로 동작하지 않기 때문
그러면 어떻게 하면 되나?
여러가지 방법이 있지만 간단하게 이렇게만 바꿔주면 되다
public class GameManager : MonoBehaviour
{
public BoxManager[] bm; //박스 매니저
void Start()
{
bm = new BoxManager[6]; //박스 6개로 초기화
for(int i = 0; i < 6; i++)
{
bm[i] = GetComponent<BoxManager>();
bm[i].me = i + 1;
}
}
}
깔-끔
반응형
'유니티 > 개발' 카테고리의 다른 글
C# Replace 쓸 때 은근히 자주 하는 실수 (0) | 2020.02.28 |
---|---|
unity 스크립트에서 mp3 파일 불러오기, 재생하기(Resources.Load<AudioClip>) (0) | 2020.02.28 |
unity csv파일 유니티로 불러오기(StreamReader 사용)-유니티 csv파일 형식으로 스테이지 만들기 (4) | 2020.02.11 |
unity 슈팅게임 총알 5개 한 번에 쏘는 방법(GetComponentsInChildren) (0) | 2020.02.04 |
unity 변수/함수/오브젝트 다른 씬에서 접근, 공유하기(DontDestroyOnLoad) (0) | 2020.02.02 |
Comments