如何分离服务器端和客户端代码

时间:2018-01-04 20:38:39

标签: unity3d unity3d-unet unity3d-5 unet

是否可以使用UNet在Unity3D中为客户端和服务器分离项目?

据我所知,这似乎是不可能的,Unity3D official documentation在该主题上并不十分明确,并且没有找到关于此主题的零例或文章。

如果使用Unity3D提供的NetworkManager,服务器端逻辑和游戏客户端逻辑有很多耦合,是否可以将其分成两个不同的项目?服务器端应该只是一个无头服务器,客户端应该是没有所有服务器逻辑的普通游戏客户端。如果可能的话,应该怎么样?

1 个答案:

答案 0 :(得分:0)

使用Network类可以轻松区分服务器和客户端。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void OnGUI() {
        if (Network.isServer)
            GUILayout.Label("Running as a server");
        else
            if (Network.isClient)
                GUILayout.Label("Running as a client");

    }
}

或者NetworkBehaviour类上有一些属性允许脚本随时了解网络对象的网络上下文。

  1. isServer - 如果对象位于服务器(或主机)上,则为true 催生。
  2. isClient - 如果对象位于客户端上,则为true,而且是     由服务器创建。
  3. isLocalPlayer - 如果对象是a,则为true     该客户的玩家对象。
  4. hasAuthority - 如果对象为,则为true         由本地流程拥有