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而不是使用动画师.
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |