1
2
3
4
5
6
7
|
void Fade() {
for (float f = 1f; f >= 0; f -= 0.1f) {
Color c = renderer.material.color;
c.a = f;
renderer.material.color = c;
}
}
| cs |
업데이트는 매 프레임마다 호출하기 때문에 이게 너무 빨리 진행되버리는 것이다.
그래서 코루틴을 사용하면 이걸 어떤프레임에 멈췃다가 다시 시작하는 형식으로 좀더 느리게 실행을 할수가있다.
1
2
3
4
5
6
7
8
|
IEnumerator Fade() {
for (float f = 1f; f >= 0; f -= 0.1f) {
Color c = renderer.material.color;
c.a = f;
renderer.material.color = c;
yield return null;
}
}
| cs |
1
2
3
4
5
6
|
void Update() {
if (Input.GetKeyDown("f")) {
StartCoroutine("Fade");
}
}
| cs |
유니티에서는 yield 만 있다면 IEnumerator 를 굳이 쓰지않아도 자동으로 인식을
해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function Fade() {
for (var f = 1.0; f >= 0; f -= 0.1) {
var c = renderer.material.color;
c.a = f;
renderer.material.color = c;
yield;
}
}
function Update() {
if (Input.GetKeyDown("f")) {
Fade();
}
}
| cs |
만약에 이걸 더 느리게 반복하고 싶다면 waitforseconds를 사용 하면 된다.
1
2
3
4
5
6
7
8
9
|
IEnumerator Fade() {
for (float f = 1f; f >= 0; f -= 0.1f) {
Color c = renderer.material.color;
c.a = f;
renderer.material.color = c;
yield return new WaitForSeconds(.1f);
}
}
| cs |