unity第一人称控制器转动视角卡顿

unity第一人称控制器转动视角卡顿,第1张

资源商店获取包

众所周知,能在资源商店找到的模型或者脚本就不要自己做;

unity官方的asset store里包含极多品类的免费模型与大神们构建好的游戏场景,如需要练手的话可以多多查找;

点击直接进入资源商店获取FPS包

进入以上链接并打开网页后,请先登录,紧接着点击”添加到我的资源“,这里可能需要点击两次(本人只有第二次点击完毕后才算正式添加到了unity包管理器内)

待网页顶部d出添加成功的提示框后,关闭网页,打开unity

unity导入第一人称控制器包

选择window->package manager打开包管理器

d出窗口左上角的package下拉框中选择 asset,表示获取我们从资源商店购得(白嫖)的资源列表;

等待网络请求后获取列表,在右边搜索框输入第一人称控制器包的名称;

上图右下角有两个按钮是因为我已经下载完毕了,如果你是第一次下载,右下角应该有一个download按钮;

下载完毕点击import导入包即可

建议直接导入包中所有内容,因为你无法确定你选择不导入的内容是否和你将要使用的资源有依赖关系,为避免依赖丢失错误,尽可能决定好再取消导入某些不必要内容

unity部署第一人称控制器

导入包完成后,我们直接进入资源管理器的asset -> starterassets -> firstpersoncontroller -> prefabs

我们将看到四个预制体;

将除了右上角的预制体外的其他三个全部拖动到场景里面;

我们发现除了胶囊体角色本身之外,还有两个摄像机相关的组件;

如图所示,上面一个就是主摄像机,而下面的那个则是虚拟摄像机;

由于涉及到插件cinemachine的相关内容,过于庞杂,这里不做过多介绍,我们点开PlayerFollowCamera组件,在右侧的属性面板里找到 follow这个东西;

我们需要把它指定到玩家胶囊体中的子对象PlayerCameraRoot

设置完毕后,我们就会发现主摄像机和虚拟摄像机全部都跑到玩家的头部并且固定住了,当我们进入游戏后发现就能正常的 *** 作角色了

一些注意事项

主摄像机和虚拟摄像机都不需要作为玩家Player的子组件存在!我们一旦设置好follow属性就会自动与玩家绑定起来了!

主摄像机一旦绑定就无法移动,我们只能通过移动PlayerCameraRoot组件来调节摄像机的位置了

END 后续将会介绍相关第一人称射击游戏的开发与完善优化,希望大家可以多多支持一下呀QWQ

打开Unity,新建一个空工程,然后在场景中铺满Canvas添加RawImage,具体如下图

在工程中,新建一个脚本OpenCamera,双击打开进行编辑,具体如下图

OpenCamera 脚本的具体代码和代码说明如下图

OpenCamera 脚本的具体内容如下:

using SystemCollections;

using UnityEngine;

using UnityEngineUI;

public class OpenCamera : MonoBehaviour

{

public RawImage rawImage;

private WebCamTexture webCamTexture;

private Vector2 resolution = new Vector2(1280, 720);

private int fps = 60;

// Use this for initialization

void Start()

{

StartCoroutine(OpenBGCamera());

}

IEnumerator OpenBGCamera()

{

DebugLog("Test");

//获取摄像头权限

yield return ApplicationRequestUserAuthorization(UserAuthorizationWebCam);

if (ApplicationHasUserAuthorization(UserAuthorizationWebCam))

{

//停止正在使用的摄像头

if (webCamTexture != null)

{

webCamTextureStop();

}

//判断时候有摄像头

if (WebCamTexturedevicesLength != 0)

{

//new一个后置摄像头并且设置分辨率和FPS,渲染到UI上

webCamTexture = new WebCamTexture(WebCamTexturedevices[0]name, (int)resolutionx, (int)resolutiony, fps);

rawImagetexture = webCamTexture;

webCamTexturePlay();

}

}

}

}

脚本编译正确,回到Unity,把脚本挂载上去,具体如下图

在顶部菜单栏 File—BuildSettings,点击打开,切换成移动端,并且设置屏幕不自动旋转,然后根据手机进行设置方向,方向不同会是画面颠倒,不要紧,根据情况更换 Orientation 即可,具体如下图

编译打包,手机上运行结果如下如

1、硬件支持优化

(1)平台设置优化

减少FPS,在ProjectSetting-> Quality中的

VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS=60,EverySecondVBlank = 30;

这两种情况都不符合游戏的FPS的话,我们需要手动调整FPS,首先关闭垂直同步这个功能,然后在代码的Awake方法里手动设置

FPS(ApplicationtargetFrameRate = 45;)

降低FPS的好处:

1)省电,减少手机发热的情况;

2)能都稳定游戏FPS,减少出现卡顿的情况。

当我们设置了FPS后,再调整下Fixed timestep这个参数,

这个参数在ProjectSetting->Time中,目的是减少物理计算的次数,来提高游戏性能。

(2)文件格式优化

1)Android 更新不透明贴图的压缩格式为ETC 4bit,因为Android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式。iOS上尽量使用PVRTC。

2)对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit。

      3)图集大小最好不要高于1024,否则游戏安装之后、低端机直接崩溃、原因是手机系统版本低于22、超过1000的图集无法读取、导致。22 以上没有遇见这个情况。注意手机的RAM 与 ROM、小于 512M的手机、直接放弃机型适配。

(3)Unity功能使用优化建议

Unity屏幕特效、动态的pixel光照计算(如法线)、实时的阴影,能找到替代方案就找替代方案。

2、渲染优化

(1)模型设置优化

1)合并材质球unity 3d中每倒入一次模型就多一个材质球,可我的这些模型都是共用一张贴图的就想共用一个材质球,所以每次都要删除再附上,很麻烦。怎么才能合并这些材质球?采用TexturePacking吧

1、遍历gameobject,取出material,并根据shader来将material分类

2、调用Unity自带的PackTextures函数来合并每个shader分类中的material所对应的textures(PackTextures函数有缺陷,不过可以将就用)

3、根据合并的大的texture来更新原有模型的texture、material已经uv坐标值。

需要注意的是:需要合并的纹理应该是物体在场景中距离相近的,如果物体在场景中的距离较远,

则不建议合并纹理,因为这样做很有可能非但起不到优化的作用,反而降低了运行效率。 

2)mesh合并 分为2种方式合并

1自带的合并必须勾选静态。

    2 脚本合并

优化建议(1)角色材质数2-3个 最多不要超过5个。可以采取2+3模式,2为主 3位辅助。

    (2)骨骼数量最好控制在30

    (3)面片数量根据实际需求做一定删减。比较低的控制在2000以下。

             (4)静态物件不需要添加Animation Component

(5)UV值范围尽量不要超过(0, 1)区间

 (6)地形长宽均尽量小于257。这是因为地形太大,会造成大量顶点数据,给你的内存带宽造成一定的影响,在目前的ios设备中,内存带宽是非常有限的,需要尽量节省。同时,如果用Unity自带的地形,一定也要使用Occlusion Culling,因为Unity的刷地形工具虽然方便,但却是framekiller,刷过之后,你会发现drawcall增加的非常多。混合纹理数量不要超过4。地形的混合 *** 作是很耗时的,应该尽量避免。能合并的纹理尽量合并。

(2)渲染批次优化

3、代码编程优化

一般3D的游戏里面都提供显示FPS帧数的参数命令。比如CS为:showfps 101 (其中101为参数。意思为显示最高帧数为101帧)一般就到99不动就对了。好象ATI的显卡玩这样的FPS游戏,会又很高的帧数,会超过100。NV的卡还没见过。

要想看变化。显卡的设置中有这个选项。显卡,设置,高级。如果你是NV的卡,在里面就能看到GF系列的显卡。里面有3D设置和OPENGL设置。里面有个在游戏里面显示帧数。打开这个就好了。另外,WINDOWS优化大师貌似也带这个功能,能打开运行3D软件时显示帧数的功能。很简单。仔细看下就知道了。

以上就是关于unity第一人称控制器转动视角卡顿全部的内容,包括:unity第一人称控制器转动视角卡顿、unity 怎么设置分辨率unity摄像头怎么设置分辨率、Unity关于性能方面的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9402706.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存