오보에블로그
[Unity] 스크립트에서 버튼 눌리는 효과 주기 본문
728x90
상황
- 게임에서 AI 나 시범을 보여주는 기능을 만들려고할때
- 버튼을 누르는 이벤트 발생시 버튼이 눌리는 효과도 같이 나왔으면 좋겠다.
구현 방식
Button
컴포넌트의 사용 방식이tint color
일때를 기준으로 설명한다.- 현재 보이는 이미지의 색상은 기본 이미지색상과 현재 버튼의 상태에 따른 색상의 곱으로 현재 이미지의 색상을 표현된다.
- 아래의 첨부 이미지를 보면, 버튼 배치시에
Color
과Normal Color
모두 흰색이기 때문에 버튼을 누르지 않은 기본 상태에서는 첨부한 기본 이미지 색상의 모습으로 버튼이 보인다. - 따라서, 버튼이 눌리는 이벤트를 스크립트내에서 직접 호출할 때는 기본 이미지색상과 현재 버튼의 상태에 따른 색상의 곱으로 현재 이미지의 색상을 직접 표현한다.
코드
- 해당 코드는
Update()
문에서 3초마다 버튼이 눌리는 효과를 주는 코드이다. - 실질적인 기능을하는 부분은
clickedButton
부분이며,seconds
인자동안 버튼이 클릭된 상태 색상으로 변경된다.
public class TestButton : MonoBehaviour
{
[SerializeField]
GameObject button;
Button bt;
float prevTime, ElaspedTime;
void Start()
{
ElaspedTime = Time.deltaTime;
prevTime = Time.deltaTime;
bt = button.GetComponent<Button>();
}
void Update()
{
ElaspedTime += Time.deltaTime;
if (prevTime + 3.0f < ElaspedTime)
{
Debug.Log("clicked!");
StartCoroutine(clickedButton(0.3f));
prevTime = ElaspedTime;
}
}
IEnumerator clickedButton(float seconds)
{
Color originalColor = button.GetComponent<Image>().color;
button.GetComponent<Image>().color = originalColor * bt.colors.pressedColor;
yield return new WaitForSeconds(seconds);
button.GetComponent<Image>().color = originalColor;
}
}
728x90
'GameEngine & CG > Unity' 카테고리의 다른 글
[Unity] Script lifecycle flowchart (0) | 2022.02.28 |
---|---|
[Unity] WebGL Build 및 Publish 설정 (0) | 2022.02.12 |
[Unity] Unity와 sqlite 연동하기 (0) | 2022.01.21 |
[Unity] 쉐이더 내 텍스처 변경 (0) | 2021.12.12 |
[Unity] 스크립트에서 게임오브젝트 쉐이더 불러오기 (0) | 2021.12.10 |