Photon PUN 2 工具对象重复实例化问题求助
Photon PUN 2 工具对象重复实例化问题求助
各位大佬好,我刚接触多人游戏开发和Photon PUN 2,现在正在做一个工具同步系统,要让所有玩家都能看到彼此当前使用的工具。
这个脚本大体上能工作,但不知道为什么,工具会被实例化两次。而且额外生成的对象没有被父化到任何物体上,明明我的脚本里已经把实例化的对象设置为toolSlot Transform的子物体了。
我的代码如下:
public class ToolManager : MonoBehaviour, IPunObservable { public SA_Tool[] Tools; public Transform toolSlot; private GameObject currentToolInstance; private PhotonView photonView; private void Start() { photonView = GetComponent<PhotonView>(); } private void Update() { if (photonView.IsMine && Input.GetMouseButtonDown(0)) { SwitchTool(0); } } private void SwitchTool(int newIndex) { DestroyCurrentTool(); currentToolInstance = PhotonNetwork.Instantiate(Path.Combine("PhotonPrefabs/Tool Models", Tools[newIndex].model.name), transform.position, transform.rotation); SetToolTransform(currentToolInstance); photonView.RPC("RPCSyncToolChange", RpcTarget.Others, newIndex); } private void SetToolTransform(GameObject tool) { tool.transform.SetParent(toolSlot, false); tool.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); } private void DestroyCurrentTool() { if (currentToolInstance != null) { Debug.Log("Destroying current tool instance..."); PhotonNetwork.Destroy(currentToolInstance); } } [PunRPC] private void RPCSyncToolChange(int newIndex) { DestroyCurrentTool(); currentToolInstance = PhotonNetwork.Instantiate(Path.Combine("PhotonPrefabs/Tool Models", Tools[newIndex].model.name), transform.position, transform.rotation); SetToolTransform(currentToolInstance); } }
我已经在DestroyCurrentTool()方法里加了Debug.Log,想看看是不是没有销毁多余的对象,但控制台里从来没看到这个日志输出。我还试过在不同的方法里调用设置工具的逻辑,结果还是一样,所以应该不是Update方法的问题。
我是真的刚入门,如果需要更多信息的话,随时告诉我!
备注:内容来源于stack exchange,提问作者payd
相关产品推荐
相关产品推荐

