Unity/Unity(C#μ€κΈ)
μ΄λ²€νΈ
RainbowπCoder
2021. 12. 26. 12:11
728x90
μ΄λ²€νΈλ νλ μ΄μ΄κ° 'μμλ μλ¦Ό'μΌλ‘ μΈμ§νλ€.
μ± μμ νΉμ μΈ μ μ© μ§ν΅μ νκ° λμ¬μμ λ
λ²¨μ΄ μΈλ¦¬λ©΄ λ°κΈ°λ μ μ νΉμ μΈμ΄ μ ννλ€λ κ±Έ μ μ μκ³
νΉμ μΈμκ² λ¬΄μΈκ°κ° λ°μνμμ μ§μν μ μλ€.
μ΄λ²€νΈλ μ΄μ μ μ¬ν μλ¦¬λ‘ λμνλ€.
μ΄λ²€νΈ λ°μμ λν΄ μ€λΉλ₯Ό λ νκ³ μκ³ μ΄λ²€νΈκ° λ°μνλ©΄ κ·Έμ λ°λΌ μμ λ λμμ μννλ€.
λν μ΄λ²€νΈμ ν¨κ» κ΄λ ¨ μ 보λ₯Ό μ λ¬ν΄ μ΄λ€ μν©μ΄ λ°μνλμ§λ₯Ό μλ €μ€ μλ μλ€.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Eventsc : MonoBehaviour
{
//μ΄λ²€νΈλ μμμ μ¬μ©ν΄ ν΅μ μ ννμ μ΄λ²€νΈκ° λ°μνμ λ μ λ¬ν μ 보μ μ’
λ₯λ₯Ό μ μνλ€
//μμ λ©μλ μ μ
public delegate void ClickAction();
//μμ λ©μλ μκ·Έλμ²λ₯Ό μ¬μ©ν μ΄λ²€νΈ ν
(hook)
public static event ClickAction OnClicked;
//μ΄λ²€νΈλ₯Ό κΈ°λ€λ¦¬λ λ€λ₯Έ μ½λμ μ΄λ²€νΈλ₯Ό μ λ¬νκ³ μΆμΌλ©΄ μμμ μκ·Έλμ²λ‘ μ¬μ©ν΄ μ΄λ²€νΈλ₯Ό λ©μλμ²λΌ νΈμΆνλ©΄ λλ€
//μ΄λ²€νΈ μμ μ κΈ°λ€λ¦¬λ λμμ΄ μλ μν©μ λλΉν΄ μμμ νΈμΆνκΈ° μ μ nullμΈμ§ νμΈνλ κ³Όμ μ΄ νμνλ€
private void Start()
{
//ν¨μ OnClickedμ μ΄λ²€νΈκ° λ°μνμ λ μλ¦Όμ λ°μ ν¨μλ₯Ό μ§μ νκ³ μ΄λ²€νΈκ° λ°μνλ©΄ μ€ννλ€.
OnClicked += Events_OnClicked;
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
//μμ λμμ΄ μλ€λ©΄ μ΄λ²€νΈ μμμ λ°μμν¨λ€.
if(OnClicked != null)
{
OnClicked();
}
}
if (Input.GetKeyDown(KeyCode.W))
{
//μμ λμμ΄ μλ€λ©΄ μ΄λ²€νΈ μμμ λ°μμν¨λ€.
if (OnClicked != null)
{
//μ΄λ²€νΈ μμ μ λ°μ§ μκ² νλ€
//μ΄λ²€νΈ μμ μ΄ λ μ΄μ νμμΉ μμΌλ©΄ μμ λμμμ μ κ±°ν΄ μ 리ν΄μ£Όλ©΄ μ’λ€.
OnClicked -= Events_OnClicked;
}
}
}
//μμ λμ λ©μλ
void Events_OnClicked()
{
Debug.Log("ν΄λ¦νμ΅λλ€");
}
private void OnDestroy()
{
//μ΄λ²€νΈ μμ μ λ°μ§ μκ² νλ€
OnClicked -= Events_OnClicked;
}
}
μ΄μ²λΌ μ΄λ²€νΈλ₯Ό νμ©νλ©΄ μ μ΄ μ£½μ λλ§λ€ μ΄λ²€νΈλ₯Ό λ°μμμΌμ μ μκ° μ¬λΌκ°κ² νλ λ± λ€μνκ² μμ©ν μ μλ€.
728x90