-
시작 화면에 배경색바꾸기 기능 추가/스파르타카드게임) 미니프로젝트 1주차)게임 개발기록 2024. 4. 16. 16:51
버튼을 눌렀을 때 랜덤으로 배경색이 변경 되는 것을 구현 한다.
스타트씬으로 가 버튼 오브젝트를 하나 생성 한다.
그리고 크기와 위치를 알맞게 조정 하고, 배경색바꾸기 라는 자막을 넣는다.
그리고 배경색을 바꾸게 해줄 스크립트를 하나 생성 해준다.
이름은 BackGroundChange 로 변경 해준다.
먼저 배경색을 바꿀 오브젝트를 가져와준다.
우린 카메라 백그라운드 색을 변경 했었으므로 카메라를 가져온다.
public camera BackGroundChange;
를 선언 해준다.
그리고 버튼이 눌려졌을 때 작동 될 함수를 만들어 준다.
public void BackGroundExchange()
{
float a = Random.Range(0f, 1f); float b = Random.Range(0f, 1f); float c = Random.Range(0f, 1f); float d = Random.Range(0f, 1f); backGround.backgroundColor = new Color(a, b, c, d);
}
라는 함수를 작성 해준다.
버튼이 눌러질 때마다 랜덤한 값을 받고 그 값으로 색을 변경 하게 해준다.
컬러값은 0~1 소수 사이이므로 랜덤 값을 0 ~ 1로 설정 했다.
그리고 버튼 인스펙터로 가서 함수를 적용 시켜준다.
먼저 스크립트를 버튼에 컴포넌트 추가 해주고, OnClick 설정을 해주면 끝이다. OnClick에 BackGroundExchange 함수를 적용 시켜주자.
적용 된 기능의 모습
============================
4월 17일
애로사항 발견
→ 메인씬으로 넘어갈 경우에 배경색이 다시 원래의 색으로 변하는 문제
원인 : 씬은 바뀔 때 모든 오브젝트가 파괴 되고, 다시 생성 됨.
해결방법 : 배경색을 카메라로 설정 했으므로 카메라가 파괴 되지 않는 코드를 추가.
그렇게 되면 색상이 바뀐 카메라는 파괴 되지 않고 씬을 넘어가게 됨.
메인씬에 있는 카메라는 스타트씬에 있는 카메라와 만날 경우에 파괴 시키게 만드는 코드 추가.
카메라가 2개 있으면 안 되는 이유다.
설명
우린 카드게임을 제작 하면서 오디오매니저를 작성 할 때 사용 되고 있는 오브젝트는 파괴 되지 않고 똑같은 것을 만나게 할 때 파괴 시키는 것을 구현 하기 위해 작성 했던 것이 있다.
스크립트를 만들고 싱글톤화를 이용해서 만든 것인데 그걸 복습 해보자.(오디오매니저)
public static 클래스이름 instance;
void awake()
{
if( instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
destroy(gameObject);
}
를 선언 해 싱글톤화를 만들어 주면서 싱글톤화가 될 때 실행 되고 있는 오브젝트는 파괴 되지 않으므로 시작씬에 있는 카메라는 파괴가 되지 않고, 다음 씬으로 넘어가서 awake가 다시 실행이 될 때 if 조건문이 flase이므로 else가 실행 되면서 카메라를 파괴 시킬 것이다.
그러면 우리는 색이 변경 된 카메라는 남기게 하고, 씬이 넘어갈 때마다 다른 카메라는 파괴 시키게 될 것이다.
기능이 제대로 구현 된 모습
하지만 큰 프로젝트일 경우에 스타트씬에서만 메인씬으로 가는 것이 아니라 다른 곳에서 메인씬으로 가는 경우도 있을 것이다. 그래서 일반적으로 하는 방법이 또 있다.
게임매니저유형의 오브젝트를 만들고 싱글톤으로 만들고 파괴 되지 않게 한 다음에 계속 남아있게 한다. 그러면 데이터는 남을 것이고 각각의 씬이나 스테이지마다 스테이지 매니저, 씬매니저 등으로 게임매니저의 정보를 활용 하는 방법으로도 코드구성을 할 수 있을 것이다.
'게임 개발기록' 카테고리의 다른 글
visual Studio로 BMI 계산기를 만들어 보자. (팀 스파르타 (0) 2024.04.22 visual Studo로 화씨 온도 계산기를 만들어 보자.( 팀 스파르타 (0) 2024.04.22 카드 두 번 연속으로 맞추면 시간 추가 기능/스파르타카드게임) 미니프로젝트 1주차) (0) 2024.04.16 카드 뒤집힌 횟수 카드 뒷면에 표시하기/스파르타캠프) 미니프로젝트1주차) (0) 2024.04.16 게임이 끝날 때 매칭 시도 한 횟수 표시하기/스파르타카드게임) 미니프로젝트 1주차) (0) 2024.04.16