版本:unity 5.6 语言:C#
总起:
Standalone,我一眼看下去的理解就是PC机平台,官方文档中说该平台指的是Mac、Windows和Linux。
这篇文章主要讲的是Standalone平台下的设置,通过点击菜单栏的File -> Build Settings -> [切换到Standalone] Player Settings 查看Inspector窗口便可进行设置。
Player Settings整体描述:
Player Settings提供了各种选项来帮助你完成最终游戏的出包,虽然说有很多不同的平台,但是大体上的设置会分为以下几个部分:
♦ Resolution And Presentation
分辨率和启动前窗口设置,包括了支持的分辨率比例和是否默认全屏启动等选项;
♦ Icon
图标,在桌面上显示的默认图标;
♦ Splash Image
配置一些游戏启动前的图片,比如公司标志;
♦ Publishing Setting
出包设置,比如在android中需要配置的keystore就可以在这里设置;
♦ Genetal Setting
一般设置如下图:
Company Name:公司名称,用于程序查找预配置文件;
Product Name:产品名称,该名称会在运行时显示在任务栏中,当然它同样起查找预配置文件的作用;
Default Icon:默认的图标;
Default Cursor:默认的鼠标指针;
Cursor Hotspot:鼠标指针图标的偏移。
Standalone平台特殊设置:
♦ Resolution and Presentation
Default is Full Screen:游戏默认以全屏方式启动;
Default Is Native Resolution:是游戏以默认的分辨率启动,取消勾选后可以强制游戏的分辨率。但是有一点,如果你的游戏已经打包启动过了,那下次再打包强制分辨率就没有意义了,因为Windows会将该应用最后的分辨率记录到注册表中。此时有三种解决方案:
1.改变应用的名称或公司;
2.在代码中直接控制分辨率;
3.使用Unity自带的启动前分辨率设置小窗口。
Run in background:在游戏失去焦点时仍旧继续运行不会暂停,反正联网游戏肯定是要勾选的了;
Mac Retina Support:可以使游戏在Mac高DPI的屏幕上显示的更加清晰,但是可能会占用更多的资源;
Capture Single Screen:在多显示的情况下,游戏的全屏模式会使其他屏幕变黑,该设置在Mac OS X上无效(没法测试,刚组好电脑,第二个屏幕要双十一到,哭);
Display Resolution Dislog:在游戏启动前显示一个窗口给玩家调整分辨率,拥有三种选项:
1. Disabled,禁用;
2. Enabled,启用;
3. Hidden by Default,默认禁用,双击应用之后马上按alt可以显示出来。
Use Player Log:将所有Debug.Log的信息输入到一个log文件中,默认勾选,当然如果你打算上传应用到Mac App Store,请取消勾选;
Resizable Window:允许玩家可以重新调整游戏窗口的大小;
Mac App Store Validation:启用Mac App Store的验证;
Mac Fullscreen Mode:选择Mac下的全屏模式:
1. Capture Display,用户只有退出游戏的情况下才能切换应用;
2. Fullscreen Window,后面这两个选项应该可以自由切换;
3. Fullscreen Window with Menu Bar and Dock。
D3D9 Fullscreen Mode:D3D9下的全屏模式:
1. Exclusive Mode,填充整个屏幕;
2. Fullscreen Window,与上面选项的区别是,该选项会保证屏幕分辨率不会变化,游戏放入一个类似窗口中,如果比例不对,则会显示黑边。
D3D11 Fullscreen Mode:D3D11下的全屏模式;
Visible in Background:即使进入后台,游戏仍旧正常显示,巫师3就是这个样子的,很难受;
Allow Fullscreen Switch:允许游戏在窗口和全屏之间切换,切换快捷键是Alt + Enter;
Force Single Instance:保证游戏在一台电脑上只能有一个运行实例,如果想再运行一个就会弹出个错误窗口;
Supported Aspect Ratios:分辨率选择窗口的各个分辨率解决方案的配置。
♦ Icon
Override for Standalone:勾选了该选项之后,就能使用下面的Texture2D覆盖默认的图标了。
♦ Splash Image
Application Config Dialog:游戏前分辨率选择窗口的图标;
Show Splash Screen:在游戏读取时显示Made with Unity的字样,当然该功能只有在专业版中才能取消,点击Preview按钮就能预览显示效果,下面没有截图截到的都是一些该画面的控制,大家有兴趣可以调整试试。
♦ Other Settings
Color Space:颜色空间,很重要的选项,手机上只能选择Gamma,而一般3A大作都是Linear,Linear显示效果更加真实,具体等研究渲染那块再说;
Auto Graphics API for Windows:自动选择最佳的图形API(如D3D11),如果不勾选,可以自行添加支持的图形API,默认支持D3D11和D3D9;
Auto Graphics API for Mac:默认支持Metal和OpenGL;
Auto Graphics API for Linux:默认支持OpenGL和Vulkan;
Static Batching:静态批处理,一般场景中不动的Object都会设置为静态吧;
Dynamic Batching:动态批处理,动态批处理的要求比较严格,比如使用同一图片的对象需要在父物体下连续之类,如果你使用过Fairy GUI,他降低Draw Call的方案就是主动修改各个图片的层级,使其尽可能多的发生动态批处理。
GPU Skinning:使用GPU处理骨骼与皮肤联系的过程;
Graphics Jobs(Experimental):可以使游戏将一些渲染任务交给其他CPU核心进行处理,增加游戏的处理效率,最近看了AMD CPU和Intel CPU同学可能就知道TX的大部分游戏都是单核的,所以购买多核心CPU对于游戏并没有什么帮助;
Virtual Reality Supported:VR游戏支持;
Mac App Store Options:Mac应用商城的选项,应用包名、版本……按照需要填写就好;
Scripting Backend:后端脚本,对于Standalone平台只能选择Mono2x,就是C#;
API Compatibility Level:选择脚本API的版本,现在有两个选项:.Net2.0和.Net2.0 Subset。
Disable HW Statistics:不将硬件统计的信息发送给Unity官方,应该只能专业版才能勾选;
Scripting Define Symbols:脚本编译时的标志设置;
Prebake Collision Meshes:只在build游戏时添加碰撞盒;
Keep Loaded Shaders Alive:保证Shader不会被卸载;
Preloader Assets:预先读取的Assets列表;
Vertex Compression:顶点压缩,选择模型会压缩的数据,比如可以选择everything,然后去掉positions和lightmap UVs。当然每个每个模型在导入时,可以设置独立的该参数,会覆盖掉该选项;
Optimize Mesh Data:优化Mesh数据,勾选该选项会移除材质所不需要的Mesh数据,例如tangents、normals、colors、UV。
多显示器显示:
在看到这里之前,我一直以为Unity如果得实现多显示,只能通过不同电脑运行同一场景,使用不同相机来实现。
没想Unity还支持这样的功能:一个Unity游戏就可以直接在多个显示器上显示一个场景中的不同画面(可惜没显示器,不能测试效果)。
OK,让我们来看看,首先注意该功能只支持Standalone平台:
1. 新建多个相机,然后注意底下有这样的选项:
Target Display是多少就是显示在那个屏幕上;
2. 然后回到Game窗口:
最左上角的下拉菜单可以选择查看第几个屏幕显示的效果;
3. 使用脚本控制多个显示的显示:
using UnityEngine;
using System.Collections;
public class DisplayScript : MonoBehaviour
{
// Use this for initialization
void Start()
{
Debug.Log("displays connected: " + Display.displays.Length);
// Display.displays[0]是主显示器,默认就是开启的,然后检查当前附加显示器的数量,再将他们激活
if (Display.displays.Length > 1)
Display.displays[1].Activate();
if (Display.displays.Length > 2)
Display.displays[2].Activate();
}
// Update is called once per frame
void Update()
{
}
}
4.一般来说显示器的顺序会根据虚拟坐标的xy来进行排序,但你可以使用-multidisplay命令行标志改变该顺序。
个人:
好久没有更新博客了,想着最近正好在研究Android,所以想把该知识点补一补,这一个星期对接Android第三方插件太痛苦。结果回来一看发现Entitas说要更新的结果没下文了,主要也不用了……到时候再说。
最近我大概会花两个星期的时间完成Android和IOS的学习,不会学的太深入,但常见的坑总要爬一下,毕竟做的手游,虽然会Unity,但完全不懂对应平台,都不知道出错了怎么应对,完全听天由命。
所以接下来会将学习到的一些东西整理成博客发上来,总之要开始更新了!
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。