首页 > 解决方案 > 如何在 Unity 中有活动和加载的场景但不渲染它?

问题描述

所以我想在 Unity 中制作简单的多人游戏(2d 射击游戏),我想要两个项目。一个用于客户端,一个用于服务器。我寻找了一些现有的工具来从游戏中制作服务器(以激励自己),比如 Argo 和使命召唤:黑色行动 3,它们有一个共同点。它只是命令提示符。我喜欢这个想法,我对我现在正在尝试制作的工具的外观也有类似的想法。

在进行任何编程之前,我考虑过事情将如何工作。我设计了当玩家射击时,他的客户端会发送玩家的枪的位置,方向等。然后服务器会向所有客户端发送子弹飞行的方向等。我想服务器处理子弹碰撞。所以...

...服务器项目中的场景必须加载、激活等。但我只想显示命令提示符。

我听说过 Unity 中的异步,但我不确定场景是否会在 async.allowSceneActivation = true 之前完全激活,或者是否有更好的方法在 Unity 中执行此操作。

我希望你能理解我的问题,并为我糟糕的英语感到抱歉。

标签: c#unity3d

解决方案


首先,为什么不使用 PUN 或 Photon?这将是最简单的方法。如果您想自己编写代码,我认为在您的服务器上启动 Unity 场景将是一个不好的方法。看看服务器端脚本语言。

要在无头模式下运行 Unity 游戏,您必须编写一个小脚本:

using UnityEditor;
class MyScript
{
     static void PerformBuild ()
     {
         string[] scenes = { "Assets/MyScene.unity" };
         BuildPipeline.BuildPlayer(scenes, ...);
     }
}

然后通过命令行启动游戏C:\Program Files\Unity\Editor\Unity.exe -quit -batchmode -nographics -projectPath "c:\myproj"

如果你想要它用于 Linux:C:\Program Files\Unity\Editor\Unity.exe -quit -batchmode -nographics -projectPath "c:\myproj" -buildLinuxUniversalPlayer "c:\myprojbin"


推荐阅读