实例化的预制秤在客户端上无法正确显示

tin*_*han 8 c# unity-game-engine unity3d-unet

我有一个由动画预制件代表的爆炸.当用户单击UI按钮时,实例化预制件.在客户端或主机上单击按钮时,预制件将设置为Vector3(0.1,0.1,1)的localscale,并在主机上正确显示,但在客户端上以原始比例显示.

我有一个文本框显示客户端和主机上的比例,它们相匹配,但预制件的显示在主机(显示正确)和客户端(显示不正确)上是不同的.同样,客户端用户可以单击按钮或主机可以单击按钮,在这两种情况下,主机上的显示都是正确的,但客户端上的显示是正确的.

任何猜测,为什么我不能让客户端正确显示.似乎客户端上可以获得0.1,0.1,1的localscale,因为我可以在文本框中显示它,但是预制件显示得更大.

这是实例化代码.让我知道有助于诊断的任何其他信息.

go = Instantiate(shockwave, this.transform, false);
NetworkServer.Spawn(go);
Run Code Online (Sandbox Code Playgroud)

UPDATE

这是我根据Lotan的评论更新的代码.请注意,我首先调用createshockwave,然后调用Cmdcreateshockwave,因为我无法从UI按钮调用Command.

public void createshockwave()
{
    if(!isLocalPlayer)
    { return; }

    Cmdcreateshockwave();
}

[Command]
public void Cmdcreateshockwave()
{

    //note that this line parents shockwave. The updated instantiation code below does not parent shockwave.
    //go = Instantiate(shockwave, this.transform, false);

    GameObject go = Instantiate(shockwave, this.transform.position, Quaternion.identity) as GameObject;

    NetworkServer.Spawn(go);

    go.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
...
}
Run Code Online (Sandbox Code Playgroud)

现在,实例化预制件的大小在客户端和主机上都是相同的原始比例.将区域设置比例更改为其他大小没有任何影响.

更新此问题似乎与预制件上的动画师有关.我删除了缩放预制件的动画师,现在缩放比例与客户端和主机上的父级匹配.看起来我不得不在更新功能中手动增加localscale而不是使用动画师.

Pri*_*ens 0

确保两个父对象的比例匹配,以确保它们具有相同的局部比例