텍스트 컬러 변경

public Text timeTxt;

if(time >=20)
        {
            timeTxt.GetComponent<Text>().color = Color.red;
        }

시간이 20초 경과 했을때 GetComponent로 text내 color에 접근했다.color 컴포넌트에 접근하면 색을 변경할 수 있다.

처음엔 timeTxt.Color로 바로 게임오브젝트에서 색상을 변경하는 실수를 했다. 색상은 게임오브젝트엔 없고, Text 컴포넌트나 SpriteRenderer 컴포넌트에서 사용한다.

사운드 속도 변경

public class audioManager : MonoBehaviour
{
	public AudioSource audioSource;

	public void backMusicpitch()
    	{
        	audioSource.pitch = 1.4f; //속도 빠르게
    	}
}
public class gameManager : MonoBehaviour
{
	if(time >=20)//남은시간 10
	        {
            	timeTxt.GetComponent<Text>().color = Color.red;
            	audioManager.GetComponent<audioManager>().backMusicpitch();
        	}
}

10초 내외 시간초가 남았을 경우 긴박함을 주기 위해서 게임 속도를 증가하기로 했다.

audioManager.cs에서 backMusicpitch() 함수를 만들어 이 함수를 gameManager에서
호출한다. 이때 쓴 메소드는 audioSource.pitch()로 오디오 배율 증감할수 있다.

컬러 변경 정규화

public void isMatched()
{
	...생략
    
    firstCard.transform.Find("back").GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 0.5f, 1f);
    secondCard.transform.Find("back").GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 0.5f, 1f);
    

}

Color.red나, Color.black 같은 경우가 아닌 쨍한 색상 외에 변경하고 싶을때 컬러 변수를 생성해서 내가 직접 초기화 해줘야 한다.
color = new Color(f, f, f, f); 로 값은 0~1의 값을 넣어야 한다. 이것을 '정규화' 라고 한다.

나는 한동안 255f로 값을 초기화 했는데 이 경우 오류 로그도 안떠서 어떤 점이 문제인지 찾기 어렵다.

오브젝트 Active 확인

if(gameObject.activeSelf)
        {
			...내용
        }

오브젝트가 현재 SetActive 상태인지 확인할 수 있는 함수이다 SetActive상태 라면 true, 아니라면 false를 반환한다.

if(gameObject.SetActive ==true) 로 활성화 상태인지 확인하려다가 알게되었다.

스테이지 디자인

PlayerPrefs

PlayerPrefs.SetInt가 메모리에 저장한다는 생각에 계속 변수 선언을 주로하는 곳에 선언하다가 빨간줄 에러가 떳다. 기억하자. PlayerPrefs는 결국 함수이고 unity의 구조체? 안에 들어가야 한다는것을

profile
Unity 개발 위주로 정리합니다

0개의 댓글