์๊น ํฌํค ์ง๋ฌธํ๋ ์ด๋ณด์ธ๋ฐ
public void OnPhotonInstantiate(PhotonMessageInfo info)
ย ย {
ย ย ย ย info.Sender.TagObject = gameObject;
ย ย }
ย ย public void Invoke()
ย ย {
ย ย ย ย skin.hairNum = skin.hairNum;
ย ย ย ย skin.skinNum = skin.skinNum;ย
ย ย }
void SendNum()
{
ย ย com.pv.RPC(nameof(SetHair), RpcTarget.AllBufferedViaServer, skin.hairNum);
ย ย com.pv.RPC(nameof(SetSkin), RpcTarget.AllBufferedViaServer, skin.skinNum); // ์ด ํจ์๋ skin.hairNum์ด๋ skin.skinNum์ด ์ ํด์ง๊ณ ๋ ๋ค์์ ์คํ๋
}
[PunRPC] void SetHair(int value) => skin.hairNum = value;ย
[PunRPC] void SetSkin(int value) => skin.skinNum = value;
์์๊ฑด ํ๋ ์ด์ด ์ฝ๋
public override void OnPlayerEnteredRoom(Player newPlayer)
ย ย {
ย ย ย ย if (newPlayer != PhotonNetwork.LocalPlayer)
ย ย ย ย ย ย ((GameObject)PhotonNetwork.LocalPlayer.TagObject).GetComponent<PlayerControl>().Invoke();
ย ย }
์๋๊ป ๋คํธ์ํฌ ๋งค๋์ ๋ผ๊ณ ๋น ์ค๋ธ์ ํธ ์ฝ๋
์ด๋ ๊ฒ ํ๊ณ ์๋๋ฐ Invoke๋ผ๋ ํจ์๋ ๋ณํ์ ์๋?
์ด ์ฝ๋๋ง ๋ดค๋๋ฐ ๋ฉํ๊ณ ์ถ์๊ฑฐ์ ? ๋๊ธฐํ์ธ๊ฐ? SendNum์ ์ฐ์ง๋์๊ณ ๊ณ์ ๋ฒํผ๋ก ๋ณด๋ด๋ฉด ๋ฒํผํด๋ฆฌ์ดํ๋๊ฒ๋์์ด๋ณด์ด๊ณ ์์ด๊ธฐ๋ง ํ ํ ๋ฐ
์ ํจ์๋ hairNum์ด๋ skinNum ๊ฐ์ด ์ ํด์ง๋ฉด ์คํํ๊ฒ ํด๋ง์ด
hairNum์ด๋ skinNum ๊ฐ์ ์ธ๋ถ์์ ๊ฐ์ ธ์ค๋๊ฑฐ๋ผ ์ข ์ปค์ ๊ทธ๋ฅ ์ฃผ์์ฒ๋ฆฌํ์ด
Invoke๋ถ๋ฅธ๋ค์ invoke์์ ๋ค์ rpc๋ณด๋ด๋ ๋ฐฉ์๊ฐ์๋ฐ ํ์์์ง ์์๋ฏ AllBufferedViaServer => AllViaServer ๋ก๋ฐ๊ฟ์ผ๋ ๋ฏ , ์ด๋์ ํญ์์ ๋ณธ๊ฑฐ์? ์๋ ์ ๋๋ ์ด๋ฐ๋ฐฉ์ ๋ณธ๊ฒ๊ฐ์๋ฐ ใฑในใด๋ ์ ํญ์ธ๊ฐ ์์งํ enterRoom์ด๋ถ๋ถ๋ ๋ด๊ฐ์๊ธฐ๋ก ๋ค๋ฅธ์ ์ ์ฐธ์ฌ ํ ์ ์ผ์ง๋๋ฐ ๊ตณ์ด ๋ก์ปฌํ๋ ์ด์ด๋ ๋น๊ตํ ํ์์๋ ๋ฌด์กฐ๊ฑด ๋ก์ปฌ์๋ํ ๋ฐ
๊ณ ๋ง์์!