콘텐츠응용_코루틴(with싱글턴)

Heejin Jo·2021년 9월 19일
0

public class hitManager : MonoBehaviour
{
    // 태어날 때 imageHit이 보이지 않게 하고 싶다.
    // 적이 플레이어를 공격하면 그 때 imageHit 이 나오도록!


    //그러기 위해서 속성으로 imageHit가 있도록 해야겠쥬?
    public GameObject imageHit;

    void Start()
    {
        //태어날 때 imageHit이 안 보이게 하려면 start에서 안보이게 해줘야겠쥬?
        imageHit.SetActive(false); //this.imageHit~ 인데 this생략 
    }


    // 1. 적이 플레이어를 공격하면(적이 나를 호출함)
    // 2. imageHit이 나옴(기능)
    public void Hit()
    {
        //깜빡거리고 싶다
        //1. imageHit를 보이게 한다
        //2. 0.1초 후에
        //3. imageHit를 안 보이게 하고 싶다

        //if(hitted)
        //{
        //    imageHit.SetActive(True);
        //    Time.deltaTime + 0.01;
        //    imageHit.SetActive(false);
        //}

        //코루틴 필요

    }

}

이제 다시 코루틴 형식에 맞춰서 imagehitManager 스크립트를 수정해주면

public void Hit()
    {
        //깜빡거리고 싶다.
        StartCoroutine("leHit");
    }

    IEnumerator leHit() //빨간줄 뜨는 이유는 yield없어서
    {
        //1. imageHit를 보이게 하자
        imageHit.SetActive(true);
        //2. 0.1초 후에
        yield return new WaitForSeconds(0.1f);
        //3. imageHit를 안 보이게 하고 싶다
        imageHit.SetActive(false);
    }
    private void Update()
    {
        if(Input.GetButtonDown("Jump"))
        {
            Hit();
        }
    }

이렇게 한 뒤 enemy에서 불러줘야 에너미가 때렸을 때 이게 호출이 될거임
그 문법은

    //공격성공
   // 플레이어를 공격하고
   //target.AddDamage();
   //hitManager의 hit함수를 호출하고 싶다.
   hitManager hm = GameObject.Find("hitManager");
   hm.Hit();

gun에서도 마찬가지지만 다른 함수의 컴포넌트를 호출하는 경우에는 다 위와 같이 쓴다

근데 find를 쓰는건? 안 좋음 그.래.서! 여기서 다시 싱글턴 패턴이 나옴

메모리 구조

profile
core를 기르자

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN