c# - 如何在 Unity 中激活和加载场景但不渲染它?

标签 c# unity3d

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

在进行任何编程之前,我都会考虑这些东西将如何工作。我设计的是,当玩家射击时,他的客户端将发送玩家枪支的位置、方向等。之后服务器将向所有客户端发送子弹飞行的方向等。我想服务器处理子弹碰撞。所以……

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

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

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

最佳答案

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

要在 headless 模式下运行 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"

关于c# - 如何在 Unity 中激活和加载场景但不渲染它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676415/

相关文章:

c# - 带有 gecko 浏览器的 Multi sock5?

c# - 如何强制不优化 ASP.NET Core 5 源代码

c# - Debug.Log 会导致 Unity 构建延迟吗?

c# - 在 Unity3D 中无延迟地截取屏幕截图

c# - 当一切看起来都很好时,有条件的不起作用

c# - 当前 LOD 级别 - LOD Group Unity

c# - 为什么 Unity 卡在 Application.EnterPlayMode 上?

c# - .NET 日志记录类不写

c# - Windows 窗体帮助按钮更改光标

C# 最佳实践 : Editable state is a reference so still connected