Unity/Project : Cursed Treasure
Unity 팀프 21.05.27 Photon - 멀티구현 R&D
HappyFrog
2021. 5. 28. 00:15
IPunInstantiateMagicCallback인터페이스를 붙이면 OnPhotonInstantiate(PhotonMessageInfo info)라는 콜백메서드가 실행되는데, 이를 통해 포톤서버에 객체를 생성시킬때마다 콜백메서드의 내용을 실행시킬 수 있다.
void OnPhotonInstantiate(PhotonMessageInfo info)
{
// e.g. store this gameobject as this player's charater in Player.TagObject
info.sender.TagObject = this.GameObject;
}
RoomOptions.CleanupCacheOnLeave
PhotonNetwork.InstantiateSceneObject()
photonView.TransferOwnership()


+ 서버개념(마스터클라이언트가 모든 클라이언트에게 전달한다는 개념이 이해가 안됨)
+ CustomProperties
+ PhotonAnimatorView
로컬 플레이어의 커스텀프로퍼티의 내용이 추가되면 OnPlayerProperitesUpdate라는 콜백메서드가 실행된다. 따라서 커스텀프로퍼티의 내용이 추가될 때마다 자동적으로 업데이트시킬 수 있으며, 무언가 이벤트가 발생하여 플레이어의 프로퍼티가 변경되면 내용을 추가하여 그에 따른 변화를 서버내에서 공유할 수 있다는 것이다.(게임오브젝트를 건드리면 태그가 변하는 방식)
- 하지만 여기서 막히는 점은 CustomProperties에 GameObject를 어떤식으로 저장할 것인가.
- 만약 GameObject가 저장되지 않는다면 어떤식으로 Player의 정보와 GameObject의 정보를 연동시킬 것인가.
- Dictionary를 저장할 수 있다는데, 그렇다면 Dictionary<key,GameObject>형식으로 저장해서 연동시키면 성공하는가.
- 1번(나), 2번(상대)라면 2번의 태그가 바뀔 경우 해당 커스텀프로퍼티에서 player.CustomProperties[2번의 CpKey]를 하여 커스텀프로퍼티내의 GameObject가 value인 딕셔너리를 불러오고 그 GameObject의 태그값을 변경한다.
- 변경이 되며 콜백으로 1번에게 전달이되고 이 때, 1번에게 전달된 2번의 GameObejct.tag값을 1번의 디바이스에서 2번의 태그를 바꾸는데 사용할 수 있는지가 문제이다.
+ TagObject의 기능을 아직 모르겠다. Tutorial에서는 TagObject가 해당 클라이언트의 캐릭터로서 연동을 시켜준다는 것 같은데 CustomProperty와 연관이 있을것같다는 생각이다.
- 이게 최종보스인것같은데 골치가 아프다.