감독 스크립트는 게임의 전체 상황을 파악해 UI를 갱신해주는 스크립트입니다!

 

똥에 맞으면 hp게이지의 UI를 갱신해주도록 하겠습니다.

 

 

 

감독 스크립트가 될 C# 스크립트를 하나 만들어줍니다.

 

GameDirector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//추가해주어야지 Image클래스를 사용가능
 
public class GameDirector : MonoBehaviour {
    GameObject hpGage;//hpGage 인스턴스를 담을 빈 박스
 
    // Use this for initialization
    void Start () {
        this.hpGage = GameObject.Find("hpGage"); 
        //hpGage의 모양을 바꾸어줄 것이기 때문에 인스턴스를 가져오는 것
    }
    
    // Update is called once per frame
    void Update () {
        
    }
 
    public void DecreaseHp()
    {
        this.hpGage.GetComponent<Image>().fillAmount -= 0.2f;
        //fillAmount값을 0.2f씩 감소시켜준다.
    }
}
 
cs

 

 

 체력 게이지를 줄여주는 DecreaseHp() 함수는

 

public 속성을 주어서 외부에서 호출가능하게 해주었습니다!!!

 

언제 호출될까요?

 

똥에 맞았을 때 호출이 될 것 입니다 ㅎㅎ

 

 

 

빈 오브젝트를 만들어서 감독 스크립트를 적용해주세요.

 

오브젝트 이름은 GameDirector

 

 

 

HP가 줄어든 것을 감독 스크립트에게 전달해보겠습니다.

 

캐릭터가 똥에 맞으면 똥 컨트롤러에서 감독 스크립트의 Decrease HP 메서드를 호출하는 부분을 만들겠습니다.

 

[Project]뷰의 [DongController]를 더블클릭해 스크립트를 수정하겠습니다.

 

충돌하는 부분만 수정해줍니다. DongController

1
2
3
4
5
6
7
8
if(d<r1+r2){
            //충돌하면 똥을 소멸시킨다.
            Destroy(gameObject);
 
            //감독 스크립트에 플레이어와 똥이 충돌했다고 전달한다.
            GameObject director = GameObject.Find("GameDirector");
            director.GetComponent<GameDirector>().DecreaseHp();
        }
cs

GameDirector 오브젝트에 있는 DecreaseHp 메소드를 호출하기 때문에

 

 Find 메소드를 사용해 GameDirector 오브젝트를 찾습니다.

 

 

 

게임을 실행해보겠습니다,..

 

 

 

 

 

참고도서 : 유니티5 교과서

+ Recent posts