원본 글 : https://doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/player-ui-prefab



플레이어 이름과 체력값을 보여주는 UI만들기

생성하는 부분은 원본글을 따라 만들면 될 것.




UI 프리팹의 생성

1
2
3
4
5
6
7
8
9
if (PlayerUiPrefab!=null)
{
    GameObject _uiGo =  Instantiate(PlayerUiPrefab) as GameObject;
    _uiGo.SendMessage ("SetTarget"this, SendMessageOptions.RequireReceiver);
}
else
{
    Debug.LogWarning("<Color=Red><a>Missing</a></Color> PlayerUiPrefab reference on player Prefab.",this);
}
cs

PlayerManager의 Start()에 넣어 플레이어가 생성될때 UI도 같이 생성되게한다.

SendMessage()를 통해 SetTarget 함수를 실행함.

(https://docs.unity3d.com/ScriptReference/GameObject.SendMessage.html)




UI 캔버스로 Parenting

1
2
3
4
private void Awake()
{
    this.GetComponent<Transform>().SetParent(GameObject.Find("Canvas").GetComponent<Transform>());
}
cs

유니티에서 UI요소들은 캔버스 안에 있어야 하므로 생성하면 awake에서 Canvas의 자식으로 넣어줌.




타겟플레이어 따라가기

1
2
3
4
5
6
7
8
9
private void LateUpdate()
{
    if(_targetTransform != null)
    {
        _targetPosition = _targetTransform.position;
        _targetPosition.y += _characterControllerHeight;
        this.transform.position = Camera.main.WorldToScreenPoint(_targetPosition) + ScreenOffset;
    }
}
cs

SendMessage로 실행한 SetTarget함수가 불려 target과 targetTransform을 잡게되고

LateUpdate()에서 해당 타겟의 좌표를 받아와 스크린좌표로 변경 후 오프셋만큼을 더해 화면에 나타낸다.




일단 튜토리얼은 여기까지인데 조금 더 손을봐야할 부분이 있는것 같아서 테스트해봐야할듯.

Posted by misty_
,