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로 값을 초기화 했는데 이 경우 오류 로그도 안떠서 어떤 점이 문제인지 찾기 어렵다.
if(gameObject.activeSelf)
{
...내용
}
오브젝트가 현재 SetActive 상태인지 확인할 수 있는 함수이다 SetActive상태 라면 true, 아니라면 false를 반환한다.
if(gameObject.SetActive ==true) 로 활성화 상태인지 확인하려다가 알게되었다.
PlayerPrefs.SetInt가 메모리에 저장한다는 생각에 계속 변수 선언을 주로하는 곳에 선언하다가 빨간줄 에러가 떳다. 기억하자. PlayerPrefs는 결국 함수이고 unity의 구조체? 안에 들어가야 한다는것을