public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
// 우리 캐릭터의 정보를 다른 유저들에게 전송합니다. ^^
stream.SendNext(this.iHp);
}
else
{
// 다른 유저가 정보를 받습니다. ^^
this.iHp = (int)stream.ReceiveNext();
}
}
}
//------------------------------------------------------------------------------------
자 소스를 살펴 볼까요?
맨 윗줄에
public class PlayerPhoton : MonoBehaviour 를
public class PlayerPhoton : Photon.PunBehaviour, IPunObservable
이렇게 바꿔줬습니다.
이제 PUN의 기능을 쓸 수 있겠죠~
그다음 RPC함수를 만들어 줬습니다.
[PunRPC] // RPC 함수를 통하여 정보를 전달합니다.
public void AttackInfo(int attackTarget,int damage){
// attackTarget 공격할 대상 damage 적에게 주는 데미지
gameManager.AttackProcess (attackTarget,damage);
}
GameManager 에서 적을 공격할 때 적에게 damage를 전달하는 함수입니다.
그 다음 나의 정보가 바뀌면 그 정보를 다른 모든 유저들에게 전송하는 함수입니다.
RPC 함수를 통해 나의 정보가 바뀌면 그 정보를 다른 모든 유저들에게 전송하게 됩니다.
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
// 우리 캐릭터의 정보를 다른 모든 유저들에게 전송합니다.
stream.SendNext(this.iHp);
}
else
{
// 다른 유저가 정보를 받습니다. ^^
this.iHp = (int)stream.ReceiveNext();
}
}
}
지금은 HP의 int형만 전달하는데 bool, string 형 모두 전송이 가능합니다. string 정보를 전달하면 게임상에서 채팅도 가능하겠죠!
이제 포톤을 통하여 정보를 전송할 준비가 다 되었습니다.