[Emission 스크립트로 변경하기]
[본문]
material의 emission에 접근하여 색상을 변화하는 방법은 다음과 같다 .
_skinMaterial = GetComponent<Renderer>().material;
_skinMaterial.EnableKeyword("_EMISSION"); //아래 메서드를 사용하기 위해서는 초기화단계에서 필요함
_skinMaterial.SetColor("_EmissionColor", Color.black);
[Emission 스크립트로 루프하여 변경하기]
[본문]
깜빡이는 듯한 효과를 주고자 한다 .
[Header("목표색상")]
[SerializeField]Color TargetColor;
[Header("깜빡이는 시간")]
[SerializeField] float _blinkTime = 1f;
[Header("색 변화시 딜레이 시간")]
[SerializeField] float _delayTimeSec = 0.1f;
WaitForSeconds _delayTime;
IEnumerator IESkinBlink()
{
float leftTime = _blinkTime;
float delaySec= _delayTimeSec;
_delayTime = new WaitForSeconds(_delayTimeSec);
yield return null;
while (true)
{
_skinMaterial.SetColor("_EmissionColor", GetColor(leftTime));
leftTime -= delaySec;
//루프를 위한 처리
if (leftTime <= 0 || leftTime > _blinkTime)
delaySec = -delaySec;
yield return _delayTime;
}
}
public Color GetColor(float leftTime)
{
//Lerp를 통해 값을 전달 . 0에 가깝다면 앞쪽컬러, 1에 가깝다면 뒤쪽 컬러를 반환한다
return Color.Lerp(Color.black, TargetColor, (_blinkTime - leftTime) / _blinkTime);
}
[출처]
Terresqual blog -Getting your emission maps to work in Unity