微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MLAPI NetworkVariable 未在客户端同步

如何解决MLAPI NetworkVariable 未在客户端同步

我正在使用 Unity 和 MLAPI 制作在线多人游戏。我编写了下面的脚本并将其放置在我的场景中,这意味着每个客户端和服务器都应该在场景加载时运行它。服务器应该将变量设置为 1,但它在客户端上没有改变!

using UnityEngine;
using MLAPI;
using MLAPI.Messaging;
using MLAPI.NetworkVariable;

public class TestNetwork : NetworkBehavIoUr
{
    public NetworkVariableInt Test = new NetworkVariableInt(-1);

    void Start() {
        if (!NetworkManager.Singleton.IsServer) return;
        Test.Value = 1;
    }

    void Update() {
        Debug.Log($"{Test.Value}");
    }
}

解决方法

如果您有 NetworkVariable<T> 未同步,则可能是以下任何一种情况:

  • 确保您的类继承自 NetworkBehaviour,而不是 MonoBehaviour

  • 确保您的脚本附加到的游戏对象也有一个 NetworkObject 组件:

    enter image description here

    如果没有,请点击“添加组件”并添加 NetworkObject 脚本。

  • 本地对象引用无法同步。尝试将它们设为 NetworkObjects 或将它们同步为 ID 号。 (与其他 2 个不同,这应该打印错误日志。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。