TIOGx / battlechess

🎅 Battle Chess - Unity Team Project
2 stars 0 forks source link

[Progress] PUN2 전환 Issue 및 논의할 점 #3

Closed ggjae closed 3 years ago

ggjae commented 3 years ago

PUN2

Move

Animator

SetBoard

image

Exception: Write failed. Custom type not found: UnityEngine.GameObject

현재 Board는 GameObject type의 2차원 배열로 한 보드마다 게임오브젝트가 할당되는데, PunRPC를 사용하면서 게임오브젝트의 클라이언트<->마스터간 전송이 불가능하다. 이 때 찾은 방법으로는 게임오브젝트의 ViewID를 넘겨주고, 포톤뷰의 Find를 이용하여 ID로 오브젝트를 찾아서 할당해주는 방법이 있다. 또 다른 좋은 아이디어가 필요하다.

하지만 Board 2차원배열이 GameObject로 필요한지에 대해 의문이 생긴다. BlackTeamPiece/ WhiteTeamPiece로 나누어서 GameObject에 이미 작성하고 있고, Board는 기물이 존재하는지 안하는지만 판단하고 있지 않은가?

public void SetBoard(GameObject GObject, int idxX, int idxY)
{
photonView.RPC("SetBoardRPC",RpcTarget.AllViaServer, GObject.GetComponent<PhotonView>().ViewID, idxX, idxY);
}
[PunRPC]
public void SetBoardRPC(int ID, int idxX, int idxY)
{
Board[idxX, idxY] = PhotonView.Find(ID).gameObject;
}

위 코드로 GameManager.cs:30-38 line을 수정하게 되면 정상적으로 Board에 갱신이 이루어진다.

ggjae commented 3 years ago

해결