- 用户指南
- Components
- 寻路
- 动画组件
- 资源组件
- 音频组件(AudioComponent)
- 音频侦听器(AudioListener)
- 音频源(AudioSource)
- 音频过滤器(AudioFilter)(仅限专业版)
- 混响区域(ReverbZone)
- 麦克风(Microphone)
- 物理组件(PhysicsComponent)
- 箱体碰撞体(BoxCollider)
- 胶囊碰撞体(CapsuleCollider)
- 角色控制器(CharacterController)
- 角色关节(CharacterJoint)
- 可配置关节(ConfigurableJoint)
- 恒定力(ConstantForce)
- 固定关节(FixedJoint)
- 铰链关节(HingeJoint)
- 网格碰撞体(MeshCollider)
- 物理材质(PhysicsMaterial)
- 刚体(Rigidbody)
- (SphereCollider)
- 弹簧关节(SpringJoint)
- 交互布(InteractiveCloth)
- 蒙皮布(SkinnedCloth)
- 车轮碰撞体(WheelCollider)
- 游戏对象(GameObject)
- 图像效果(ImageEffectScripts)
- 高光溢出和镜头光晕(BloomandLensFlare)
- 模糊(Blur)
- 相机运动模糊(MotionBlur)
- 颜色修正曲线(ColorCorrectionCurve)
- 颜色修正(ColorCorrection)
- 颜色修正查找纹理(ColorCorrectionLookupTexture)
- 对比度增强(ContrastEnhance)
- 对比度拉伸(ContrastStretch)
- 起皱(Crease)
- 视野深度(DepthofField)3.4
- 视野深度(DepthofField)
- 边缘检测(EdgeDetection)
- 鱼眼(Fisheye)
- 全局雾(GlobalFog)
- 发光(Glow)
- 灰度(Grayscale)
- 运动模糊(MotionBlur)
- 噪波和颗粒(NoiseAndGrain)
- 噪波(Noise)
- 屏幕叠加(ScreenOverlay)
- 棕褐色调(SepiaTone)
- 边缘检测效应
- 阳光照射(SunShaft)
- 屏幕空间环境光遮蔽(SSAO)(ScreenSpaceAmbientOcclusion(SSAO))
- 倾斜位移(TiltShift)
- 色调映射(Tonemapping)
- 旋转(Twirl)
- 渐晕(Vignetting)(和色差(ChromaticAberration))
- 状态同步详细信息
- 旋涡
- 设置管理器(SettingsManager)
- 网格组件(MeshComponents)
- 网络组
- 效果
- 渲染组件
- 变换组件(TransformComponent)
- UnityGUI组
- 向导
- 地形引擎指南(TerrainEngineGuide)
- 树木创建器指南
- 动画视图指南
- GUI脚本指南
- 网络参考指南
- 移动设备上的网络连接
- 高级网络概念
- Unity中的网络元素
- RPC详细信息
- NetworkLevelLoading
- 主服务器
- 最小化网络带宽
- 社交API
- 内置着色器指南
- Unity的后台渲染
- 着色器参考
- ShaderLab语法:Shader
- ShaderLab语法:Properties
- ShaderLab语法:子着色器(SubShader)
- ShaderLab语法:Pass
- ShaderLabsyntax:Color,Material,Lighting
- ShaderLab语法:剔除和深度测试(Culling&DepthTesting)
- ShaderLab语法:纹理组合器(TextureCombiners)
- ShaderLab语法:雾(Fog)
- ShaderLab语法:Alpha测试(Alphatesting)
- ShaderLab语法:混合(Blending)
- ShaderLab语法:通道标记(PassTags)
- ShaderLab语法:名称(Name)
- ShaderLab语法:绑定通道(BindChannels)
- ShaderLab语法:使用通道(UsePass)
- ShaderLab语法:GrabPass
- ShaderLab语法:子着色器标记(SubShaderTags)
- ShaderLab语法:回退(Fallback)
- ShaderLab语法:自定义编辑器(CustomEditor)
- ShaderLab语法:其他命令
- ShaderLab语法:Pass
- 高级ShaderLab主题
- ShaderLab内置值
- 其他
- 网络视图
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Mecanim 动画系统
- 动画状态机
- 混合树 (Blend Tree)
- 在 Mecanim 中使用动画曲线 (Animation Curves)(仅限专业版 (Pro))
- 循环动画片段
- Animation State Machine Preview (solo and mute)
- 动画参数
- 旧动画系统
- 使用类人动画
- 动画层
- 资源导入与创建
- 音轨模块
- 减少文件大小
- 光照贴图 UV
- 资源准备和导入
- 如何安装或升级标准资源 (Standard Assets)?
- FBX 导出指南
- 从 Maya 中导入对象
- 从 Cinema 4D 中导入对象
- 从 3D Studio Max 中导入对象
- 从 Cheetah3D 中导入对象
- 从 Modo 中导入对象
- 从 Lightwave 中导入对象
- 从 Blender 中导入对象
- 为优化性能建模角色
- 如何使用法线贴图 (NormalMaps)?
- 如何修正已导入模型的旋转?
- 程序材质
- 如何使用水?
- 分析器(仅限专业版)
- 绘制调用批处理
- 遮挡剔除(仅限专业版)
- Unity 中的高动态范围 (High Dynamic Range) 渲染
- 在 Unity 4 中使用 DirectX 11
- 文本场景文件格式(仅限专业版)
- 使用网络播放器模版
- 平台依赖编译
- 日志文件
- 首选项
- 粒子系统曲线编辑器
- 渐变编辑器
- 怎样制作网格粒子发射器?(旧粒子系统)
- 深入了解光照贴图
- 光照贴图快速入门
- 着色器
- 动画脚本(旧版)
- 自定义
- 布局模式
- 扩展编辑器
- 网络实例化
- 材质和着色器
- 如何使用细节纹理?
- 着色器:顶点和片段程序
- Unity 中的阴影
Unity中的网络元素
Unity 的本地网络连接支持前一页所讨论的内容。盒外支持服务器创建和客户端连接、共享连接的客户端之间的数据、确定哪些玩家控制哪些对象以及穿过网络配置变化。本页面将带领您了解 Unity 对这些网络实践的具体实行。
创建服务器
在开始玩网络游戏前,您必须确定进行通信的计算机。为此,您需要创建一个服务器。服务器可以是也在运行该游戏的一台设备,也可以是不参与该游戏的一台专用设备。要创建服务器,只需从脚本调用 Network.InitializeServer()。当您想要连接一个作为客户端的现有服务器时,您可以调用 Network.Connect()。
通常情况下,您将发现通过整个网络分类来熟悉是非常有用的。
使用网络视图通信
网络视图 (Network Views) 是通过网络发送数据的组件。网络视图 (Network Views) 使您的“游戏对象”(GameObject) 能够通过使用 RPC 调用或“状态同步”(State Synchronization) 发送数据。您使用网络视图 (Network Views) 的方式将决定您游戏的网络行为的工作方式。“网络视图”(Network Views) 只有少许选项,但是这些选项对您的网络游戏非常重要。
关于使用网络视图 (Network Views) 的更多详细信息,请参阅网络视图指南页面和组件参考页面。
远程过程调用(Remote Procedure Call)
远程过程调用 (RPC) 是在脚本中声明的函数,这些脚本被附加到包含网络视图 (Network View) 的游戏对象 (GameObject) 上。网络视图 (Network View) 必须指向包含 RPC 函数的脚本。然后才可以从游戏对象 (GameObject) 范围内的任何脚本中调用 RPC 函数。
有关在 Unity 中使用 RPC 函数的更多详细信息,请参阅 RPC 详细信息页面。
状态同步(State Synchronization)
状态同步 (State Synchronization) 是在所有游戏客户端上持续共享数据。通过这种方法,可以在所有客户端上同步玩家的位置,所以看起来是由本地控制的,但实际上数据是由网络传送的。要使状态在某个游戏对象 (GameObject) 中同步,您只需将网络视图 (NetworkView) 添加到该对象并告诉其观察的内容。然后观察的数据在游戏中所有客户端上同步。
有关在 Unity 中使用状态同步 (State Synchronization) 的更多详细信息,请参阅状态同步页面。
Network.Instantiate()
Network.Instantiate() 可使您轻松自然地在所有客户端上实例化预设。本质上这是一个 Instantiate() 调用,但是它在所有客户端上执行实例化。
Network.Instantiate 实际上只是一个在所有客户端上(或在本地)执行的缓冲 RPC 调用。它分配 NetworkViewID 并将其指派给实例化的预设,从而确保了其在所有客户端上正确同步。
有关更多详细信息,请参阅网络实例化页面。
NetworkLevelLoad()
处理共享数据、客户端播放器的状态和加载等级也许会让您感到无所适从。但在网络等级加载页面包含一个有用的示例以管理此任务
主服务器
主服务器有助于匹配游戏。当您启动一台连接到主服务器的服务器时,它将提供 一张所有活跃服务器的列表。
主服务器 (Master Server 是服务器和客户端相互接触的场所,其中服务器是列出的,而兼容的客户端可以连接到运行中的游戏。这可以让所有参与各方不需要调整 IP 地址。它甚至可以帮助用户无需设置路由器就可以创建游戏,而在一般情况下,这是需要的。它可以帮助客户端绕过服务器的防火墙进入私人的 IP 地址,而通常情况下是不能通过公共网络访问的。通过服务商的帮助可加快连接的建立,从而完成此功能。
有关更多详细信息,请参阅主服务器页面。
最小化带宽
使用最少量的宽带使您的游戏正常运行非常重要。您可以随意使用多种方法发送数据,运用不同的技术决定发送什么或何时发送以及其他技巧供您使用。
有关减少带宽使用的提示和技巧的详细信息,请参阅最小化带宽页面。
调试网络游戏
Unity 有几种工具可以帮助您调试网络游戏。
- 网络管理器可以用于记录所有输入和输出的网络流量。
- 有效地利用“检视器”(Inspector) 和“层级视图”(Hierarchy View) 可以追踪对象创建和检视视图 ID 等。
- 3您可以在同一台设备上启动两次 Unity 并在每个 Unity 中打开不同的工程。在 Windows 中 这可以通过只启动另一个 Unity 实例并从工程向导中打开工程来完成。在 Mac OS X 中,可以从终端打开多个 Unity 实例,并且可以指定 -projectPath 参数:
/Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath "/Users/MyUser/MyProjectFolder/" /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath "/Users/MyUser/MyOtherProjectFolder/"
当调试网络时,请确保使播放器在后台运行,因为例如,如果您同时运行两个实例,其中一个实例则没有焦点。这将中断网络循环并导致不良后果。您可以在编辑器中的“编辑”(Edit) ->“工程设置”(Project Settings) ->“播放器”(Player) 中或者通过 Application.runInBackground 启用后台运行功能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论