Unity c# Photon - 设置 PhotonNetwork.Instantiate 对象的父级

Posted

技术标签:

【中文标题】Unity c# Photon - 设置 PhotonNetwork.Instantiate 对象的父级【英文标题】:Unity c# Photon - Set Parent of PhotonNetwork.Instantiate object 【发布时间】:2021-08-23 10:10:18 【问题描述】:

我要做的是设置新工具的父级并使其在服务器上可见,例如“PhotonNetwork.Instantiate”

var drop = PhotonNetwork.Instantiate("Tools/Weapons/" + Tool.name, transform.position, Quaternion.identity);
            
drop.transform.SetParent(collider.gameObject.transform.GetChild(0).GetChild(0));


使用 drop.transform.SetParent 只对本地玩家可见。

如果你有任何问题,问:)

【问题讨论】:

【参考方案1】:

我认为这段代码 drop.transform.SetParent(collider.gameObject.transform.GetChild(0).GetChild(0)); 不会在任何其他客户端或服务器中执行。所以我将创建一个附加到对象的脚本,以便在创建对象时设置父对象;

using UnityEngine;

public class SetParent : MonoBehaviour


public GameObject Tool;
// Start is called before the first frame update
void Awake()

    gameObject.transform.parent = FindParent();


private Transform FindParent()

    Transform parent;
    //Find object should be parent
    return parent;


【讨论】:

不工作:(返回父级有问题;. 当然,你必须自己找到父对象,例如通过标签或层或类附加到父对象【参考方案2】:

示例:为父对象“Parent”设置标签。然后就可以通过这段代码找到对象了: parent = GameObject.FindGameObjectWithTag("Parent").transform;

【讨论】:

以上是关于Unity c# Photon - 设置 PhotonNetwork.Instantiate 对象的父级的主要内容,如果未能解决你的问题,请参考以下文章

Photon Unity:变量不使用 PunRPC 同步

一Photon 引擎

Photon介绍与安装

使用Photon引擎进行unity网络游戏开发——Photon常用类介绍

在Unity中使用Photon(网络多人联机)

如何将 Photon Unity Networking 与我的自定义服务器一起使用?