【问题标题】:SpawnObject for ak(Clone) (UnityEngine.GameObject), NetworkServer is not active. Cannot spawn objects without an active serverSpawnObject for ak(Clone) (UnityEngine.GameObject),NetworkServer 未激活。没有活动服务器就无法生成对象
【发布时间】:2022-08-07 17:13:29
【问题描述】:

你好,我正在 Unity 中制作一个对象,当玩家将鼠标悬停在它上面时会为他们提供随机武器,但它总是给我这个警告并且不会创建它。

[ClientRpc]
public void spawnTime()
{
    StartCoroutine(spawn());
}
public IEnumerator spawn()
{
    Debug.Log(\"oldu\");
    yield return new WaitForSeconds(1);
    int a = Random.Range(0, guns.Length);
    GameObject gun =Instantiate(guns[a], spawnPoint.position,Quaternion.identity);
    gun.transform.SetParent(transform);
    NetworkServer.Spawn(gun);
}

    标签: unity3d networking game-engine multiplayer unity3d-mirror


    【解决方案1】:

    这是因为您正在从客户端调用 spawn 函数。您应该在服务器中调用它。

    [Server]
    public void spawnTime()
    {
        StartCoroutine(spawn());
    }
    
    [Server]
    public IEnumerator spawn()
    {
        Debug.Log("oldu");
        yield return new WaitForSeconds(1);
        int a = Random.Range(0, guns.Length);
        GameObject gun =Instantiate(guns[a], 
        spawnPoint.position,Quaternion.identity);
        gun.transform.SetParent(transform);
        NetworkServer.Spawn(gun);
    
    
        uint gunNetId = gun.GetComponent<NetworkIdentity>().netId;
        uint parentNetId = transform.root.GetComponent<NetworkIdentity>().netId;
        RpcSetParent(parentNetId, gunNetId);
    }
    
    [ClientRpc]
    void RpcSetParent(uint parentNetId, uint childNetId)
    {
        Transform child = NetworkClient.spawned[childNetId].transform;
        Transform parent = NetworkClient.spawned[parentNetId].transform;
    
        child.SetParent(parent);
    }
    

    确保您正在调用产生时间()从在服务器和网络对象中运行的东西中运行。您可以对其进行过滤,例如:

    Start(){
        NetworkIdentity nid = transform.root.GetComponent<NetworkIdentity>();
    
        if(nid.isServer)
        {
            spawnTime();
        }
    }
    

    【讨论】:

    • 我试过了,但没有用
    • 服务器日志上是否有任何其他警告/错误或任何其他详细信息?
    • 该代码没有给出错误,但也没有工作。
    • 好的。很可能一切都很好,除了育儿状态。您也需要在客户端应用育儿状态;您可以检查您的层次结构以查看您的 guns 实例是否存在。我将更新答案以解释如何家长再次检查它。
    • 你可以检查一下
    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多