그려지는 순서 즉 Renderer Queue 에 접근하기
인터넷에 찾다찾다 transform.renderer.material.rendererqueue 가 안되서 빡친 그대들을 위해
오브젝트 자기 자신의 Mesh Renderer 을 GetComponent 로 받아온다.
이제 이것을 통해 접근이 가능하다. ㅠㅠ
ex) MeshRenderer rend;
rend = GetComponent<MeshRenderer>();
rend.material.renderQueue = 3500; // 기본값이 3000 3000넘어가면 더빨리그려짐 !
잘은 모르지만 대충 화면에 그려지는 작업을 렌더링 이라고 부른다고 알고있다. 그 렌더링의 순서를 더 빨리하면
빌어먹을 NGUI 때문에 내가 원하는게 안그려지는 일을 피할수있다는건데, 이놈의 RendererQueue 가 어디숨어있는지 알수가 있어야지 대체, 인터넷에서 찾은 것들은 다 똑같은 소리만 하는데 난 안된다고 그게 버젼이 높아서 5.4
어떤 특정 값을 범위 안에 묶어두기
mathf 안에 clamp 라는 함수가 존재한다. 이 clamp 를 통해서 가능하다.
이 clamp 함수의 반환값은 int 혹은 float 이며 인자는 ( 입력값 , 최소값, 최대값 ) 이다.
만약 내가 넘겨준 입력값이 최소보다 작다면 최소값을 반환해주고, 최대값보다 크다면 최대값을 반환해주고 정상적으로 사이에 있는 값이라면 원래값을 반환해주는 구조를 가지고 있다.
사실 if 문으로 구현가능하지만 귀찮기때문에
Scene 전환하기
File - Build Setting 에서 전환 하고자 하는 씬들을 추가해 놓고나서 스크립트 상에서
Application.LoadLevel("씬이름") 을 통하여 씬을 전환할수 있다.
게임 멈춰버리기!
Time.timeScale = float 인데, 0 이면 아예 멈추는 것이고 1이면 정상속도 이다.
중간중간 슬로우 모션으로 뭔가를 보여주거나 게임 오버당했을때 게임을 멈춰버리는 걸
이런식으로 구현 하는듯 하다!
오브젝트 끄기 혹은 켜기
그동안 gameObject 로 접근해서는 기껏 한다는 일이, transform 접근 하거나 등의 다리로 쓰는 것이 끝이었다.
하지만 이젠 아니다.
gameObject.SetActive( bool ) 을 통해서 컴퍼넌트 그 맨위에 있는 것을 끄거나 키거나 할수있다!
물론 true 면 켜지는거고 false 면 꺼지는 거다.
버튼
2D 마녀게임을 만드는 동안에는 NUGI 의 힘을 빌어 썻는데 아마 비슷할거다.
Box Collider 가 있어야 하고, OnClick 시의 오브젝트를 연결하고 해당 오브젝트의 어떤 값을 건드리거나
함수를 호출해 줄수가 있다.
Button Message 등등 이거저거 많으므로, 잘 찾아보고 쓰자
대망의 오디오 플레이
너무 간단한것...오디오 클립( MP3 파일도 그냥 가져다 넣으니 들어가더라... ) 을 컴퍼넌트에 추가하고
'Audio Listener' 을 추가해준다. 응...끝낫다. 다만 중간에 어떤 곳에서 음악을 바꿔야 할경우
Audio Source 를 GetComponent 로 받아온다음 클립을 바꿔주고 ( 물론 바꿔줄 대상이 뭔지 미리 알아야 겠지 ? 링크걸어 놔야겠지 ?? ) Play( ) 시켜주면 된다.....허무할정도로 쉽다.
씬이 전환되면 기존의 오브젝트들은 사라지지만....남기고 싶은것이 있다면
DontDestroyOnLoad ( 대상 ) 굉장히 직관적이다 로드할때 파괴하지 말란다 대상을 그렇다.
오디오 재생하던게 중간에 뚝끊기고 새로만드느니, 이미 만들어져 있던아이를 가져다 쓰는게 아무래도
좋지않겠는가? 그럴때 쓰는것이다.