Unity Network生成Tile自定义设置未同步问题及解决方法
Unity Netcode网格同步问题及解决方法
问题描述
尝试通过Unity Network创建所有客户端均可同步的一致网格,实例化Tile时会为其设置随机Sprite、网格位置及颜色。作为服务器的主机端显示正常,但客户端生成的是默认预制体,而非经过修改的Tile。
解决方法
感谢hijinxbassist的帮助,问题已解决:将SetUp方法修改为SetUpClientRpc,并在Tile生成后调用该方法。
修改前Tile脚本代码
public class Tile : NetworkBehaviour { public SpriteRenderer spriteRenderer; public Vector2Int gridLocation; public void SetUp(Sprite _tileSprite, Vector2Int _gridLocation, Color _tileColor) { spriteRenderer.sprite = _tileSprite; gridLocation = _gridLocation; spriteRenderer.color = _tileColor; } private void Awake() { spriteRenderer = GetComponent<SpriteRenderer>(); } }
修改前Tile生成代码
for (int x = 0; x < _ThisLevel.GridWidth; x++) { for (int y = 0; y < _ThisLevel.GridHeight; y++) { Tile nTile = Instantiate(usetile, tileLocation, Quaternion.identity); nTile.SetUp( _ThisLevel.tileSprites[Random.Range(0, _ThisLevel.tileSprites.Count)], new Vector2Int(x, y), tileColor ); nTile.GetComponent<NetworkObject>().Spawn(true); tileLocation += Vector2.down * (_ThisLevel.GridSpacing); } tileLocation.y = startLocation.y; tileLocation += Vector2.right * direction * (_ThisLevel.GridSpacing); }
问题截图

内容的提问来源于stack exchange,提问作者Mike The Elf
相关产品推荐
相关产品推荐

